📄 tos_used.asm
字号:
;////////////////// use by tos task
TURN_TO_REAL PROC FAR
cli
MOV AX,REAL_SEL
MOV ES,AX
MOV FS,AX
MOV GS,AX
MOV DS,AX
MOV SS,AX
MOV EAX,CR0
AND EAX,0FFFFFFFEH
MOV CR0,EAX
DB 0EAH
DW OFFSET REAL_MODE
DW CODE
RET
TURN_TO_REAL ENDP
DISP_TOS_IN_TOS PROC FAR
; DISP 'COS'
MOV AH,24H;07 for white/black
mov al,43h
mov es:320,ax
mov al,4fh
mov es:322,ax
mov al,53h
mov es:324,ax
RET
; DISP 'COS'
DISP_TOS_IN_TOS ENDP
GINT21H PROC FAR
cli
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH ES
PUSH DS
CMP AH,4CH
JE GINT21H_4C
CMP AH,9
JE GINT21H_9
JNE GINT21H_END
GINT21H_4C:
POP DS
POP ES
POP SI
POP DX
POP CX
POP BX
db 0eah
dw COMEBACK_TO_TOS
dw ps_TO_TOS_SEL
GINT21H_9:
MOV AX,G_VRAM_SEL
MOV ES,AX
MOV SI,DX
MOV DX,CX
MOV DH,0
PUSH DX
MOV CL,CH
MOV CH,0
MOV AX,CX
MOV CX,160
MUL CX
MOV BX,AX
POP DX
ADD BX,DX
ADD BX,DX
MOV AH,24H;07 for white/black
LGINT21H1: MOV AL,DS:[SI]
CMP AL,'$'
JE GINT21H_END
MOV ES:[BX],AX
ADD BX,2
INC SI
LOOP LGINT21H1
GINT21H_END:
POP DS
POP ES
POP SI
POP DX
POP CX
POP BX
IRETD
GINT21H ENDP
DISP2_16 PROC FAR
;in al code 2 using ah
;out ah:al:code 16
mov ah,al
shr ah,4
cmp ah,9
jle disp2_16_1
add ah,7
disp2_16_1: add ah,30h
and al,0fh
cmp al,9
jle disp2_16_2
add al,7
disp2_16_2: add al,30h
RET
DISP2_16 ENDP
DISP_AX PROC FAR
;in cx:position call inner tos_seg
PUSH AX
PUSH BX
PUSH DX
MOV BX,AX
mov al,BH
CALL DISP2_16
mov DS:t_string,ah
mov DS:t_string[1],al
MOV AL,BL
CALL DISP2_16
mov DS:t_string[2],ah
mov DS:t_string[3],al
mov DS:t_string[4],'$'
MOV AH,9
MOV DX,OFFSET t_string
;add dx,16
INT 21H
POP DX
POP BX
POP AX
RET
DISP_AX ENDP
DISP_EXT_AX PROC FAR
;in cx:position call out tos_seg
PUSH AX
PUSH BX
PUSH DX
MOV BX,AX
mov al,BH
db 9ah
dw DISP2_16
dw TOS_CODE_SEL
mov DS:t_string,ah
mov DS:t_string[1],al
MOV AL,BL
db 9ah
dw DISP2_16
dw TOS_CODE_SEL
mov DS:t_string[2],ah
mov DS:t_string[3],al
mov DS:t_string[4],'$'
MOV AH,9
MOV DX,OFFSET t_string
;add dx,16
INT 21H
POP DX
POP BX
POP AX
RET
DISP_EXT_AX ENDP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -