Browse Source

Fonts in ROM

Beginning multi-step process to migrate font data to ROM.
pull/577/head
Wayne Warthen 7 months ago
parent
commit
70742d5083
No known key found for this signature in database GPG Key ID: 8B34ED29C07EEB0A
  1. 25
      Source/HBIOS/Build.cmd
  2. 33
      Source/HBIOS/Makefile
  3. 30
      Source/HBIOS/hwmon.asm
  4. 2
      Source/HBIOS/layout.inc
  5. 97
      Source/HBIOS/romfonts.asm
  6. 9
      Source/HBIOS/std.asm

25
Source/HBIOS/Build.cmd

@ -97,13 +97,24 @@ call :asm nascom || exit /b
call :asm game || exit /b
call :asm usrrom || exit /b
call :asm updater || exit /b
:: call :asm fonts || exit /b
call :asm romfonts || exit /b
:: Sysconf builds as both BIN and COM files
tasm -t%CPUType% -g3 -fFF -dROMWBW sysconf.asm sysconf.bin sysconf_bin.lst || exit /b
tasm -t%CPUType% -g3 -fFF -dCPM sysconf.asm sysconf.com sysconf_com.lst || exit /b
:: Create platform specific hardware monitor
if %Platform%==S100 (
zxcc slr180 -s100mon/fh || exit /b
zxcc mload25 -s100mon || exit /b
set HwMon=s100mon.com
) else (
call :asm hwmon || exit /b
set HwMon=hwmon.bin
)
::
:: Create additional ROM bank images by assembling components into
:: 32K chunks which can be concatenated later. Note that
@ -113,15 +124,7 @@ tasm -t%CPUType% -g3 -fFF -dCPM sysconf.asm sysconf.com sysconf_com.lst || exit
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin + ..\cpm22\cpm_wbw.bin rom1.bin || exit /b
copy /b ..\Forth\camel80.bin + nascom.bin + ..\tastybasic\src\tastybasic.bin + game.bin + eastaegg.bin + %NETBOOT% + updater.bin + sysconf.bin + usrrom.bin rom2.bin || exit /b
if %Platform%==S100 (
zxcc slr180 -s100mon/fh
zxcc mload25 -s100mon || exit /b
copy /b s100mon.com rom3.bin || exit /b
) else (
copy nul rom3.bin
)
copy /b %HwMon% + romfonts.bin rom3.bin
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin appboot.bin || exit /b
::

33
Source/HBIOS/Makefile

@ -5,7 +5,7 @@ MOREDIFF = game.bin hbios_rom.bin nascom.bin usrrom.bin \
DEST = ../../Binary
TOOLS =../../Tools
OTHERS = *.img *.rom *.com *.upd *.bin *.hex cpm.sys zsys.sys Build.inc font*.asm *.dat hbios_env.sh netboot.mod
OTHERS = *.img *.rom *.com *.upd *.bin *.hex cpm.sys zsys.sys Build.inc font*.asm *.dat hbios_env.sh
# DIFFMAKE = 1
@ -26,14 +26,13 @@ include $(TOOLS)/Makefile.inc
FONTS := font6x8c.asm font6x8u.asm font8x8c.asm font8x8u.asm \
font8x11c.asm font8x11u.asm font8x16c.asm font8x16u.asm
ifeq ($(CPUFAM),2)
TASM=$(BINDIR)/uz80as -t hd64180
else ifeq ($(CPUFAM),3)
TASM=$(BINDIR)/uz80as -t z280
endif
DEPS=prereq dbgmon.bin romldr.bin nascom.bin tastybasic.bin game.bin eastaegg.bin updater.bin sysconf.bin sysconf.com usrrom.bin
DEPS=prereq dbgmon.bin romldr.bin nascom.bin tastybasic.bin game.bin eastaegg.bin updater.bin sysconf.bin sysconf.com usrrom.bin romfonts.bin
ifeq ($(ROM_PLATFORM),UNA)
ROMDEPS=romldr.bin dbgmon.bin
@ -44,9 +43,19 @@ else
endif
ifeq ($(ROM_PLATFORM),S100)
ROMDEPS += s100mon.bin
HWMON=s100mon.bin
else
HWMON=hwmon.bin
endif
ifeq ($(ROM_PLATFORM),DUO)
NETBOOT=netboot-duo.mod
else
NETBOOT=netboot-mt.mod
endif
DEPS += $(HWMON) $(NETBOOT)
ROMNAME=${ROM_PLATFORM}_${ROM_CONFIG}
# $(info DEPS=$(DEPS))
@ -61,18 +70,9 @@ ROMNAME=${ROM_PLATFORM}_${ROM_CONFIG}
$(OBJECTS) : $(ROMDEPS)
@cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin ../CPM22/cpm_$(BIOS).bin >rom1.bin
cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin >appboot.bin
if [ $(ROM_PLATFORM) = DUO ] ; then \
cat netboot-duo.mod >netboot.mod ; \
else \
cat netboot-mt.mod >netboot.mod ; \
fi
if [ $(ROM_PLATFORM) != UNA ] ; then \
cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin netboot.mod updater.bin sysconf.bin usrrom.bin >rom2.bin ; \
if [ $(ROM_PLATFORM) = S100 ] ; then \
cat s100mon.bin >rom3.bin ; \
else \
>rom3.bin ; \
fi ; \
cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin $(NETBOOT) updater.bin sysconf.bin usrrom.bin >rom2.bin ; \
cat $(HWMON) romfonts.bin >rom3.bin ; \
for f in hbios_rom.bin rom1.bin rom2.bin rom3.bin ; do \
srec_cat $$f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $$f -Binary ; \
done \
@ -135,6 +135,9 @@ dbgmon.bin: build.inc
nascom.bin: build.inc
eastaegg.bin: build.inc
updater.bin: build.inc
romfonts.bin: build.inc
hwmon.bin: build.inc
s100mon.bin: build.inc
dumps:
for i in $(MOREDIFF) ; do \

30
Source/HBIOS/hwmon.asm

@ -0,0 +1,30 @@
;
;=============================================================================
; HWMON.ASM - BARE METAL HARDWARE MONITOR
;=============================================================================
;
; THIS IS JUST A STUB FOR NOW.
;
#INCLUDE "std.asm"
;
; MONITOR WILL BE LOADED AT HWMON_LOC
;
.ORG HWMON_LOC
;
; IT IS CRITICAL THAT THE FINAL BINARY BE EXACTLY HWMON_SIZ BYTES.
; THIS GENERATES FILLER AS NEEDED. IT WILL ALSO FORCE AN ASSEMBLY
; ERROR IF THE SIZE EXCEEDS THE SPACE ALLOCATED.
;
SLACK .EQU (HWMON_END - $)
;
#IF (SLACK < 0)
.ECHO "*** HWMON IS TOO BIG!!!\n"
!!! ; FORCE AN ASSEMBLY ERROR
#ENDIF
;
.FILL SLACK,$00
.ECHO "Hardware Monitor space remaining: "
.ECHO SLACK
.ECHO " bytes.\n"
;
.END

2
Source/HBIOS/layout.inc

@ -186,7 +186,7 @@ BNK_NXTLOC .SET HWMON_IMGLOC + HWMON_SIZ ; IMG LOC OF NEXT COMPONENT
;
FONTS_BNK .EQU BNK_CUR
FONTS_LOC .EQU $0000
FONTS_SIZ .EQU $4000
FONTS_SIZ .EQU $2100
FONTS_END .EQU FONTS_LOC + FONTS_SIZ
FONTS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET FONTS_IMGLOC + FONTS_SIZ ; IMG LOC OF NEXT COMPONENT

97
Source/HBIOS/romfonts.asm

@ -0,0 +1,97 @@
;
;=============================================================================
; ROMFONTS.ASM - ROM HOSTED FONTS
;=============================================================================
;
; THIS ASSEMBLY IS PURELY A DATA ASSEMBLY USED TO INCLUDE THE ROM-HOSTED
; FONTS.
;
; FOR NOW, WE ARE JUST INCLUDING 3 FONTS AND THEY ARE NOT COMPRESSED.
; THESE THREE FONTS SHOULD ALWAYS RESULT IN AN 8K BINARY.
;
#INCLUDE "std.asm"
;
;
;
USEFONT6X8 .EQU TRUE
USEFONT8X8 .EQU TRUE
USEFONT8X11 .EQU FALSE
USEFONT8X16 .EQU TRUE
;
.ORG FONTS_LOC
;
; FONT LOCATION MAP
;
#IF USEFONT6X8
.DB FONTID_6X8
.DW FONT6X8
#ENDIF
;
#IF USEFONT8X8
.DB FONTID_8X8
.DW FONT8X8
#ENDIF
;
#IF USEFONT8X11
.DB FONTID_8X11
.DW FONT8X11
#ENDIF
;
#IF USEFONT8X16
.DB FONTID_8X16
.DW FONT8X16
#ENDIF
;
.DB 0 ; END OF TABLE
;
;
;
#IF USEFONT6X8
.ECHO "FONT6X8: "
FONT6X8:
#INCLUDE "font6x8u.asm"
.ECHO $ - FONT6X8
.ECHO " BYTES\n"
#ENDIF
;
#IF USEFONT8X8
.ECHO "FONT8X8: "
FONT8X8:
#INCLUDE "font8x8u.asm"
.ECHO $ - FONT8X8
.ECHO " BYTES\n"
#ENDIF
;
#IF USEFONT8X11
.ECHO "FONT8X11: "
FONT8X11:
#INCLUDE "font8x11u.asm"
.ECHO $ - FONT8X11
.ECHO " BYTES\n"
#ENDIF
;
#IF USEFONT8X16
.ECHO "FONT8X16: "
FONT8X16:
#INCLUDE "font8x16u.asm"
.ECHO $ - FONT8X16
.ECHO " BYTES\n"
#ENDIF
;
; IT IS CRITICAL THAT THE FINAL BINARY BE EXACTLY USR_SIZ BYTES.
; THIS GENERATES FILLER AS NEEDED. IT WILL ALSO FORCE AN ASSEMBLY
; ERROR IF THE SIZE EXCEEDS THE SPACE ALLOCATED.
;
SLACK .EQU (FONTS_END - $)
;
#IF (SLACK < 0)
.ECHO "*** FONTS IS TOO BIG!!!\n"
!!! ; FORCE AN ASSEMBLY ERROR
#ENDIF
;
.FILL SLACK,$00
.ECHO "FONTS space remaining: "
.ECHO SLACK
.ECHO " bytes.\n"
;
.END

9
Source/HBIOS/std.asm

@ -551,11 +551,10 @@ V40X24 .EQU 7 ; EF9345
;
; FONT IDS
;
FONTID_8X8 .EQU 1
FONTID_8X11 .EQU 2
FONTID_8X16 .EQU 3
FONTID_CGA .EQU 4
FONTID_VGARC .EQU 5
FONTID_6X8 .EQU 1
FONTID_8X8 .EQU 2
FONTID_8X11 .EQU 3
FONTID_8X16 .EQU 4
;
; KEYBOARD LAYOUTS
;

Loading…
Cancel
Save