dialer/text.jrt

77 lines
1.2 KiB
Plaintext
Raw Normal View History

:ASM textmode
MOV AX 0x03 #
INT 0x10 #
NEXT
0 VAR, textpageid
0 VAR, textpage
:t page! dup textpageid ! 12 << textpage ! ;
:ASM showpage
POP AX
MOV AH 0x05 #
INT 0x10 #
NEXT
:ASM movecursor ( xy -- )
MOV BH textpageid @+
MOV AH 0x02 #
POP DX
INT 0x10 #
NEXT
:ASM cursorshape! ( shape -- )
POP CX
MOV AH 0x01 #
INT 0x10 #
NEXT
:t hidecursor 0x2607 cursorshape! ;
:t showcursor 0x0607 cursorshape! ;
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 -- )
INT 3 #
POP AX
PREP-TEXTCOPY
MOV CX pagew pageh * #
REPZ STOSW
NEXT
0 VAR, textpos
:t textx textpos @ 1 >> pagew % ;
:t texty textpos @ 1 >> pagew / ;
:t textx! texty pagew 1 << * + textpos ! ;
:t texty! pagew 1 << * textx + textpos ! ;
:t nextline texty 1+ pagew 1 << * textpos ! ;
: PREP-TEXTCOPY-XY
PREP-TEXTCOPY
ADD DI textpos @+ ;
:ASM draw-text ( s -- )
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 @+
MOV textpos @+ DI
MOV SI BX
NEXT