📄 csyslib.mac
字号:
INCLUDE PROLOG.H
PUBLIC _errno
_errno DW 0
PUBLIC _Ucnt
_Ucnt DW 1
PUBLIC _Uvec
_Uvec DW 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
PUBLIC _Ustatus
_Ustatus DW 1,2,3
DW 0,0,0,0,0,0,0
PUBLIC _Udevice
_Udevice DW 1,1,1
DW 0,0,0,0,0,0,0
PUBLIC _Unextc
_Unextc DW -1,-1,-1
DW 0,0,0,0,0,0,0
PUBLIC _Ufd
_Ufd DW 0,1,2
DW 0,0,0,0,0,0,0
PUBLIC _Umemptr
_Umemptr DW 0
PUBLIC _Uarg1
_Uarg1 DB 42,0
_CC1:
PUBLIC _Umain
_Umain:
CALL _Uparse
MOV BX,_Ucnt
PUSH BX ;
MOV BX,OFFSET _Uvec
PUSH BX ;
CALL _main
ADD SP,4
MOV BX,0
PUSH BX ;
CALL _exit
ADD SP,2
RET
PUBLIC _Uparse
_Uparse:
SUB SP,4
MOV BX,2
ADD BX,SP
XCHG DX,BX
MOV BX,128
MOV SI,DX
MOV [SI],BX
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,4
ADD BX,SP
MOV BX,[BX]
MOV DX,1
ADD BX,DX
PUSH BX ;
MOV BX,1
PUSH BX ;
CALL _Ualloc
ADD SP,4
POP DX
MOV SI,DX
MOV [SI],BX
MOV BX,2
ADD BX,SP
PUSH BX ;
MOV BX,2
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Ugcmdtl
ADD SP,2
POP DX
MOV SI,DX
MOV [SI],BX
MOV BX,OFFSET _Uvec
XCHG DX,BX
MOV BX,OFFSET _Uarg1
MOV SI,DX
MOV [SI],BX
_CC4:
MOV BX,0
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
OR BX,BX
JNZ $+5
JMP _CC5
MOV BX,0
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
CALL _isspace
ADD SP,2
OR BX,BX
JNZ $+5
JMP _CC6
MOV BX,0
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC4
_CC6:
MOV BX,0
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
JMP _CC9
_CC10:
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,2
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,OFFSET _CC3+0
PUSH BX ;
MOV BX,0
PUSH BX ;
CALL _Uredirec
ADD SP,6
POP DX
MOV SI,DX
MOV [SI],BX
JMP _CC4
_CC11:
MOV BX,0
ADD BX,SP
MOV BX,[BX]
MOV DX,1
ADD BX,DX
MOV AL,[BX]
CBW
MOV BX,AX
XCHG DX,BX
MOV BX,62
CMP DX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC12
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,2
ADD BX,SP
MOV BX,[BX]
MOV DX,1
ADD BX,DX
PUSH BX ;
MOV BX,OFFSET _CC3+2
PUSH BX ;
MOV BX,1
PUSH BX ;
CALL _Uredirec
ADD SP,6
POP DX
MOV SI,DX
MOV [SI],BX
JMP _CC13
_CC12:
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,2
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,OFFSET _CC3+4
PUSH BX ;
MOV BX,1
PUSH BX ;
CALL _Uredirec
ADD SP,6
POP DX
MOV SI,DX
MOV [SI],BX
_CC13:
JMP _CC4
_CC14:
MOV BX,_Ucnt
XCHG DX,BX
MOV BX,20
CMP DX,BX
MOV BX,CX
JGE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC15
MOV BX,OFFSET _Uvec
XCHG DX,BX
MOV BX,_Ucnt
INC BX
MOV _Ucnt,BX
DEC 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
_CC15:
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,2
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Ufield
ADD SP,2
POP DX
MOV SI,DX
MOV [SI],BX
JMP _CC8
_CC9:
CALL _CCSWITCH
DW _CC10,60
DW _CC11,62
DW 0
JMP _CC14
_CC8:
JMP _CC4
_CC5:
ADD SP,4
RET
_CC3: DB 114,0,97,0,119,0
PUBLIC _Ugcmdtl
_Ugcmdtl:
MOV AH,62H ;Get program segment prefix
INT 21H
MOV AX,DS ;Get our segment
MOV ES,AX ;Will be destination
MOV DS,BX ;PSP segment is source
MOV SI,80H ;Offset to command tail byte count
MOV CL,[SI] ;Get byte count
MOV BX,CX ;Save for return
INC SI ;Bump pointer
POP AX ;Return address
POP DI ;mypt
PUSH DI ;Restore
PUSH AX
CLD ;Set direction
REP MOVSB ;Move it in
MOV BYTE PTR ES:[DI],0 ;Move in Null
MOV AX,ES ;Restore our segment
MOV DS,AX
XOR CX,CX ;Zero in CX
RET
PUBLIC _Ufield
_Ufield:
_CC18:
MOV BX,2
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
OR BX,BX
JNZ $+5
JMP _CC19
MOV BX,2
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
CALL _isspace
ADD SP,2
OR BX,BX
JNZ $+5
JMP _CC20
MOV BX,2
ADD BX,SP
MOV BX,[BX]
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BL
MOV BX,2
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
RET
_CC20:
MOV BX,2
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
JMP _CC18
_CC19:
MOV BX,2
ADD BX,SP
MOV BX,[BX]
RET
PUBLIC _Uredirec
_Uredirec:
SUB SP,2
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,10
ADD BX,SP
MOV DX,BX
MOV BX,[BX]
INC BX
MOV SI,DX
MOV [SI],BX
POP DX
MOV SI,DX
MOV [SI],BX
MOV BX,8
ADD BX,SP
PUSH BX ;
MOV BX,10
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Ufield
ADD SP,2
POP DX
MOV SI,DX
MOV [SI],BX
MOV BX,0
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,8
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,8
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
CALL _Uopen
ADD SP,6
XCHG DX,BX
MOV BX,-2
CMP DX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC22
MOV BX,82
PUSH BX ;
CALL _exit
ADD SP,2
_CC22:
MOV BX,8
ADD BX,SP
MOV BX,[BX]
ADD SP,2
RET
PUBLIC _Uopen
_Uopen:
SUB SP,2
MOV BX,OFFSET _CC23+0
PUSH BX ;
MOV BX,8
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
PUSH BX ;
CALL _strchr
ADD SP,4
OR BX,BX
MOV BX,CX
JNZ $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC24
MOV BX,-2
ADD SP,2
RET
_CC24:
MOV BX,OFFSET _Unextc
XCHG DX,BX
MOV BX,4
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,8
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,OFFSET _CC23+5
PUSH BX ;
CALL _strcmp
ADD SP,4
OR BX,BX
JZ $+5
JMP _CC25
MOV BX,OFFSET _Udevice
XCHG DX,BX
MOV BX,4
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,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,3
MOV SI,DX
MOV [SI],BX
MOV BX,4
ADD BX,SP
MOV BX,[BX]
ADD SP,2
RET
_CC25:
MOV BX,8
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,OFFSET _CC23+10
PUSH BX ;
CALL _strcmp
ADD SP,4
OR BX,BX
JZ $+5
JMP _CC26
MOV BX,OFFSET _Udevice
XCHG DX,BX
MOV BX,4
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
XCHG DX,BX
MOV BX,2
MOV SI,DX
MOV [SI],BX
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,2
MOV SI,DX
MOV [SI],BX
MOV BX,4
ADD BX,SP
MOV BX,[BX]
ADD SP,2
RET
_CC26:
MOV BX,OFFSET _Udevice
XCHG DX,BX
MOV BX,4
ADD BX,SP
MOV BX,[BX]
ADD BX,BX
ADD BX,DX
XCHG DX,BX
MOV BX,0
MOV SI,DX
MOV [SI],BX
MOV BX,6
ADD BX,SP
MOV BX,[BX]
MOV AL,[BX]
CBW
MOV BX,AX
JMP _CC29
_CC30:
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,10
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,15616
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 _CC31
MOV BX,-2
ADD SP,2
RET
_CC31:
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,1
MOV SI,DX
MOV [SI],BX
MOV BX,OFFSET _Ufd
XCHG DX,BX
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
JMP _CC28
_CC32:
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,10
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,15618
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 _CC33
MOV BX,-2
ADD SP,2
RET
_CC33:
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,3
MOV SI,DX
MOV [SI],BX
MOV BX,OFFSET _Ufd
XCHG DX,BX
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
JMP _CC28
_CC34:
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,10
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,15617
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
JE $+3
INC BX
OR BX,BX
JNZ $+5
JMP _CC35
MOV BX,0
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,4
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,15872
PUSH BX ;
CALL _Umsdos
ADD SP,8
MOV BX,8
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,16640
PUSH BX ;
CALL _Umsdos
ADD SP,8
_CC35:
_CC36:
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,10
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,15360
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 _CC37
MOV BX,-2
ADD SP,2
RET
_CC37:
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
MOV BX,OFFSET _Ufd
XCHG DX,BX
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
JMP _CC28
_CC38:
MOV BX,0
ADD BX,SP
PUSH BX ;
MOV BX,10
ADD BX,SP
MOV BX,[BX]
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,0
PUSH BX ;
MOV BX,15618
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 _CC39
JMP _CC36
_CC39:
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,1
MOV SI,DX
MOV [SI],BX
MOV BX,OFFSET _Ufd
XCHG DX,BX
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -