102 lines
3.6 KiB
OpenEdge ABL
102 lines
3.6 KiB
OpenEdge ABL
; prints text using the inbuilt font and SYS routine
|
|
printText LDWI SYS_VDrawBits_134 ; setup 8 vertical pixel SYS routine
|
|
STW giga_sysFn
|
|
|
|
LDI 0x00 ; background colour
|
|
ST giga_sysArg0
|
|
LDI 0x3F ; foreground colour
|
|
ST giga_sysArg1
|
|
|
|
LDW textStr ; first byte is length
|
|
PEEK
|
|
ST tt
|
|
INC textStr
|
|
|
|
printT_chr LDW textStr
|
|
PEEK
|
|
SUBI 32 ; (char - 32)*5 + 0x0700
|
|
STW textChr
|
|
STW scratch
|
|
LSLW scratch
|
|
LSLW scratch
|
|
ADDW textChr
|
|
ADDW tbase
|
|
STW scratch ; text font slice base address for chars 32-81
|
|
|
|
LDW textChr
|
|
SUBI 50
|
|
BLT printT_draw
|
|
LDW scratch
|
|
ADDI 0x06
|
|
STW scratch ; text font slice base address for chars 82+
|
|
|
|
printT_draw LDI 0x05
|
|
ST ii
|
|
printT_slice LDW textPos
|
|
STW giga_sysArg4 ; xy
|
|
LDW scratch ; text font slice base address
|
|
LUP 0x00 ; get ROM slice
|
|
ST giga_sysArg2
|
|
SYS 134
|
|
INC scratch ; next vertical slice
|
|
INC textPos ; next x
|
|
LoopCounter ii printT_slice
|
|
|
|
INC textStr ; next char
|
|
INC textPos ; 1 pixel space between chars
|
|
LoopCounter tt printT_chr
|
|
RET
|
|
|
|
|
|
; prints digits using a tiny 3x5 font
|
|
printDigits LDWI SYS_Draw4_30 ; setup 4 pixel SYS routine
|
|
STW giga_sysFn
|
|
|
|
LDW textStr ; first byte is length
|
|
PEEK
|
|
ST tt
|
|
INC textStr
|
|
|
|
printD_chr LDW textStr
|
|
PEEK
|
|
SUBI 48 ; (char - 48)*4 + digit_font0
|
|
STW scratch
|
|
LSLW scratch
|
|
LSLW scratch
|
|
ADDW dbase
|
|
STW scratch
|
|
LDI 0x05
|
|
ST ii
|
|
|
|
printD_slice LDW scratch
|
|
DEEK
|
|
STW giga_sysArg0 ; first 2 pixels from digit font LUT
|
|
LDW scratch
|
|
ADDI 0x02
|
|
PEEK
|
|
ST giga_sysArg2 ; third pixel from digit font LUT
|
|
LDI bgColourB
|
|
ST giga_sysArg3 ; fourth pixel is background colour
|
|
LDW textPos
|
|
STW giga_sysArg4 ; xy
|
|
SYS 30
|
|
|
|
PUSH
|
|
CALL playMidi
|
|
POP
|
|
|
|
INC scratch + 1 ; next horizontal slice
|
|
INC textPos + 1 ; next y
|
|
LoopCounter ii printD_slice
|
|
|
|
INC textStr ; next char
|
|
LD textPos ; x += 4
|
|
ADDI 0x04
|
|
ST textPos
|
|
LD textPos + 1 ; y -= 5
|
|
SUBI 0x05
|
|
ST textPos + 1
|
|
LoopCounter tt printD_chr
|
|
RET
|
|
|