49 lines
790 B
Plaintext
Executable file
49 lines
790 B
Plaintext
Executable file
0 VAR, textpage
|
|
0x0f VAR, textpen
|
|
|
|
80 const pagew
|
|
25 const pageh
|
|
|
|
0xb800 CONST TEXTMEM
|
|
: PREP-TEXTCOPY
|
|
MOV ES t& TEXTMEM @+
|
|
MOV AH textpen @+
|
|
MOV DI textpage @+ ;
|
|
|
|
:ASM fill-page ( char -- )
|
|
POP AX
|
|
PREP-TEXTCOPY
|
|
MOV CX pagew pageh * #
|
|
REPZ STOSW
|
|
NEXT
|
|
|
|
0 VAR, textpos
|
|
:t textx textpos @ pagew % ;
|
|
:t texty textpos @ pagew / ;
|
|
:t textx! texty pagew * + textpos ! ;
|
|
:t texty! pagew * textx + textpos ! ;
|
|
:t nextline texty 1+ pagew * textpos ! ;
|
|
|
|
: PREP-TEXTCOPY-XY
|
|
PREP-TEXTCOPY
|
|
ADD SI textpos @+ ;
|
|
|
|
:ASM draw-text ( s -- )
|
|
INT 3 #
|
|
MOV BX SI
|
|
POP SI
|
|
PREP-TEXTCOPY-XY
|
|
L: draw-next-char
|
|
LODSB
|
|
OR AL AL
|
|
JZ 0 @>
|
|
STOSW
|
|
JMP draw-next-char
|
|
0 <:
|
|
SUB DI textpage @+
|
|
INC DI
|
|
MOV textpos @+ DI
|
|
MOV SI BX
|
|
NEXT
|
|
|