📄 pscreen.cod
字号:
; Static Name Aliases
;
; $S116_buffrecs EQU buffrecs
TITLE pscreen
; NAME pscreen.C
.287
_TEXT SEGMENT BYTE PUBLIC 'CODE'
_TEXT ENDS
_DATA SEGMENT WORD PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT WORD PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT WORD PUBLIC 'BSS'
_BSS ENDS
DGROUP GROUP CONST, _BSS, _DATA
ASSUME CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP
EXTRN _inp:NEAR
EXTRN __chkstk:NEAR
EXTRN __fmalloc:NEAR
EXTRN _vidmode:NEAR
_DATA SEGMENT
$S116_buffrecs DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
DD 00H
_DATA ENDS
_TEXT SEGMENT
; Line 19
PUBLIC _pushscreen
_pushscreen PROC NEAR
*** 000000 55 push bp
*** 000001 8b ec mov bp,sp
*** 000003 b8 0c 00 mov ax,12
*** 000006 e8 00 00 call __chkstk
*** 000009 57 push di
*** 00000a 56 push si
; Line 20
; buff = 4
; retrace = 6
; scr_ofs = -10
; bp = -6
; i = -12
; register si = c
; Line 26
*** 00000b 8b 7e 04 mov di,[bp+4] ;buff
*** 00000e b1 02 mov cl,2
*** 000010 d3 e7 shl di,cl
*** 000012 81 c7 00 00 add di,OFFSET DGROUP:$S116_buffrecs
*** 000016 8b 05 mov ax,[di]
*** 000018 0b 45 02 or ax,[di+2]
*** 00001b 75 18 jne $I126
; Line 27
*** 00001d b8 a0 0f mov ax,4000
*** 000020 50 push ax
*** 000021 e8 00 00 call __fmalloc
*** 000024 83 c4 02 add sp,2
*** 000027 89 05 mov [di],ax
*** 000029 89 55 02 mov [di+2],dx
*** 00002c 0b c2 or ax,dx
*** 00002e 75 05 jne $I126
; Line 28
*** 000030 2b c0 sub ax,ax
*** 000032 e9 80 00 jmp $EX120
$I126:
*** 000035 8b 5e 04 mov bx,[bp+4] ;buff
*** 000038 d1 e3 shl bx,1
*** 00003a d1 e3 shl bx,1
*** 00003c 8b 87 00 00 mov ax,WORD PTR $S116_buffrecs[bx]
*** 000040 8b 97 02 00 mov dx,WORD PTR $S116_buffrecs[bx+2]
*** 000044 89 46 fa mov [bp-6],ax ;bp
*** 000047 89 56 fc mov [bp-4],dx
; Line 31
*** 00004a e8 00 00 call _vidmode
*** 00004d 3d 07 00 cmp ax,7
*** 000050 75 11 jne $I128
; Line 32
; Line 33
*** 000052 c7 46 f6 00 00 mov WORD PTR [bp-10],0 ;scr_ofs
*** 000057 c7 46 f8 00 b0 mov WORD PTR [bp-8],-20480
; Line 34
*** 00005c c7 46 06 00 00 mov WORD PTR [bp+6],0 ;retrace
; Line 35
; Line 36
*** 000061 eb 0a jmp SHORT $I129
$I128:
; Line 37
*** 000063 c7 46 f6 00 00 mov WORD PTR [bp-10],0 ;scr_ofs
*** 000068 c7 46 f8 00 b8 mov WORD PTR [bp-8],-18432
$I129:
; Line 39
*** 00006d c7 46 f4 00 00 mov WORD PTR [bp-12],0 ;i
$F130:
; Line 40
; Line 41
*** 000072 c4 5e f6 les bx,[bp-10] ;scr_ofs
*** 000075 83 46 f6 02 add WORD PTR [bp-10],2 ;scr_ofs
*** 000079 26 8b 37 mov si,es:[bx]
; Line 42
*** 00007c 83 7e 06 00 cmp WORD PTR [bp+6],0 ;retrace
*** 000080 74 1c je $I134
; Line 43
; Line 44
$WC136:
*** 000082 b8 da 03 mov ax,986
*** 000085 50 push ax
*** 000086 e8 00 00 call _inp
*** 000089 83 c4 02 add sp,2
*** 00008c a8 01 test al,1
*** 00008e 75 f2 jne $WC136
$WB137:
; Line 45
*** 000090 b8 da 03 mov ax,986
*** 000093 50 push ax
*** 000094 e8 00 00 call _inp
*** 000097 83 c4 02 add sp,2
*** 00009a a8 01 test al,1
*** 00009c 74 f2 je $WB137
; Line 46
; Line 47
$I134:
*** 00009e c4 5e fa les bx,[bp-6] ;bp
*** 0000a1 83 46 fa 02 add WORD PTR [bp-6],2 ;bp
*** 0000a5 26 89 37 mov es:[bx],si
; Line 48
*** 0000a8 ff 46 f4 inc WORD PTR [bp-12] ;i
*** 0000ab 81 7e f4 d0 07 cmp WORD PTR [bp-12],2000 ;i
*** 0000b0 7c c0 jl $F130
; Line 50
*** 0000b2 b8 01 00 mov ax,1
$EX120:
*** 0000b5 5e pop si
*** 0000b6 5f pop di
*** 0000b7 8b e5 mov sp,bp
*** 0000b9 5d pop bp
*** 0000ba c3 ret
_pushscreen ENDP
; Line 54
PUBLIC _popscreen
_popscreen PROC NEAR
*** 0000bb 55 push bp
*** 0000bc 8b ec mov bp,sp
*** 0000be b8 0c 00 mov ax,12
*** 0000c1 e8 00 00 call __chkstk
*** 0000c4 56 push si
; Line 55
; buff = 4
; retrace = 6
; scr_ofs = -10
; bp = -6
; i = -12
; register si = c
; Line 61
*** 0000c5 8b 5e 04 mov bx,[bp+4] ;buff
*** 0000c8 d1 e3 shl bx,1
*** 0000ca d1 e3 shl bx,1
*** 0000cc 8b 87 00 00 mov ax,WORD PTR $S116_buffrecs[bx]
*** 0000d0 0b 87 02 00 or ax,WORD PTR $S116_buffrecs[bx+2]
*** 0000d4 75 04 jne $I148
; Line 62
*** 0000d6 2b c0 sub ax,ax
*** 0000d8 eb 7e jmp SHORT $EX143
$I148:
*** 0000da 8b 5e 04 mov bx,[bp+4] ;buff
*** 0000dd d1 e3 shl bx,1
*** 0000df d1 e3 shl bx,1
*** 0000e1 8b 87 00 00 mov ax,WORD PTR $S116_buffrecs[bx]
*** 0000e5 8b 97 02 00 mov dx,WORD PTR $S116_buffrecs[bx+2]
*** 0000e9 89 46 fa mov [bp-6],ax ;bp
*** 0000ec 89 56 fc mov [bp-4],dx
; Line 65
*** 0000ef e8 00 00 call _vidmode
*** 0000f2 3d 07 00 cmp ax,7
*** 0000f5 75 0f jne $I149
; Line 66
; Line 67
*** 0000f7 c7 46 f6 00 00 mov WORD PTR [bp-10],0 ;scr_ofs
*** 0000fc c7 46 f8 00 b0 mov WORD PTR [bp-8],-20480
; Line 68
*** 000101 c7 46 06 00 00 mov WORD PTR [bp+6],0 ;retrace
; Line 69
; Line 70
$I149:
*** 000106 c7 46 f6 00 00 mov WORD PTR [bp-10],0 ;scr_ofs
*** 00010b c7 46 f8 00 b8 mov WORD PTR [bp-8],-18432
; Line 72
*** 000110 c7 46 f4 00 00 mov WORD PTR [bp-12],0 ;i
$F150:
; Line 73
; Line 74
*** 000115 c4 5e fa les bx,[bp-6] ;bp
*** 000118 83 46 fa 02 add WORD PTR [bp-6],2 ;bp
*** 00011c 26 8b 37 mov si,es:[bx]
; Line 75
*** 00011f 83 7e 06 00 cmp WORD PTR [bp+6],0 ;retrace
*** 000123 74 1c je $I154
; Line 76
; Line 77
$WC155:
*** 000125 b8 da 03 mov ax,986
*** 000128 50 push ax
*** 000129 e8 00 00 call _inp
*** 00012c 83 c4 02 add sp,2
*** 00012f a8 01 test al,1
*** 000131 75 f2 jne $WC155
$WB156:
; Line 78
*** 000133 b8 da 03 mov ax,986
*** 000136 50 push ax
*** 000137 e8 00 00 call _inp
*** 00013a 83 c4 02 add sp,2
*** 00013d a8 01 test al,1
*** 00013f 74 f2 je $WB156
; Line 79
; Line 80
$I154:
*** 000141 c4 5e f6 les bx,[bp-10] ;scr_ofs
*** 000144 83 46 f6 02 add WORD PTR [bp-10],2 ;scr_ofs
*** 000148 26 89 37 mov es:[bx],si
; Line 81
*** 00014b ff 46 f4 inc WORD PTR [bp-12] ;i
*** 00014e 81 7e f4 d0 07 cmp WORD PTR [bp-12],2000 ;i
*** 000153 7c c0 jl $F150
; Line 83
*** 000155 b8 01 00 mov ax,1
$EX143:
*** 000158 5e pop si
*** 000159 8b e5 mov sp,bp
*** 00015b 5d pop bp
*** 00015c c3 ret
_popscreen ENDP
_TEXT ENDS
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -