Estex-DSS/DSS/API/PutChar.asm
2024-12-18 00:18:16 +10:00

98 lines
1.8 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;///////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #5B. ‚뢮¤ ᨬ¢®«  ­  íªà ­ ¢ ⥪. ¯®§¨æ¨¨.
;
; ¢å®¤: A - ᨬ¢®«
; ¢ë室: ­¥â
;///////////////////////////////////////////////////////////////////////
PUTCHAR: ;CALL .NO_SCROLL
CP #0E
JR C,.control_characters
;
LD BC,1*256 + BIOS.LP_PRINT_SYM
;[x] CR+LF+SCROLL
RST ToBIOS
;
; ¯à®¢¥àª  ­  ¯¥à¥å®¤ ªãàá®à  ¢ á ¬®¥ ­ ç «® (X:Y == 0:0)
CALL CURSOR
LD A,D
OR E
RET NZ
;
.LFF: PUSH HL
LD BC,1*256 + BIOS.LP_SCROLL_UD
LD DE,#0020
RST ToBIOS
LD DE,#1F00
CALL LOCATE
LD A,' '
LD BC,#50*256 + BIOS.LP_PRINT_SYM
RST ToBIOS
LD DE,#1F00
CALL LOCATE
POP HL
RET
.TB_: CALL CURSOR
IF TABisSPACES
LD B,E
LD A,E
AND #F8
ADD A,8
SUB B
LD B,A
LD A,' '
LD C,BIOS.LP_PRINT_SYM
JP ToBIOS
ELSE
LD A,E
ADD A,8
AND #78 ;????? £«ï­ãâì, çâ® ¡ã¤¥â ¥á«¨ ª®®à¤¨­ âë ªãàá®à  ¢ ª®­æ¥ áâப¨ ¯®çâ¨
LD E,A
JP LOCATE
ENDIF
.BK_: CALL CURSOR
XOR A
CP E
RET Z
DEC E
JP LOCATE
;
.LF_: CALL CURSOR
LD A,D
CP #1F
JR NC,.LFF
INC D
IFN EnoughtOnly_LF
JP LOCATE
ELSE
CALL LOCATE
; !!!! <20>… à §à뢠âì LF_ ¨ CR_ !!!!
ENDIF
.CR_: CALL CURSOR
LD E,0
JP LOCATE
;
.control_characters:
CP "\r"
JR Z,.CR_
CP "\n"
JR Z,.LF_
CP "\t" ; tab
JR Z,.TB_
CP "\b" ; backspace
JR Z,.BK_
CP "\a" ; [x] Beep in PChars/PUTCHAR
RET NZ
; [x] Beep in PChars/PUTCHAR
.BELL: LD DE,1200
PUSH HL
LD HL,4
CALL BEEP
POP HL
RET
;
; [x] -bug with Vasil's version of cursor
.NO_SCROLL: CP #0E
JR C,.control_characters
._CHAR: LD BC,1*256 + BIOS.LP_PRINT_SYM
JP ToBIOS
;///////////////////////////////////////////////////////////////////////