⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 csyslib.mac

📁 这是一个8086和8088系列机的编译器的源码
💻 MAC
📖 第 1 页 / 共 2 页
字号:
 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 + -