📄 csyslib.mac
字号:
MOV BX,4
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
XCHG DX,BX
MOV BX,0
ADD BX,SP
MOV BX,[BX]
MOV SI,DX
MOV [SI],BX
MOV BX,4
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,-1
PUSH BX ;
MOV BX,-1
PUSH BX ;
MOV BX,2
PUSH BX ;
CALL _seek
ADD SP,8
_CC40:
MOV BX,4
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _fgetc
ADD SP,2
XCHG DX,BX
MOV BX,-1
CMP DX,BX
MOV BX,CX
JE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC41
JMP _CC40
_CC41:
MOV BX,OFFSET _Ustatus
XCHG DX,BX
MOV BX,4
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
XCHG DX,BX
MOV BX,6
MOV SI,DX
MOV [SI],BX
JMP _CC28
_CC29:
CALL _CCSWITCH
DW _CC30,114
DW _CC32,117
DW _CC34,119
DW 0
JMP _CC38
_CC28:
MOV BX,4
ADD BX,SP
MOV BX,[BX]
ADD SP,2
RET
_CC23: DB 114,119,97,117,0,67,79,78,58,0
DB 76,83,84,58,0
PUBLIC _Uread
_Uread:
SUB SP,3
MOV BX,1
ADD BX,SP
XCHG DX,BX
MOV BX,5
ADD BX,SP
MOV BX,[BX]
MOV SI,DX
MOV [SI],BX
MOV BX,7
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Umode
ADD SP,2
JMP _CC45
_CC46:
MOV BX,7
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Useterr
ADD SP,2
MOV BX,-1
ADD SP,3
RET
_CC47:
_CC48:
JMP _CC44
_CC45:
CALL _CCSWITCH
DW _CC47,1
DW _CC48,3
DW 0
JMP _CC46
_CC44:
MOV BX,OFFSET _Unextc
XCHG DX,BX
MOV BX,7
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
MOV BX,[BX]
XCHG DX,BX
MOV BX,-1
CMP DX,BX
MOV BX,CX
JE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC49
MOV BX,9
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
DEC BX
PUSH BX ;
MOV BX,OFFSET _Unextc
XCHG DX,BX
MOV BX,09
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
MOV BX,[BX]
POP DX
MOV SI,DX
MOV [SI],BL
MOV BX,OFFSET _Unextc
XCHG DX,BX
MOV BX,7
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
XCHG DX,BX
MOV BX,-1
MOV SI,DX
MOV [SI],BX
MOV BX,5
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
MOV SI,DX
MOV [SI],BX
OR BX,BX
JZ $+5
JMP _CC50
MOV BX,1
ADD SP,3
RET
_CC50:
_CC49:
MOV BX,OFFSET _Udevice
XCHG DX,BX
MOV BX,7
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
MOV BX,[BX]
JMP _CC53
_CC54:
_CC55:
MOV BX,5
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
MOV SI,DX
MOV [SI],BX
INC BX
OR BX,BX
JNZ $+5
JMP _CC56
MOV BX,0
ADD BX,SP
PUSH BX ;
CALL _Uconin
POP DX
MOV SI,DX
MOV [SI],BL
XCHG DX,BX
MOV BX,26
CMP DX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC57
MOV BX,-1
ADD SP,3
RET
_CC57:
MOV BX,9
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
DEC BX
XCHG DX,BX
MOV BX,0
ADD BX,SP
MOV AL,[BX]
CBW
MOV BX,AX
MOV SI,DX
MOV [SI],BL
JMP _CC55
_CC56:
MOV BX,1
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,5
ADD BX,SP
MOV BX,[BX]
SUB DX,BX
MOV BX,DX
ADD SP,3
RET
_CC58:
MOV BX,1
ADD BX,SP
PUSH BX ;
MOV BX,11
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,9
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,OFFSET _Ufd
XCHG DX,BX
MOV BX,13
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
MOV BX,[BX]
PUSH BX ;
MOV BX,16128
PUSH BX ;
CALL _Umsdos
ADD SP,8
POP DX
MOV SI,DX
MOV [SI],BX
XCHG DX,BX
MOV BX,-2
CMP DX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC59
MOV BX,-2
ADD SP,3
RET
_CC59:
MOV BX,1
ADD BX,SP
MOV BX,[BX]
OR BX,BX
JZ $+5
JMP _CC60
MOV BX,7
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Useteof
ADD SP,2
_CC60:
MOV BX,1
ADD BX,SP
MOV BX,[BX]
ADD SP,3
RET
JMP _CC52
_CC53:
CALL _CCSWITCH
DW _CC54,1
DW 0
JMP _CC58
_CC52:
ADD SP,3
RET
PUBLIC _Uconin
_Uconin:
SUB SP,2
_CC62:
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,255
PUSH BX ;
CALL _Dcio
ADD SP,2
POP DX
MOV SI,DX
MOV [SI],BX
OR BX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC63
JMP _CC62
_CC63:
MOV BX,0
ADD BX,SP
MOV BX,[BX]
JMP _CC66
_CC67:
MOV BX,0
PUSH BX ;
CALL _exit
ADD SP,2
_CC68:
_CC69:
MOV BX,10
PUSH BX ;
CALL _Uconout
ADD SP,2
MOV BX,13
PUSH BX ;
CALL _Uconout
ADD SP,2
ADD SP,2
RET
_CC70:
MOV BX,0
ADD BX,SP
XCHG DX,BX
MOV BX,8
MOV SI,DX
MOV [SI],BX
_CC71:
MOV BX,0
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,32
CMP DX,BX
MOV BX,CX
JGE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC72
MOV BX,94
PUSH BX ;
CALL _Uconout
ADD SP,2
MOV BX,0
ADD BX,SP
MOV BX,[BX]
MOV DX,64
ADD BX,DX
PUSH BX ;
CALL _Uconout
ADD SP,2
JMP _CC73
_CC72:
MOV BX,0
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Uconout
ADD SP,2
_CC73:
MOV BX,0
ADD BX,SP
MOV BX,[BX]
ADD SP,2
RET
JMP _CC65
_CC66:
CALL _CCSWITCH
DW _CC67,3
DW _CC68,10
DW _CC69,13
DW _CC70,127
DW 0
JMP _CC71
_CC65:
ADD SP,2
RET
PUBLIC _Dcio
_Dcio:
POP SI
POP DX
PUSH DX
PUSH SI
MOV AH,6 ;Direct I/O
INT 21H
JNZ Dcio1
XOR AL,AL ;No char.
Dcio1:
MOV BL,AL
XOR BH,BH
RET
PUBLIC _Uwrite
_Uwrite:
SUB SP,2
MOV BX,0
ADD BX,SP
XCHG DX,BX
MOV BX,4
ADD BX,SP
MOV BX,[BX]
MOV SI,DX
MOV [SI],BX
MOV BX,6
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Umode
ADD SP,2
JMP _CC78
_CC79:
MOV BX,6
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Useterr
ADD SP,2
MOV BX,-1
ADD SP,2
RET
_CC80:
_CC81:
_CC82:
_CC83:
JMP _CC77
_CC78:
CALL _CCSWITCH
DW _CC80,2
DW _CC81,3
DW _CC82,6
DW _CC83,7
DW 0
JMP _CC79
_CC77:
MOV BX,OFFSET _Udevice
XCHG DX,BX
MOV BX,6
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
MOV BX,[BX]
JMP _CC86
_CC87:
_CC88:
MOV BX,4
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
MOV SI,DX
MOV [SI],BX
INC BX
OR BX,BX
JNZ $+5
JMP _CC89
MOV BX,8
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
DEC BX
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
CALL _Dcio
ADD SP,2
JMP _CC88
_CC89:
MOV BX,0
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,4
ADD BX,SP
MOV BX,[BX]
SUB DX,BX
MOV BX,DX
ADD SP,2
RET
_CC90:
_CC91:
MOV BX,4
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
DEC BX
MOV SI,DX
MOV [SI],BX
INC BX
OR BX,BX
JNZ $+5
JMP _CC92
MOV BX,8
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
DEC BX
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,1280
PUSH BX ;
CALL _Umsdos
ADD SP,8
JMP _CC91
_CC92:
MOV BX,0
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,4
ADD BX,SP
MOV BX,[BX]
SUB DX,BX
MOV BX,DX
ADD SP,2
RET
_CC93:
MOV BX,8
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,6
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,OFFSET _Ufd
XCHG DX,BX
MOV BX,10
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
MOV BX,[BX]
PUSH BX ;
MOV BX,16384
PUSH BX ;
CALL _Umsdos
ADD SP,8
ADD SP,2
RET
JMP _CC85
_CC86:
CALL _CCSWITCH
DW _CC87,1
DW _CC90,2
DW 0
JMP _CC93
_CC85:
ADD SP,2
RET
PUBLIC _Uconout
_Uconout:
MOV BX,2
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Dcio
ADD SP,2
MOV BX,2
ADD BX,SP
MOV BX,[BX]
RET
PUBLIC _Umode
_Umode:
MOV BX,2
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,10
CMP DX,BX
MOV BX,CX
JAE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC96
MOV BX,OFFSET _Ustatus
XCHG DX,BX
MOV BX,2
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
MOV BX,[BX]
RET
_CC96:
MOV BX,0
RET
PUBLIC _Useteof
_Useteof:
MOV BX,OFFSET _Ustatus
XCHG DX,BX
MOV BX,2
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
PUSH BX ;
MOV BX,[BX]
XCHG DX,BX
MOV BX,4
OR BX,DX
POP DX
MOV SI,DX
MOV [SI],BX
RET
PUBLIC _Uclreof
_Uclreof:
MOV BX,OFFSET _Ustatus
XCHG DX,BX
MOV BX,2
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
PUSH BX ;
MOV BX,[BX]
XCHG DX,BX
MOV BX,-5
AND BX,DX
POP DX
MOV SI,DX
MOV [SI],BX
RET
PUBLIC _Useterr
_Useterr:
MOV BX,OFFSET _Ustatus
XCHG DX,BX
MOV BX,2
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
PUSH BX ;
MOV BX,[BX]
XCHG DX,BX
MOV BX,8
OR BX,DX
POP DX
MOV SI,DX
MOV [SI],BX
RET
PUBLIC _Ualloc
_Ualloc:
SUB SP,2
MOV BX,6
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,1
PUSH BX ;
CALL _avail
ADD SP,2
POP DX
CMP DX,BX
MOV BX,CX
JAE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC101
MOV BX,4
ADD BX,SP
MOV BX,[BX]
OR BX,BX
JNZ $+5
JMP _CC102
MOV BX,_Umemptr
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,10
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _pad
ADD SP,6
_CC102:
MOV BX,0
ADD BX,SP
XCHG DX,BX
MOV BX,_Umemptr
MOV SI,DX
MOV [SI],BX
MOV BX,_Umemptr
XCHG DX,BX
MOV BX,6
ADD BX,SP
MOV BX,[BX]
ADD BX,DX
MOV _Umemptr,BX
MOV BX,0
ADD BX,SP
MOV BX,[BX]
ADD SP,2
RET
_CC101:
MOV BX,0
ADD SP,2
RET
PUBLIC _Umsdos
_Umsdos:
POP SI ;Return address
POP AX ;Load all the registers
POP BX
POP CX
POP DX
PUSH DX ;Now restore them
PUSH CX
PUSH BX
PUSH AX
PUSH SI
INT 21H ;Issue the call do DOS
JNC UMSDOS1 ;Jump if no error
MOV _ERRNO,AX
MOV AX,-2 ;ERR
UMSDOS1:
MOV BX,AX
XOR CX,CX ;Zero in CX
RET
EXTRN _strchr:NEAR
EXTRN _fgetc:NEAR
EXTRN _strcmp:NEAR
EXTRN _avail:NEAR
EXTRN _exit:NEAR
EXTRN _seek:NEAR
EXTRN _isspace:NEAR
EXTRN _pad:NEAR
EXTRN _main:NEAR
EXTRN _CCSWITCH:NEAR
INCLUDE EPILOG.H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -