You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

134 lines
2.6 KiB

;
;=============================================================================
; 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.
;
#INCLUDE "std.asm"
;
COMP .EQU $80 ; BIT MASK FOR COMPRESSED FONT
RAW .EQU $00 ; BIT MASK FOR RAW FONT
;
; FONT INCLUSION CONTROLS. THE FMT_XXX SETTING CONTROLS WHETHER THE
; FONT DATA WILL BE COMPRESSED OR NOT. GENERALLY, COMPRESSED IS USED
; TO SAVE SPACE. THE 6X8 FONT IS AN EXCEPTION BECAUSE IT IS USED BY
; THE TMS DRIVER WHICH RELOADS THE FONT ON-THE-FLY DURING SYSTEM
; OPERATION. SEE TMS.ASM.
;
USEFONT6X8 .EQU TRUE
FMT_6X8 .EQU RAW
;
USEFONT8X8 .EQU TRUE
FMT_8X8 .EQU COMP
;
USEFONT8X11 .EQU TRUE
FMT_8X11 .EQU COMP
;
USEFONT8X16 .EQU TRUE
FMT_8X16 .EQU COMP
;
.ORG FONTS_LOC
;
; FONT LOCATION MAP
;
#IF USEFONT6X8
.DB FONTID_6X8 | FMT_6X8
.DW FONT6X8
#ENDIF
;
#IF USEFONT8X8
.DB FONTID_8X8 | FMT_8X8
.DW FONT8X8
#ENDIF
;
#IF USEFONT8X11
.DB FONTID_8X11 | FMT_8X11
.DW FONT8X11
#ENDIF
;
#IF USEFONT8X16
.DB FONTID_8X16 | FMT_8X16
.DW FONT8X16
#ENDIF
;
.DB 0 ; END OF TABLE
;
; INCLUDE ACTUAL FONT FILES
;
#IF USEFONT6X8
.ECHO "FONT6X8: "
FONT6X8:
#IF (FMT_6X8 == COMP)
.ECHO "COMPRESSED "
#INCLUDE "font6x8c.asm"
#ELSE
.ECHO "RAW "
#INCLUDE "font6x8u.asm"
#ENDIF
.ECHO $ - FONT6X8
.ECHO " BYTES\n"
#ENDIF
;
#IF USEFONT8X8
.ECHO "FONT8X8: "
FONT8X8:
#IF (FMT_8X8 == COMP)
.ECHO "COMPRESSED "
#INCLUDE "font8x8c.asm"
#ELSE
.ECHO "RAW "
#INCLUDE "font8x8u.asm"
#ENDIF
.ECHO $ - FONT8X8
.ECHO " BYTES\n"
#ENDIF
;
#IF USEFONT8X11
.ECHO "FONT8X11: "
FONT8X11:
#IF (FMT_8X11 == COMP)
.ECHO "COMPRESSED "
#INCLUDE "font8x11c.asm"
#ELSE
.ECHO "RAW "
#INCLUDE "font8x11u.asm"
#ENDIF
.ECHO $ - FONT8X11
.ECHO " BYTES\n"
#ENDIF
;
#IF USEFONT8X16
.ECHO "FONT8X16: "
FONT8X16:
#IF (FMT_8X16 == COMP)
.ECHO "COMPRESSED "
#INCLUDE "font8x16c.asm"
#ELSE
.ECHO "RAW "
#INCLUDE "font8x16u.asm"
#ENDIF
.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