|
|
|
@ -8290,6 +8290,104 @@ HB_CPUSPD2: |
|
|
|
HB_UTIL_END .EQU $ |
|
|
|
; |
|
|
|
;================================================================================================== |
|
|
|
; FONT MANAGEMENT ROUTINES |
|
|
|
;================================================================================================== |
|
|
|
; |
|
|
|
; SELECT A FONT BASED ON THE FONT ID PASSED IN REGISTER A. THIS WILL |
|
|
|
; PREPARE TO STREAM FONT DATA VIA THE FNT_NEXT ROUTINE. USES DE, AND |
|
|
|
; HL. |
|
|
|
; |
|
|
|
FNT_SELECT: |
|
|
|
; THE MAP IS CURRENTLY ASSUMED TO BE IN THE HBIOS BANK |
|
|
|
LD E,A ; DESIRED FONT ID TO E |
|
|
|
LD HL,FNT_MAP ; POINT TO START OF MAP |
|
|
|
LD A,(HL) ; LOAD THE FONT ID |
|
|
|
AND $7F ; REMOVE COMPRESSION BIT 7 |
|
|
|
OR A ; CHECK OF END OF TABLE |
|
|
|
JR Z,FNT_SELECT_ERR ; IF SO, BAIL OUT W/ ERR |
|
|
|
CP E ; CHECK FOR DESIRED FONT ID |
|
|
|
JR Z,FNT_SELECT1 ; IF SO, LOCK IT IN |
|
|
|
INC HL ; BUMP PAST FONT ID |
|
|
|
INC HL ; BUMP TO |
|
|
|
INC HL ; ... NEXT TABLE ENTRY |
|
|
|
JR FNT_SELECT ; AND LOOP |
|
|
|
; |
|
|
|
FNT_SELECT1: |
|
|
|
LD E,(HL) ; GET FONT ID BYTE |
|
|
|
INC HL ; BUMP PAST FONT ID |
|
|
|
LD A,BID_BIOS ; FOR NOW, ASSUME FONT IN HBIOS |
|
|
|
LD (FNT_BID),A ; SAVE IT |
|
|
|
LD A,(HL) ; DEREF HL |
|
|
|
INC HL |
|
|
|
LD H,(HL) |
|
|
|
LD L,A |
|
|
|
BIT 7,E ; COMPRESSED FONT DATA? |
|
|
|
JR Z,FNT_SELECT2 ; IF NOT, SKIP DECOMP |
|
|
|
; |
|
|
|
#IF ((CVDUENABLE | GDCENABLE | TMSENABLE | VGAENABLE | VRCENABLE) & USELZSA2) |
|
|
|
; BELOW DOES NOT YET HANDLE COMPRESSED FONT DATA IN ROM!!! |
|
|
|
PUSH HL ; SAVE COMP DATA PTR |
|
|
|
LD HL,0 ; COPY SP |
|
|
|
ADD HL,SP ; ... TO HL |
|
|
|
LD DE,$2100 ; SPACE FOR DECOMP BUF AND STACK |
|
|
|
CCF ; CLEAR CARRY |
|
|
|
SBC HL,DE ; HL IS START OF DECOMP BUF |
|
|
|
POP DE ; RECOVER COMP DATA PTR |
|
|
|
EX DE,HL ; SWAP |
|
|
|
PUSH DE ; SAVE START OF DECOMP BUF |
|
|
|
CALL DLZSA2 ; DECOMP |
|
|
|
POP HL ; START OF DECOMP BUF |
|
|
|
#ELSE |
|
|
|
JR FNT_SELECT_ERR ; OOPS, CAN'T DECOMPRESS |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
FNT_SELECT2: |
|
|
|
LD (FNT_PTR),HL ; SAVE STARTING POINTER |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET |
|
|
|
|
|
|
|
FNT_SELECT_ERR: |
|
|
|
OR $FF ; SIGNAL FAILURE |
|
|
|
RET |
|
|
|
; |
|
|
|
; RETURN THE NEXT BYTE OF FONT DATA IN REGISTER A. EACH CALL RETURNS |
|
|
|
; THE NEXT BYTE OF DATA. THERE IS NO INDICATION OF THE END OF THE |
|
|
|
; FONT DATA. THE CALLER IS EXPECTED TO KNOW HOW MANY |
|
|
|
; BYTES OF FONT DATA WILL BE RETURNED. ONLY REGISTER A IS |
|
|
|
; MODIFIED. |
|
|
|
; |
|
|
|
ROMFONTS .EQU TRUE |
|
|
|
; |
|
|
|
FNT_NEXT: |
|
|
|
#IF ROMFONTS |
|
|
|
PUSH HL |
|
|
|
PUSH DE |
|
|
|
LD A,(FNT_BID) |
|
|
|
LD D,A |
|
|
|
LD HL,(FNT_PTR) |
|
|
|
HB_DI |
|
|
|
CALL HBX_PEEK |
|
|
|
HB_EI |
|
|
|
INC HL |
|
|
|
LD (FNT_PTR),HL |
|
|
|
LD A,E |
|
|
|
POP DE |
|
|
|
POP HL |
|
|
|
RET |
|
|
|
#ELSE |
|
|
|
PUSH HL ; SAVE HL |
|
|
|
LD HL,(FNT_PTR) ; GET CUR FONT DATA PTR |
|
|
|
LD A,(HL) ; GET NEXT BYTE TO A |
|
|
|
INC HL ; BUMP PTR |
|
|
|
LD (FNT_PTR),HL ; SAVE PTR |
|
|
|
POP HL ; RESTORE HL |
|
|
|
RET ; DONE |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
FNT_BID .DB 0 ; BANK CONTAINING FONT DATA |
|
|
|
FNT_PTR .DW 0 ; POINTER TO NEXT BYTE OF DATA |
|
|
|
; |
|
|
|
;================================================================================================== |
|
|
|
; DISPLAY SUMMARY OF ATTACHED UNITS/DEVICES |
|
|
|
;================================================================================================== |
|
|
|
; |
|
|
|
@ -9550,25 +9648,41 @@ FONT8X16: |
|
|
|
MEMECHO " 8X16" |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IFDEF USEFONTCGA |
|
|
|
FONTCGA: |
|
|
|
#IF USELZSA2 |
|
|
|
#INCLUDE "fontcgac.asm" |
|
|
|
#ELSE |
|
|
|
#INCLUDE "fontcgau.asm" |
|
|
|
#ENDIF |
|
|
|
MEMECHO " CGA" |
|
|
|
; HIGH BIT OF THE FONTID BYTE INDICATES THAT THE FONT DATA IS COMPRESSED |
|
|
|
; |
|
|
|
#IF USELZSA2 |
|
|
|
FNT_CMPMASK .EQU $80 |
|
|
|
#ELSE |
|
|
|
FNT_CMPMASK .EQU $00 |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IFDEF USEFONTVGARC |
|
|
|
FONTVGARC: |
|
|
|
#IF USELZSA2 |
|
|
|
#INCLUDE "fontvgarcc.asm" |
|
|
|
#ELSE |
|
|
|
#INCLUDE "fontvgarcu.asm" |
|
|
|
#ENDIF |
|
|
|
MEMECHO " VGARC" |
|
|
|
; FONT LOCATION MAP |
|
|
|
; |
|
|
|
FNT_MAP: |
|
|
|
#IFDEF USEFONT6X8 |
|
|
|
; FOR NOW, WE NEVER COMPRESS THE 6X8 FONT. SEE TMS DRIVER. |
|
|
|
;;; .DB FONTID_6X8 | FNT_CMPMASK |
|
|
|
.DB FONTID_6X8 |
|
|
|
.DW FONT6X8 |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IFDEF USEFONT8X8 |
|
|
|
.DB FONTID_8X8 | FNT_CMPMASK |
|
|
|
.DW FONT8X8 |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IFDEF USEFONT8X11 |
|
|
|
.DB FONTID_8X11 | FNT_CMPMASK |
|
|
|
.DW FONT8X11 |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
#IFDEF USEFONT8X16 |
|
|
|
.DB FONTID_8X16 | FNT_CMPMASK |
|
|
|
.DW FONT8X16 |
|
|
|
#ENDIF |
|
|
|
; |
|
|
|
.DB 0 ; END OF TABLE |
|
|
|
|
|
|
|
; |
|
|
|
SIZ_FONTS .EQU $ - ORG_FONTS |
|
|
|
MEMECHO " occupy " |
|
|
|
|