; Segment Number : 5 ; Alloc Size : 1360h ; Offset in the file: 18570h Length: 1353h ; Attributes (0D60): CODE Pure Preloaded Relocations DPL: 3 ; 様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様 ; Segment type: Regular cseg05 segment para public 'CODE' use16 assume cs:cseg05 assume es:nothing, ss:nothing, ds:dseg08, fs:nothing, gs:nothing db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; ; ; External Entry #500 into the Module ; Attributes (0003): Fixed Exported Shared dataseg ; ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 ; Attributes: bp-based frame public UserRepaintDisable UserRepaintDisable proc far var_2 = byte ptr -2 arg_0 = byte ptr 6 mov ax, ds ; DISPLAY_500 nop push bp mov bp, sp push ds mov ds, ax mov al, [bp+arg_0] mov byte_1947_5689, al or al, al jnz loc_17DB_2A cmp byte_1947_568A, 0FFh jnz loc_17DB_2A call sub_17DB_F8 mov byte_1947_568A, 0 loc_17DB_2A: ; CODE XREF: UserRepaintDisable+11j ; UserRepaintDisable+18j lea sp, [bp+var_2] pop ds pop bp retf 2 UserRepaintDisable endp ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 Int10Hook db 55h ; U db 1Eh ; db 6 ; db 66h ; f db 51h ; Q db 66h ; f dd unk_1947_B960 db 8Eh ; db 0D9h ; db 80h ; db 0FCh ; db 12h ; db 74h ; t db 14h ; db 3Dh ; = db 14h ; db 4Fh ; O db 74h ; t db 0Fh ; db 3Dh ; = db 10h ; db 4Fh ; O db 74h ; t db 0Ah ; db 3Dh ; = db 11h ; db 4Fh ; O db 74h ; t db 5 ; db 9Ah ; dd _FlushOffscreenBitmaps db 66h ; f db 61h ; a db 66h ; f db 59h ; Y db 7 ; db 1Fh ; db 5Dh ; ] db 2Eh ; . db 0FFh ; db 2Eh ; . db 4 ; db 0 ; db 2Eh ; . db 8Bh ; db 0C0h ; db 2Eh ; . db 8Bh ; db 0C0h ; db 2Eh ; . db 8Bh ; db 0C0h ; db 2Eh ; . db 8Bh ; db 0C0h ; db 90h ; db 3Dh ; = db 2 ; db 40h ; @ db 74h ; t db 0Ah ; db 3Dh ; = db 1 ; db 40h ; @ db 74h ; t db 5 ; db 2Eh ; . db 0FFh ; db 2Eh ; . db 0 ; db 0 ; ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 push bp mov bp, sp push ds pushad mov bx, seg dseg08 mov ds, bx mov ah, byte_1947_5688 add ah, ah jb loc_17DB_A4 and ax, 2 mov bx, ax call off_1947_5684[bx] popad pop ds and word ptr [bp+6], 0FFFEh pop bp iret ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_A4: ; CODE XREF: cseg05:0090j popad pop ds or word ptr [bp+6], 1 pop bp iret ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 DevToForeground_FAR proc far ; CODE XREF: REENABLE1+E1P call DevToForeground retf DevToForeground_FAR endp ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 DevToForeground proc near ; CODE XREF: cseg05:0097j ; DevToForeground_FARp ; DATA XREF: dseg08:5686o mov fFromBackground, 1 cmp bReEnable, 0 jnz loc_17DB_C2 call ResetHiResMode loc_17DB_C2: ; CODE XREF: DevToForeground+Aj call _RestoreDeviceBitmapHeap mov byte ptr TOFULLDOS, 0 mov CursorOff, 0 call _UpdateHardwareRegs mov al, MotionCompOnCopy mov MotionCompOn, al cmp ISBUSMASTER, 0 jz sub_17DB_F8 cmp MotionCompOnCopy, 0 jnz sub_17DB_F8 mov al, PUNTSTRCOPY mov ah, BUSMASTERUSEDCOPY mov PUNTSTR, al mov BusMasterUsed, ah DevToForeground endp ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 sub_17DB_F8 proc near ; CODE XREF: UserRepaintDisable+1Ap ; DevToForeground+30j ; DevToForeground+37j mov ax, word ptr RepaintAddr or ax, word ptr RepaintAddr+2 jz locret_17DB_112 cmp byte_1947_5689, 0 jz loc_17DB_10E mov byte_1947_568A, 0FFh retn ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_10E: ; CODE XREF: sub_17DB_F8+Ej call RepaintAddr locret_17DB_112: ; CODE XREF: sub_17DB_F8+7j retn sub_17DB_F8 endp ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 DevToBackground: ; CODE XREF: cseg05:0097j ; DATA XREF: dseg08:5684o cmp lpSecondDev, 0 jz loc_17DB_12B les si, lpSecondDev lock or word ptr es:[si+1Ch], 10h les si, lpPrimaryDev jmp short loc_17DB_12F ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_12B: ; CODE XREF: cseg05:0119j les si, lpDriverPDevice loc_17DB_12F: ; CODE XREF: cseg05:0129j lock or word ptr es:[si+1Ch], 10h mov byte ptr TOFULLDOS, 1 mov ax, wBpp mov wBppOld, ax call PhysicalDisable push fs mov fs, selVGA mov byte ptr fs:3CEh, 82h ; '' mov al, fs:3CFh and al, 0FEh mov fs:3CFh, al pop fs mov al, MotionCompOn mov ah, 1 mov MotionCompOn, ah mov MotionCompOnCopy, al cmp ISBUSMASTER, 0 jz locret_17DB_181 mov al, PUNTSTR mov ah, BusMasterUsed or ax, 22h mov PUNTSTR, al mov BusMasterUsed, ah locret_17DB_181: ; CODE XREF: cseg05:016Ej retn ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 DisableSwitching db 0B8h ; db 3 ; db 40h ; @ db 0CDh ; db 2Fh ; / db 80h ; db 0Eh ; db 88h ; db 56h ; V db 80h ; db 0C3h ; EnableSwitching db 0B8h ; db 4 ; db 40h ; @ db 0CDh ; db 2Fh ; / db 80h ; db 26h ; & db 88h ; db 56h ; V db 7Fh ;  db 0C3h ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; ; ; External Entry #600 into the Module ; Attributes (0003): Fixed Exported Shared dataseg ; ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 ; Attributes: bp-based frame public InkReady InkReady proc far var_2 = byte ptr -2 arg_0 = dword ptr 6 mov ax, ds ; DISPLAY_600 nop push bp mov bp, sp push ds mov ds, ax push esi push edi mov al, 0 xchg al, fInCursorCode cmp al, 0FFh jnz loc_17DB_1C4 call [bp+arg_0] mov fInCursorCode, 0FFh mov ax, 1 jmp short loc_17DB_1D3 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_1C4: ; CODE XREF: InkReady+15j mov eax, [bp+arg_0] mov lpfnUpdateInking, eax mov fInkAvailable, 1 xor ax, ax loc_17DB_1D3: ; CODE XREF: InkReady+22j pop edi pop esi lea sp, [bp+var_2] pop ds pop bp retf 4 InkReady endp ; ; External Entry #601 into the Module ; Attributes (0003): Fixed Exported Shared dataseg ; ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 ; Attributes: bp-based frame public GetLPDevice GetLPDevice proc far var_2 = byte ptr -2 mov ax, ds ; DISPLAY_601 nop push bp mov bp, sp push ds mov ds, ax mov ax, word ptr lpDriverPDevice mov dx, word ptr lpDriverPDevice+2 lea sp, [bp+var_2] pop ds pop bp retf GetLPDevice endp ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 TurnCursorOn_IO: ; CODE XREF: SetCursor+1DEj ; UploadCursor+78j fRefreshCursor+16j ; DATA XREF: dseg08:83ECo push dx push ax mov dx, 3CEh mov ax, 2609h out dx, ax ; EGA: graph 1 and 2 addr reg: ; unknown register pop ax pop dx mov dx, 3CEh mov al, 82h ; '' out dx, al ; EGA: graph 1 and 2 addr reg: ; unknown register in ax, dx ; EGA: graph 1 and 2 addr reg: ; or ah, 1 out dx, ax ; EGA: graph 1 and 2 addr reg: ; set/reset. ; Data bits 0-3 select planes for write mode 00 mov CursorOff, 0 retn ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 TurnCursorOff_IO: ; CODE XREF: _CursorToSoftware+2j ; SetCursor+229j SetCursor+277j ; CheckPanning_MMIO+C8j ; UploadCursor+65j ; DATA XREF: dseg08:83EEo push dx push ax mov dx, 3CEh mov ax, 2609h out dx, ax ; EGA: graph 1 and 2 addr reg: ; unknown register pop ax pop dx mov dx, 3CEh mov al, 82h ; '' out dx, al ; EGA: graph 1 and 2 addr reg: ; unknown register in ax, dx ; EGA: graph 1 and 2 addr reg: ; and ah, 0FEh out dx, ax ; EGA: graph 1 and 2 addr reg: ; set/reset. ; Data bits 0-3 select planes for write mode 00 mov CursorOff, 1 retn ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 TurnCursorOn_MMIO_5 db 0Fh ; db 0A0h ; db 8Eh ; db 26h ; & db 88h ; db 0 ; db 64h ; d db 0A1h ; db 0 ; db 10h ; db 83h ; db 0C8h ; db 1 ; db 64h ; d db 0A3h ; db 0 ; db 10h ; db 0Fh ; db 0A1h ; db 0C6h ; db 6 ; db 63h ; c db 90h ; db 0 ; db 0C3h ; TurnCursorOff_MMIO_5 db 0Fh ; db 0A0h ; db 8Eh ; db 26h ; & db 88h ; db 0 ; db 64h ; d db 0A1h ; db 0 ; db 10h ; db 83h ; db 0E0h ; db 0FEh ; db 64h ; d db 0A3h ; db 0 ; db 10h ; db 0Fh ; db 0A1h ; db 0C6h ; db 6 ; db 63h ; c db 90h ; db 1 ; db 0C3h ; ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 SetCursorPosition proc near ; CODE XREF: CheckPanning_MMIO+313p ; UploadCursor+5Cp UploadCursor+8Bp push esi push edi push ebx push ecx cmp bx, wScreenHeight jg loc_17DB_347 cmp cx, wScreenWidth jg loc_17DB_347 test PANNING_FLAG, 2 jz loc_17DB_347 and ebx, 0FFFFh and ecx, 0FFFFh mov ax, cxVisScreenLeft mov dx, cxVisScreenRight mov si, cyVisScreenTop mov di, cyVisScreenBottom and PANNING_FLAG, 0FEh cmp cx, dx jbe loc_17DB_2DA mov cxVisScreenRight, cx sub cx, dx add cxVisScreenLeft, cx cmp bytespp, 2 jz loc_17DB_2CB jb loc_17DB_2CE imul ecx, 3 jmp short loc_17DB_2CE ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_2CB: ; CODE XREF: SetCursorPosition+57j add ecx, ecx loc_17DB_2CE: ; CODE XREF: SetCursorPosition+59j ; SetCursorPosition+5Fj add StartAddress, ecx or PANNING_FLAG, 1 jmp short loc_17DB_307 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_2DA: ; CODE XREF: SetCursorPosition+45j cmp cx, ax jnb loc_17DB_307 mov cxVisScreenLeft, cx sub cx, ax neg cx sub cxVisScreenRight, cx cmp bytespp, 2 jz loc_17DB_2FA jb loc_17DB_2FD imul ecx, 3 jmp short loc_17DB_2FD ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_2FA: ; CODE XREF: SetCursorPosition+86j add ecx, ecx loc_17DB_2FD: ; CODE XREF: SetCursorPosition+88j ; SetCursorPosition+8Ej sub StartAddress, ecx or PANNING_FLAG, 1 loc_17DB_307: ; CODE XREF: SetCursorPosition+6Ej ; SetCursorPosition+72j cmp bx, di jbe loc_17DB_327 mov cyVisScreenBottom, bx sub bx, di add cyVisScreenTop, bx imul ebx, cxScreenBytes add StartAddress, ebx or PANNING_FLAG, 1 jmp short loc_17DB_347 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_327: ; CODE XREF: SetCursorPosition+9Fj cmp bx, si jnb loc_17DB_347 mov cyVisScreenTop, bx sub bx, si neg bx sub cyVisScreenBottom, bx imul ebx, cxScreenBytes sub StartAddress, ebx or PANNING_FLAG, 1 loc_17DB_347: ; CODE XREF: SetCursorPosition+Cj ; SetCursorPosition+14j ; SetCursorPosition+1Dj ; SetCursorPosition+BBj ; SetCursorPosition+BFj pop ecx pop ebx cmp selVGA, 0 jnz loc_17DB_357 call SetCursorPosition_IO jmp short loc_17DB_35A ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_357: ; CODE XREF: SetCursorPosition+E6j call SetCursorPosition_MMIO loc_17DB_35A: ; CODE XREF: SetCursorPosition+EBj pop edi pop esi retn SetCursorPosition endp ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 SetCursorPosition_IO proc near ; CODE XREF: SetCursorPosition+E8p test PANNING_FLAG, 2 jz loc_17DB_3D0 push ebx push ecx test PANNING_FLAG, 1 jz loc_17DB_3C4 mov eax, StartAddress mov bx, _pPrimary add eax, [bx] shr eax, 2 cmp wBpp, 18h jnz loc_17DB_39D xor edx, edx mov ebx, 6 div ebx or dx, dx jz loc_17DB_39A add ax, 1 loc_17DB_39A: ; CODE XREF: SetCursorPosition_IO+36j mul ebx loc_17DB_39D: ; CODE XREF: SetCursorPosition_IO+26j mov cx, ax mov al, 0Dh mov ah, cl cli mov dx, 3D4h out dx, ax ; Video: CRT cntrlr addr ; horizontal total mov al, 0Ch mov ah, ch out dx, ax ; Video: CRT cntrlr addr ; horizontal total shr eax, 8 mov al, 0Eh mov dx, 3CEh out dx, al ; EGA: graph 1 and 2 addr reg: ; unknown register inc dx in al, dx ; EGA port: graphics controller data register and al, 0F0h or al, ah out dx, al ; EGA port: graphics controller data register sti call _CheckOverlay loc_17DB_3C4: ; CODE XREF: SetCursorPosition_IO+10j pop ecx pop ebx sub cx, cxVisScreenLeft sub bx, cyVisScreenTop loc_17DB_3D0: ; CODE XREF: SetCursorPosition_IO+5j push dx push ax push bx mov dx, 3CEh mov al, 9 out dx, al ; EGA: graph 1 and 2 addr reg: ; unknown register in ax, dx ; EGA: graph 1 and 2 addr reg: ; push ax mov ah, 26h ; '&' out dx, ax ; EGA: graph 1 and 2 addr reg: ; set/reset. ; Data bits 0-3 select planes for write mode 00 mov al, 25h ; '%' out dx, al ; EGA: graph 1 and 2 addr reg: ; unknown register in ax, dx ; EGA: graph 1 and 2 addr reg: ; test ah, 80h jz loc_17DB_43F push dx mov dx, 3D4h in al, dx ; Video: CRT cntrlr addr ; push ax mov al, 70h ; 'p' out dx, al ; Video: CRT cntrlr addr ; in ax, dx ; Video: CRT cntrlr addr ; test ah, 2 pop ax out dx, al ; Video: CRT cntrlr addr ; horizontal total pop dx jnz loc_17DB_402 mov al, 20h ; ' ' out dx, al in ax, dx test ah, 2 jz loc_17DB_43F loc_17DB_402: ; CODE XREF: SetCursorPosition_IO+98j mov al, 20h ; ' ' out dx, al in ax, dx shr ax, 3 mov bl, ah push dx and bx, 7 mov dx, cx shl bx, 1 mov cx, bx add bx, 8684h mov ax, [bx] add cx, 8694h mul dx shl eax, 10h mov bx, cx shrd eax, edx, 10h mov cx, csHotX shr eax, 0Ch shr cx, 1 pop dx add cx, ax or cx, cx jz loc_17DB_43F add cx, [bx] loc_17DB_43F: ; CODE XREF: SetCursorPosition_IO+86j ; SetCursorPosition_IO+A1j ; SetCursorPosition_IO+DCj pop ax out dx, ax pop bx pop ax pop dx cmp fDoubleLine, 0 jz loc_17DB_44D shl bx, 1 loc_17DB_44D: ; CODE XREF: SetCursorPosition_IO+EAj cmp WDRVMODE, 13h jnz loc_17DB_456 shl cx, 1 loc_17DB_456: ; CODE XREF: SetCursorPosition_IO+F3j push fs mov fs, selCOP mov fs:1004h, cx cmp wScreenHeight, 400h jnz loc_17DB_46F cmp bx, 29h ; ')' jnz loc_17DB_46F dec bx loc_17DB_46F: ; CODE XREF: SetCursorPosition_IO+108j ; SetCursorPosition_IO+10Dj mov fs:1008h, bx pop fs retn SetCursorPosition_IO endp ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 SetCursorPosition_MMIO proc near ; CODE XREF: SetCursorPosition+EDp test PANNING_FLAG, 2 jz loc_17DB_4FB push ebx push ecx test PANNING_FLAG, 1 jz loc_17DB_4EF mov eax, StartAddress mov bx, _pPrimary add eax, [bx] shr eax, 2 cmp wBpp, 18h jnz loc_17DB_4B5 xor edx, edx mov ebx, 6 div ebx or dx, dx jz loc_17DB_4B2 add ax, 1 loc_17DB_4B2: ; CODE XREF: SetCursorPosition_MMIO+36j mul ebx loc_17DB_4B5: ; CODE XREF: SetCursorPosition_MMIO+26j mov cx, ax mov al, 0Dh mov ah, cl cli push fs mov fs, selVGA mov fs:3D4h, ax mov al, 0Ch mov ah, ch mov fs:3D4h, ax shr eax, 8 mov al, 0Eh mov fs:3CEh, al mov al, fs:3CFh and al, 0F0h and ah, 0Fh or al, ah mov fs:3CFh, al pop fs sti call _CheckOverlay loc_17DB_4EF: ; CODE XREF: SetCursorPosition_MMIO+10j pop ecx pop ebx sub cx, cxVisScreenLeft sub bx, cyVisScreenTop loc_17DB_4FB: ; CODE XREF: SetCursorPosition_MMIO+5j push fs mov fs, selVGA push dx push ax push bx mov al, 9 mov fs:3CEh, al mov ax, fs:3CEh push ax mov al, 26h ; '&' mov fs:3CFh, al mov al, 25h ; '%' mov fs:3CEh, al mov al, fs:3CFh test al, 80h jz loc_17DB_583 mov al, 70h ; 'p' mov fs:3D4h, al mov ax, fs:3D4h test ah, 2 jnz loc_17DB_540 mov al, 20h ; ' ' mov fs:3CEh, al mov al, fs:3CFh test al, 2 jz loc_17DB_583 loc_17DB_540: ; CODE XREF: SetCursorPosition_MMIO+B9j mov al, 20h ; ' ' mov fs:3CEh, al mov ax, fs:3CEh shr ax, 3 mov bl, ah push dx and bx, 7 mov dx, cx shl bx, 1 mov cx, bx add bx, 8684h mov ax, [bx] add cx, 8694h mul dx shl eax, 10h mov bx, cx shrd eax, edx, 10h mov cx, csHotX shr eax, 0Ch shr cx, 1 pop dx add cx, ax or cx, cx jz loc_17DB_583 add cx, [bx] loc_17DB_583: ; CODE XREF: SetCursorPosition_MMIO+AAj ; SetCursorPosition_MMIO+C7j ; SetCursorPosition_MMIO+108j pop ax mov fs:3CEh, al pop bx pop ax pop dx pop fs cmp fDoubleLine, 0 jz loc_17DB_596 shl bx, 1 loc_17DB_596: ; CODE XREF: SetCursorPosition_MMIO+11Bj cmp WDRVMODE, 13h jnz loc_17DB_59F shl cx, 1 loc_17DB_59F: ; CODE XREF: SetCursorPosition_MMIO+124j push fs mov fs, selCOP mov fs:1004h, cx cmp wScreenHeight, 400h jnz loc_17DB_5B8 cmp bx, 29h ; ')' jnz loc_17DB_5B8 dec bx loc_17DB_5B8: ; CODE XREF: SetCursorPosition_MMIO+139j ; SetCursorPosition_MMIO+13Ej mov fs:1008h, bx pop fs retn SetCursorPosition_MMIO endp ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 CursorToHardware proc near ; CODE XREF: UploadCursor+86p push eax push edx push ecx push edi push es push gs mov di, _pHostBltFlag cmp byte ptr [di], 0 jnz loc_17DB_6B2 mov es, selScreen mov edi, pCursorMemory push ecx push edi xor eax, eax mov ecx, 200h repe stos dword ptr es:[edi] pop edi pop ecx test cx, cx jz loc_17DB_680 mov si, 8D9Ch mov bl, ch neg ch add ch, 20h ; ' ' xor bh, bh add si, bx add si, bx add si, bx add si, bx add si, bx test ch, ch jz loc_17DB_664 loc_17DB_614: ; CODE XREF: CursorToHardware+A2j mov eax, [si+0A0h] rol ax, 8 rol eax, 10h rol ax, 8 shl eax, cl rol ax, 8 rol eax, 10h rol ax, 8 mov es:[edi], eax mov eax, [si] not eax rol ax, 8 rol eax, 10h rol ax, 8 shl eax, cl rol ax, 8 rol eax, 10h rol ax, 8 mov es:[edi+8], eax add esi, 5 add edi, 10h dec ch jnz loc_17DB_614 loc_17DB_664: ; CODE XREF: CursorToHardware+52j test bl, bl jz loc_17DB_6B2 xor eax, eax loc_17DB_66B: ; CODE XREF: CursorToHardware+BCj mov es:[edi], eax mov es:[edi+8], eax add edi, 10h dec bl jnz loc_17DB_66B jmp short loc_17DB_6B2 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_680: ; CODE XREF: CursorToHardware+36j mov si, 8D9Ch mov cx, 20h ; ' ' cmp wGUCursor, 1 jnz loc_17DB_692 dec cx add edi, 10h loc_17DB_692: ; CODE XREF: CursorToHardware+CBj ; CursorToHardware+F0j mov eax, [si+0A0h] mov es:[edi], eax mov eax, [si] not eax mov es:[edi+8], eax add si, 5 add edi, 10h dec cx jnz loc_17DB_692 loc_17DB_6B2: ; CODE XREF: CursorToHardware+12j ; CursorToHardware+A6j ; CursorToHardware+BEj pop gs pop es pop edi pop ecx pop edx pop eax retn CursorToHardware endp ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 _CursorToSoftware proc far ; CODE XREF: ENABLE1+283P push es push si call pfnTurnCursorOff mov CursorOff, 0 push xScreen push yScreen push large lpPrimaryDev call DIB_MOVECURSOREXT push large lpPDevCursorShape push large lpPrimaryDev call DIB_SETCURSOREXT pop si pop es retf _CursorToSoftware endp ; sp = -10h ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 align 4 ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 ; Attributes: bp-based frame _CopyToFrame proc far ; CODE XREF: CHECKIMPINGEMENT+14BP ; CHECKIMPINGEMENT+21BP arg_0 = dword ptr 6 arg_4 = word ptr 0Ah arg_6 = dword ptr 0Ch arg_A = word ptr 10h arg_C = word ptr 12h push bp mov bp, sp push edi push esi push ds push es mov ax, selScreen xor esi, esi xor ecx, ecx mov es, ax mov edi, [bp+arg_0] lds si, [bp+arg_6] xor eax, eax mov bx, [bp+arg_C] mov ax, [bp+arg_4] mov dx, [bp+arg_A] sub ax, dx loc_17DB_719: ; CODE XREF: _CopyToFrame+3Ej mov cx, dx shr cx, 2 repe movs dword ptr es:[edi], dword ptr [esi] mov cx, 3 and cx, dx repe movs byte ptr es:[edi], byte ptr [esi] add edi, eax dec bx jnz loc_17DB_719 pop es pop ds pop esi pop edi mov sp, bp pop bp retf _CopyToFrame endp ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 db 2Eh ; . db 8Bh ; db 0C0h ; db 2Eh ; . db 8Bh ; db 0C0h ; ; ; External Entry #102 into the Module ; Attributes (0003): Fixed Exported Shared dataseg ; ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 ; Attributes: bp-based frame public SetCursor SetCursor proc far ; CODE XREF: CheckCursor+B0p ; CheckCursor+DBp var_2 = byte ptr -2 arg_0 = dword ptr 6 mov ax, ds ; DISPLAY_102 nop push bp mov bp, sp push ds mov ds, ax push es push gs push esi push edi mov fInSetCursor, 1 mov eax, [bp+arg_0] mov lpPDevCursorShape, eax cmp bWinOSType, 1 jbe loc_17DB_799 cmp edx, lpSecondDev jz loc_17DB_770 mov edx, lpPrimaryDev loc_17DB_770: ; CODE XREF: SetCursor+29j cmp bProcessingBusy, 0 jnz loc_17DB_77E mov lpDriverPDevice, edx jmp short loc_17DB_799 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_77E: ; CODE XREF: SetCursor+35j mov eax, lpPrimaryDev cmp lpSecondDev, 0 jz loc_17DB_795 cmp edx, lpSecondDev jnz loc_17DB_795 mov eax, lpSecondDev loc_17DB_795: ; CODE XREF: SetCursor+48j ; SetCursor+4Fj mov lpDriverPDevice, eax loc_17DB_799: ; CODE XREF: SetCursor+22j ; SetCursor+3Cj les si, lpDriverPDevice cmp byte ptr es:[si+3Ah], 2 jnz loc_17DB_7D9 cmp lpSecondDev, 0 jz loc_17DB_7D9 push si mov si, _pHostBltFlag cmp byte ptr [si], 0FFh pop si jz loc_17DB_7C5 push large [bp+arg_0] push large lpDriverPDevice call DIB_SETCURSOREXT loc_17DB_7C5: ; CODE XREF: SetCursor+75j mov fInSetCursor, 0 pop edi pop esi pop gs pop es lea sp, [bp+var_2] pop ds pop bp retf 4 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_7D9: ; CODE XREF: SetCursor+62j ; SetCursor+6Aj cmp bProcessingBusy, 0 jnz loc_17DB_7F5 mov ax, es:[si+2] mov cxScreenPixels, ax mov ax, es:[si+4] mov cyScreenPixels, ax mov al, es:[si+3Ah] mov CursorDefinedFlag, al loc_17DB_7F5: ; CODE XREF: SetCursor+9Ej test wEnabled, 1 jz loc_17DB_923 pushf cld cmp word ptr [bp+arg_0+2], 0 jz loc_17DB_9B0 mov ax, ds mov es, ax assume es:dseg08 lds si, [bp+arg_0] mov es:GU_CursorForceToSW, 0 cmp es:wGUCursor, 1 jnz loc_17DB_86A cmp word ptr [si], 0Ch jnz loc_17DB_829 cmp word ptr [si+2], 8 jz loc_17DB_86A loc_17DB_829: ; CODE XREF: SetCursor+E1j cmp word ptr [si], 0Eh jnz loc_17DB_834 cmp word ptr [si+2], 0Ch jz loc_17DB_86A loc_17DB_834: ; CODE XREF: SetCursor+ECj cmp word ptr [si], 9 jnz loc_17DB_83F cmp word ptr [si+2], 9 jz loc_17DB_86A loc_17DB_83F: ; CODE XREF: SetCursor+F7j cmp word ptr [si], 7 jnz loc_17DB_84A cmp word ptr [si+2], 7 jz loc_17DB_86A loc_17DB_84A: ; CODE XREF: SetCursor+102j cmp word ptr [si], 1Fh jz loc_17DB_854 cmp word ptr [si], 0 jnz loc_17DB_85A loc_17DB_854: ; CODE XREF: SetCursor+10Dj cmp word ptr [si+2], 0 jz loc_17DB_86A loc_17DB_85A: ; CODE XREF: SetCursor+112j cmp word ptr [si], 10h jz loc_17DB_864 cmp word ptr [si], 0Fh jnz loc_17DB_86C loc_17DB_864: ; CODE XREF: SetCursor+11Dj cmp word ptr [si+2], 10h jnz loc_17DB_86C loc_17DB_86A: ; CODE XREF: SetCursor+DCj ; SetCursor+E7j SetCursor+F2j ; SetCursor+FDj SetCursor+108j ; SetCursor+118j jmp short loc_17DB_875 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_86C: ; CODE XREF: SetCursor+122j ; SetCursor+128j mov es:GU_CursorForceToSW, 1 jmp loc_17DB_937 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_875: ; CODE XREF: SetCursor+12Aj cmp word ptr [si+0Ah], 101h jnz loc_17DB_937 cmp es:MOUSETRAILSFLAG, 0 jnz loc_17DB_937 cmp es:CursorForceToSW, 0 jz loc_17DB_899 xor ax, ax mov es:CursorForceToSW, ax jmp loc_17DB_937 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_899: ; CODE XREF: SetCursor+14Ej cmp es:cxScreenPixels, 578h jz loc_17DB_937 cmp es:G2_Status, 1 jz loc_17DB_937 cmp es:CursorDefinedFlag, 2 jnz loc_17DB_8C9 push es push large offset word_1947_0 push large es:lpDriverPDevice call DIB_SETCURSOREXT pop es assume es:nothing loc_17DB_8C9: ; CODE XREF: SetCursor+174j push es push si les si, es:5890h mov byte ptr es:[si+3Ah], 1 pop si pop es mov byte ptr es:8EE8h, 1 mov di, 8D90h movsd movsd movsd mov cx, 8 loc_17DB_8E9: ; CODE XREF: SetCursor+1C2j movsd inc di movsd inc di movsd inc di movsd inc di movsd inc di movsd inc di movsd inc di movsd inc di dec cx jnz loc_17DB_8E9 mov ax, es mov ds, ax mov byte ptr word_1947_8D8C, 0FFh mov ax, word_1947_8D84 mov bx, word_1947_8D86 call UploadCursor cmp byte ptr TOFULLDOS, 1 jz loc_17DB_922 call pfnTurnCursorOn loc_17DB_922: ; CODE XREF: SetCursor+1DCj ; SetCursor+26Dj SetCursor+280j ; SetCursor+288j SetCursor+2A1j popf loc_17DB_923: ; CODE XREF: SetCursor+BBj mov fInSetCursor, 0 pop edi pop esi pop gs pop es lea sp, [bp+var_2] pop ds pop bp retf 4 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_937: ; CODE XREF: SetCursor+132j ; SetCursor+13Aj SetCursor+144j ; SetCursor+156j SetCursor+160j ; SetCursor+16Aj mov ax, es mov ds, ax test bMotionCompSet, 1 jz loc_17DB_962 push fs mov fs, selCOP mov eax, 2 loc_17DB_94E: ; CODE XREF: SetCursor+216j dec eax jz loc_17DB_960 mov cx, 500h loc_17DB_955: ; CODE XREF: SetCursor+21Ej dec cx jz loc_17DB_94E test byte ptr fs:97h, 40h jnz loc_17DB_955 loc_17DB_960: ; CODE XREF: SetCursor+210j pop fs loc_17DB_962: ; CODE XREF: SetCursor+200j cmp CursorDefinedFlag, 1 jnz loc_17DB_96D call pfnTurnCursorOff loc_17DB_96D: ; CODE XREF: SetCursor+227j push word_1947_8D84 push word_1947_8D86 push large lpDriverPDevice call DIB_MOVECURSOREXT push es push si les si, lpDriverPDevice mov byte ptr es:[si+3Ah], 2 mov si, _pHostBltFlag cmp byte ptr [si], 0FFh pop si pop es jz loc_17DB_9A3 push large [bp+arg_0] push large lpDriverPDevice call DIB_SETCURSOREXT loc_17DB_9A3: ; CODE XREF: SetCursor+253j mov CursorDefinedFlag, 2 mov CursorOff, 0 jmp loc_17DB_922 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_9B0: ; CODE XREF: SetCursor+C5j cmp CursorDefinedFlag, 1 jnz loc_17DB_9C3 call pfnTurnCursorOff cmp CursorDefinedFlag, 0 jmp loc_17DB_922 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_9C3: ; CODE XREF: SetCursor+275j cmp CursorDefinedFlag, 2 jnz loc_17DB_922 push large 0 push large lpDriverPDevice call DIB_SETCURSOREXT cmp CursorDefinedFlag, 0 jmp loc_17DB_922 SetCursor endp ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 db 2Eh ; . db 8Bh ; db 0C0h ; db 2Eh ; . db 8Bh ; db 0C0h ; db 2Eh ; . db 8Bh ; db 0C0h ; db 2Eh ; . db 8Bh ; db 0C0h ; ; ; External Entry #103 into the Module ; Attributes (0003): Fixed Exported Shared dataseg ; ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 ; Attributes: bp-based frame public MoveCursor MoveCursor proc far var_2 = byte ptr -2 arg_0 = word ptr 6 arg_2 = word ptr 8 mov ax, ds ; DISPLAY_103 nop push bp mov bp, sp push ds mov ds, ax push es push gs push esi push edi cmp fInSetCursor, 1 jz loc_17DB_DEB cmp fInCursorCode, 0 jz loc_17DB_DEB mov fInCursorCode, 0 cmp bWinOSType, 1 jbe loc_17DB_A53 cmp edx, lpSecondDev jz loc_17DB_A2A mov edx, lpPrimaryDev loc_17DB_A2A: ; CODE XREF: MoveCursor+33j cmp bProcessingBusy, 0 jnz loc_17DB_A38 mov lpDriverPDevice, edx jmp short loc_17DB_A53 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_A38: ; CODE XREF: MoveCursor+3Fj mov eax, lpPrimaryDev cmp lpSecondDev, 0 jz loc_17DB_A4F cmp edx, lpSecondDev jnz loc_17DB_A4F mov eax, lpSecondDev loc_17DB_A4F: ; CODE XREF: MoveCursor+52j ; MoveCursor+59j mov lpDriverPDevice, eax loc_17DB_A53: ; CODE XREF: MoveCursor+2Cj ; MoveCursor+46j les si, lpDriverPDevice mov al, es:[si+3Ah] mov CursorDefinedFlag, al cmp lpSecondDev, 0 jz loc_17DB_A82 cmp byte ptr TOFULLDOS, 0 jnz loc_17DB_A82 cmp bProcessingBusy, 0 jnz loc_17DB_A82 mov ax, es:[si+2] mov cxScreenPixels, ax mov ax, es:[si+4] mov cyScreenPixels, ax loc_17DB_A82: ; CODE XREF: MoveCursor+74j ; MoveCursor+7Bj MoveCursor+82j mov ax, [bp+arg_2] mov bx, [bp+arg_0] mov word_1947_8D84, ax mov word_1947_8D86, bx cmp byte ptr TOFULLDOS, 1 jz loc_17DB_DE6 test wEnabled, 1 jz loc_17DB_DE6 cmp CursorDefinedFlag, 0 jz loc_17DB_DE6 cmp CursorDefinedFlag, 2 jnz loc_17DB_DC8 cmp bWinOSType, 1 jbe loc_17DB_AE7 cmp bProcessingBusy, 0 jnz loc_17DB_AE7 mov cx, es:[si+6] cmp dword ptr es:[si+2Ch], 1 jz loc_17DB_AD7 mov G2SCREENWIDTHBYTES, cx jmp loc_17DB_C47 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 db 0EBh ; db 19h ; ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_AD7: ; CODE XREF: MoveCursor+DCj mov wScreenWidthBytes, cx xor cx, cx mov cl, es:[si+9] mov wBpp, cx jmp short loc_17DB_AF0 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_AE7: ; CODE XREF: MoveCursor+C9j ; MoveCursor+D0j test PANNING_FLAG, 2 jz loc_17DB_C47 loc_17DB_AF0: ; CODE XREF: MoveCursor+F5j pusha mov cx, ax and ebx, 0FFFFh and ecx, 0FFFFh mov ax, cxVisScreenLeft mov dx, cxVisScreenRight mov si, cyVisScreenTop mov di, cyVisScreenBottom and PANNING_FLAG, 0FEh cmp cx, dx jbe loc_17DB_B2A mov cxVisScreenRight, cx sub cx, dx add cxVisScreenLeft, cx or PANNING_FLAG, 1 jmp short loc_17DB_B3F ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_B2A: ; CODE XREF: MoveCursor+127j cmp cx, ax jnb loc_17DB_B3F mov cxVisScreenLeft, cx sub cx, ax neg cx sub cxVisScreenRight, cx or PANNING_FLAG, 1 loc_17DB_B3F: ; CODE XREF: MoveCursor+138j ; MoveCursor+13Cj cmp bx, di jbe loc_17DB_B54 mov cyVisScreenBottom, bx sub bx, di add cyVisScreenTop, bx or PANNING_FLAG, 1 jmp short loc_17DB_B69 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_B54: ; CODE XREF: MoveCursor+151j cmp bx, si jnb loc_17DB_B69 mov cyVisScreenTop, bx sub bx, si neg bx sub cyVisScreenBottom, bx or PANNING_FLAG, 1 loc_17DB_B69: ; CODE XREF: MoveCursor+162j ; MoveCursor+166j test PANNING_FLAG, 1 jz loc_17DB_C3B movzx eax, wScreenWidthBytes movzx ebx, cxVisScreenLeft movzx ecx, cyVisScreenTop mov dl, byte ptr wBpp inc dl shr dl, 3 cmp dl, 2 jz loc_17DB_B9A jb loc_17DB_B9D imul ebx, 3 jmp short loc_17DB_B9D ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_B9A: ; CODE XREF: MoveCursor+1A0j add ebx, ebx loc_17DB_B9D: ; CODE XREF: MoveCursor+1A2j ; MoveCursor+1A8j imul eax, ecx add eax, ebx mov StartAddress, eax mov bx, _pPrimary add eax, [bx] shr eax, 2 cmp wBpp, 18h jnz loc_17DB_BD0 xor edx, edx mov ebx, 6 div ebx or dx, dx jz loc_17DB_BCD add ax, 1 loc_17DB_BCD: ; CODE XREF: MoveCursor+1D8j mul ebx loc_17DB_BD0: ; CODE XREF: MoveCursor+1C8j mov cx, ax mov al, 0Dh mov ah, cl cli push fs mov fs, selVGA mov dx, fs:3D4h push dx mov dx, fs:3CEh push dx xchg ax, bx mov al, 9 mov fs:3CEh, al mov ax, fs:3CEh push ax mov al, 26h ; '&' mov fs:3CFh, al xchg ax, bx mov fs:3D4h, ax mov al, 0Ch mov ah, ch mov fs:3D4h, ax shr eax, 8 mov al, 0Eh mov fs:3CEh, al mov al, fs:3CFh and al, 0F0h and ah, 0Fh or al, ah mov fs:3CFh, al pop dx mov fs:3CEh, dx pop dx mov fs:3CEh, dl pop dx mov fs:3D4h, dl pop fs sti call _CheckOverlay loc_17DB_C3B: ; CODE XREF: MoveCursor+17Ej popa cmp lpSecondDev, 0 jz loc_17DB_C47 jmp loc_17DB_D71 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_C47: ; CODE XREF: MoveCursor+E2j ; MoveCursor+FCj MoveCursor+252j test G2_Status, 1 jz loc_17DB_D71 test G2PANNING_FLAG, 2 jz loc_17DB_D71 pusha mov cx, word_1947_8D84 mov bx, word_1947_8D86 and ebx, 0FFFFh and ecx, 0FFFFh mov ax, cxG2VisScreenLeft mov dx, cxG2VisScreenRight mov si, cyG2VisScreenTop mov di, cyG2VisScreenBottom and G2PANNING_FLAG, 0FEh cmp cx, dx jbe loc_17DB_C99 mov cxG2VisScreenRight, cx sub cx, dx add cxG2VisScreenLeft, cx or G2PANNING_FLAG, 1 jmp short loc_17DB_CAE ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_C99: ; CODE XREF: MoveCursor+296j cmp cx, ax jnb loc_17DB_CAE mov cxG2VisScreenLeft, cx sub cx, ax neg cx sub cxG2VisScreenRight, cx or G2PANNING_FLAG, 1 loc_17DB_CAE: ; CODE XREF: MoveCursor+2A7j ; MoveCursor+2ABj cmp bx, di jbe loc_17DB_CC3 mov cyG2VisScreenBottom, bx sub bx, di add cyG2VisScreenTop, bx or G2PANNING_FLAG, 1 jmp short loc_17DB_CD8 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_CC3: ; CODE XREF: MoveCursor+2C0j cmp bx, si jnb loc_17DB_CD8 mov cyG2VisScreenTop, bx sub bx, si neg bx sub cyG2VisScreenBottom, bx or G2PANNING_FLAG, 1 loc_17DB_CD8: ; CODE XREF: MoveCursor+2D1j ; MoveCursor+2D5j test G2PANNING_FLAG, 1 jz loc_17DB_D70 movzx eax, G2SCREENWIDTHBYTES movzx ebx, cxG2VisScreenLeft movzx ecx, cyG2VisScreenTop mov dl, byte ptr G2BPP inc dl shr dl, 3 cmp dl, 2 jz loc_17DB_D09 jb loc_17DB_D0C imul ebx, 3 jmp short loc_17DB_D0C ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_D09: ; CODE XREF: MoveCursor+30Fj add ebx, ebx loc_17DB_D0C: ; CODE XREF: MoveCursor+311j ; MoveCursor+317j imul eax, ecx add eax, ebx mov G2StartAddress, eax cli push fs mov fs, selVGA mov ax, fs:3D4h push ax mov eax, G2StartAddress cmp lpSecondDev, 0 jz loc_17DB_D3A add eax, PHYSBASESEC mov G2StartAddress, eax jmp short loc_17DB_D41 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_D3A: ; CODE XREF: MoveCursor+33Dj mov bx, _pPrimary add eax, [bx] loc_17DB_D41: ; CODE XREF: MoveCursor+348j push ebx mov ebx, eax shl ax, 8 mov al, 8Bh ; '' mov fs:3D4h, ax mov ax, bx mov al, 8Ah ; '' mov fs:3D4h, ax shr eax, 8 mov al, 89h ; '' mov fs:3D4h, ax pop ebx pop ax mov fs:3D4h, al pop fs sti call _CheckOverlay loc_17DB_D70: ; CODE XREF: MoveCursor+2EDj popa loc_17DB_D71: ; CODE XREF: MoveCursor+254j ; MoveCursor+25Cj MoveCursor+265j cmp byte ptr TOFULLDOS, 1 jz loc_17DB_D88 push fs mov fs, selCOP mov al, fs:0 pop fs test al, 3 jnz loc_17DB_DE6 loc_17DB_D88: ; CODE XREF: MoveCursor+386j test bMotionCompSet, 1 jz loc_17DB_DAF push fs mov fs, selCOP mov eax, 2 loc_17DB_D9B: ; CODE XREF: MoveCursor+3B3j dec eax jz loc_17DB_DAD mov cx, 500h loc_17DB_DA2: ; CODE XREF: MoveCursor+3BBj dec cx jz loc_17DB_D9B test byte ptr fs:97h, 40h jnz loc_17DB_DA2 loc_17DB_DAD: ; CODE XREF: MoveCursor+3ADj pop fs loc_17DB_DAF: ; CODE XREF: MoveCursor+39Dj cmp bProcessingBusy, 0 jnz loc_17DB_DC6 push [bp+arg_2] push [bp+arg_0] push large lpDriverPDevice call DIB_MOVECURSOREXT loc_17DB_DC6: ; CODE XREF: MoveCursor+3C4j jmp short loc_17DB_DE6 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_DC8: ; CODE XREF: MoveCursor+C0j cmp CursorDefinedFlag, 1 jnz loc_17DB_DE6 cld loc_17DB_DD0: ; CODE XREF: MoveCursor+3EEj ; MoveCursor+3F4j call UploadCursor mov ax, word_1947_8D84 mov bx, word_1947_8D86 cmp ax, xScreen jnz loc_17DB_DD0 cmp bx, yScreen jnz loc_17DB_DD0 loc_17DB_DE6: ; CODE XREF: MoveCursor+A4j ; MoveCursor+AEj MoveCursor+B7j ; MoveCursor+396j MoveCursor+3D6j ; MoveCursor+3DDj mov fInCursorCode, 0FFh loc_17DB_DEB: ; CODE XREF: MoveCursor+15j ; MoveCursor+1Ej pop edi pop esi pop gs pop es lea sp, [bp+var_2] pop ds pop bp retf 4 MoveCursor endp ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 db 2Eh ; . db 8Bh ; db 0C0h ; db 2Eh ; . db 8Bh ; db 0C0h ; ; ; External Entry #104 into the Module ; Attributes (0003): Fixed Exported Shared dataseg ; ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 ; Attributes: bp-based frame public CheckCursor CheckCursor proc far var_2 = byte ptr -2 mov ax, ds ; DISPLAY_104 nop push bp mov bp, sp push ds mov ds, ax push es push gs push esi push edi pushf cmp fInSetCursor, 1 jz loc_17DB_F2E cmp fInCursorCode, 0 jz loc_17DB_F2E mov fInCursorCode, 0 test wEnabled, 1 jz loc_17DB_F29 cmp bWinOSType, 1 jbe loc_17DB_E6E cmp edx, lpSecondDev jz loc_17DB_E45 mov edx, lpPrimaryDev loc_17DB_E45: ; CODE XREF: CheckCursor+3Ej cmp bProcessingBusy, 0 jnz loc_17DB_E53 mov lpDriverPDevice, edx jmp short loc_17DB_E6E ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_E53: ; CODE XREF: CheckCursor+4Aj mov eax, lpPrimaryDev cmp lpSecondDev, 0 jz loc_17DB_E6A cmp edx, lpSecondDev jnz loc_17DB_E6A mov eax, lpSecondDev loc_17DB_E6A: ; CODE XREF: CheckCursor+5Dj ; CheckCursor+64j mov lpDriverPDevice, eax loc_17DB_E6E: ; CODE XREF: CheckCursor+37j ; CheckCursor+51j les si, lpDriverPDevice cmp CursorDefinedFlag, 1 jnz loc_17DB_EC1 cmp WCHIPREV, 20h ; ' ' jnb loc_17DB_EC1 push fs mov fs, selVGA mov al, fs:3CEh push ax mov al, 20h ; ' ' mov fs:3CEh, al mov al, fs:3CFh test al, 2 jz loc_17DB_EB3 mov al, 25h ; '%' mov fs:3CEh, al mov al, fs:3CFh test al, 84h jz loc_17DB_EB3 mov CursorForceToSW, ax push large lpPDevCursorShape push cs call near ptr SetCursor loc_17DB_EB3: ; CODE XREF: CheckCursor+97j ; CheckCursor+A5j pop ax mov fs:3CEh, al pop fs mov bSoftCount, 0Ah jmp short loc_17DB_EE2 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_EC1: ; CODE XREF: CheckCursor+77j ; CheckCursor+7Ej cmp CursorDefinedFlag, 2 jnz loc_17DB_EE2 cmp bSoftCount, 0 jbe loc_17DB_EE2 mov CursorForceToSW, 84h ; '' push large lpPDevCursorShape push cs call near ptr SetCursor dec bSoftCount loc_17DB_EE2: ; CODE XREF: CheckCursor+BFj ; CheckCursor+C6j CheckCursor+CDj cmp byte ptr TOFULLDOS, 0 jnz loc_17DB_EF3 cmp bProcessingBusy, 0 jnz loc_17DB_EF3 call CheckPanning_MMIO loc_17DB_EF3: ; CODE XREF: CheckCursor+E7j ; CheckCursor+EEj xor ax, ax xchg al, fInkAvailable or al, al jz loc_17DB_F01 call lpfnUpdateInking loc_17DB_F01: ; CODE XREF: CheckCursor+FBj cmp CursorDefinedFlag, 2 jnz loc_17DB_F29 cmp byte ptr TOFULLDOS, 1 jz loc_17DB_F1F push fs mov fs, selCOP mov al, fs:0 pop fs test al, 3 jnz loc_17DB_F29 loc_17DB_F1F: ; CODE XREF: CheckCursor+10Dj push large lpDriverPDevice call DIB_CHECKCURSOREXT loc_17DB_F29: ; CODE XREF: CheckCursor+2Ej ; CheckCursor+106j CheckCursor+11Dj mov fInCursorCode, 0FFh loc_17DB_F2E: ; CODE XREF: CheckCursor+16j ; CheckCursor+1Fj popf pop edi pop esi pop gs pop es lea sp, [bp+var_2] pop ds pop bp retf CheckCursor endp ; sp = -4 ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 CheckPanning_MMIO proc near ; CODE XREF: CheckCursor+F0p pusha push fs mov fs, selVGA mov al, fs:3CEh push ax mov al, fs:3D4h push ax mov al, 9 mov fs:3CEh, al mov ax, fs:3CEh push ax mov al, 26h ; '&' mov fs:3CFh, al mov al, 1Eh mov fs:3D4h, al mov al, fs:3D5h test al, 20h jz loc_17DB_1257 and al, 0DFh mov fs:3D5h, al mov al, 80h ; '' mov fs:3D4h, al mov al, fs:3D5h test al, 1 jz loc_17DB_1257 mov ax, 4F14h mov bx, 4 int 10h ; - VIDEO - VESA SuperVGA BIOS - mov fDisplay_Status, bl or dword_1947_A306, 1 mov byte_1947_A30A, bl mov G2_Status, 0 mov al, 80h ; '' mov fs:3D4h, al mov al, fs:3D5h push ax cmp bWinOSType, 2 jz loc_17DB_FC0 xor ax, ax push es push fs push ax call _SetupG2 pop ax pop fs pop es loc_17DB_FC0: ; CODE XREF: CheckPanning_MMIO+73j pop ax test al, 1 jz loc_17DB_10BD and G2PANNING_FLAG, 0FDh mov G2_Status, 1 mov al, 2 mov es:[si+3Ah], al mov CursorDefinedFlag, al mov eax, lpPrimaryDev cmp lpSecondDev, 0 jz loc_17DB_FF1 cmp edx, lpSecondDev jnz loc_17DB_FF1 mov eax, lpSecondDev loc_17DB_FF1: ; CODE XREF: CheckPanning_MMIO+A8j ; CheckPanning_MMIO+AFj mov lpDriverPDevice, eax push large lpPDevCursorShape push large lpDriverPDevice call DIB_SETCURSOREXT call pfnTurnCursorOff mov CursorOff, 0 mov ax, 4F14h mov bl, 24h ; '$' int 10h ; - VIDEO - VESA SuperVGA BIOS - mov G2SCREENWIDTH, cx mov G2SCREENHEIGHT, dx mov G2ScreenHeight2, dx test fDisplay_Status, 4 jz loc_17DB_1097 test dword_1947_A306, 8000h jz loc_17DB_1039 cmp fToshibaSys, 0 jz loc_17DB_104A loc_17DB_1039: ; CODE XREF: CheckPanning_MMIO+F4j mov word_1947_A31F, cx mov word_1947_A321, dx or dword_1947_A306, 8000h loc_17DB_104A: ; CODE XREF: CheckPanning_MMIO+FBj push bx push large 0 push 1 call SETTVPOSITION pop bx mov cx, 0Eh cmp fToshibaSys, 0 jz loc_17DB_1067 mov cx, 14h loc_17DB_1067: ; CODE XREF: CheckPanning_MMIO+126j mov si, 8AFEh loc_17DB_106A: ; CODE XREF: CheckPanning_MMIO+136j cmp [si+2], bx jz loc_17DB_1077 add si, 12h loop loc_17DB_106A mov si, 8AFEh loc_17DB_1077: ; CODE XREF: CheckPanning_MMIO+131j mov pModeTagSecond, si cmp fTVInfo, 1 mov bx, [si+8] jnz loc_17DB_1088 mov bx, [si+0Ch] loc_17DB_1088: ; CODE XREF: CheckPanning_MMIO+147j mov G2SCREENHEIGHT, bx mov si, pModeTag mov bx, [si+0Ah] mov G2SCREENWIDTHBYTES, bx loc_17DB_1097: ; CODE XREF: CheckPanning_MMIO+E9j mov si, pModeTag mov bx, [si+8] mov cx, G2SCREENHEIGHT cmp bx, cx jbe loc_17DB_10AD or G2PANNING_FLAG, 2 jmp short loc_17DB_10BD ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_10AD: ; CODE XREF: CheckPanning_MMIO+168j mov bx, [si+6] mov cx, G2SCREENWIDTH cmp bx, cx jbe loc_17DB_10BD or G2PANNING_FLAG, 2 loc_17DB_10BD: ; CODE XREF: CheckPanning_MMIO+87j ; CheckPanning_MMIO+16Fj ; CheckPanning_MMIO+17Aj xor eax, eax cmp lpSecondDev, 0 jz loc_17DB_10CC mov eax, PHYSBASESEC loc_17DB_10CC: ; CODE XREF: CheckPanning_MMIO+18Aj mov G2StartAddress, eax push ebx mov ebx, eax shl ax, 8 mov al, 8Bh ; '' mov fs:3D4h, ax mov ax, bx mov al, 8Ah ; '' mov fs:3D4h, ax shr eax, 8 mov al, 89h ; '' mov fs:3D4h, ax pop ebx xor ax, ax mov cxG2VisScreenLeft, ax mov cyG2VisScreenTop, ax mov ax, G2SCREENWIDTH mov cxG2VisScreenRight, ax mov ax, G2SCREENHEIGHT mov cyG2VisScreenBottom, ax mov al, 20h ; ' ' mov fs:3CEh, al mov al, fs:3CFh test al, 2 jnz loc_17DB_11C9 and PANNING_FLAG, 0FDh xor ax, ax mov StartAddress, 0 mov cxVisScreenLeft, ax mov cyVisScreenTop, ax mov si, pPanelModeTag mov ax, [si+6] dec ax mov cxVisScreenRight, ax mov ax, [si+8] dec ax mov cyVisScreenBottom, ax mov ax, 0Ch mov fs:3D4h, ax mov al, 0Dh mov fs:3D4h, ax mov al, 0Eh mov fs:3CEh, al mov ax, fs:3CEh and ah, 0F0h mov fs:3CEh, ax mov al, fs:3DAh mov dx, 3C0h mov al, 33h ; '3' mov fs:3C0h, al xor al, al mov fs:3C0h, al cmp wPalettized, 0 jz loc_17DB_1186 mov edx, lpDriverPDevice push large 0 call far ptr SetPaletteTranslate loc_17DB_1186: ; CODE XREF: CheckPanning_MMIO+238j cmp wBpp, 8 ja loc_17DB_11C6 mov cx, 2 cmp wBpp, 1 jz loc_17DB_11A4 mov cx, 10h cmp wBpp, 4 jz loc_17DB_11A4 mov cx, 100h loc_17DB_11A4: ; CODE XREF: CheckPanning_MMIO+259j ; CheckPanning_MMIO+263j xor ax, ax push es push si test dword_1947_A306, 1000000h jz loc_17DB_11BB push ds pop es assume es:dseg08 lea si, ds:0C342h jmp short loc_17DB_11BF ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_11BB: ; CODE XREF: CheckPanning_MMIO+275j les si, lpColorTable assume es:nothing loc_17DB_11BF: ; CODE XREF: CheckPanning_MMIO+27Dj call SETRAMDAC_FAR pop si pop es loc_17DB_11C6: ; CODE XREF: CheckPanning_MMIO+24Fj jmp loc_17DB_1252 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_11C9: ; CODE XREF: CheckPanning_MMIO+1D6j mov si, pPanelModeTag mov bx, [si+2] cmp bx, 120h jb loc_17DB_11F0 push di mov di, pModeTag mov ax, [di+6] mov bx, [di+8] pop di cmp [si+6], ax jb loc_17DB_11F6 cmp [si+8], bx jb loc_17DB_11F6 jmp short loc_17DB_1252 ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 db 0EBh ; db 6 ; ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_11F0: ; CODE XREF: CheckPanning_MMIO+298j cmp WDRVMODE, bx jbe loc_17DB_1252 loc_17DB_11F6: ; CODE XREF: CheckPanning_MMIO+2A9j ; CheckPanning_MMIO+2AEj or PANNING_FLAG, 2 xor ax, ax mov StartAddress, 0 mov cxVisScreenLeft, ax mov cyVisScreenTop, ax mov ax, [si+6] dec ax mov cxVisScreenRight, ax mov ax, [si+8] dec ax mov cyVisScreenBottom, ax mov ax, 0Ch mov fs:3D4h, ax mov al, 0Dh mov fs:3D4h, ax mov al, 0Eh mov fs:3CEh, al mov al, fs:3CFh and al, 0F0h mov fs:3CFh, al mov al, fs:3DAh mov al, 33h ; '3' mov fs:3C0h, al xor al, al mov fs:3C0h, al mov cx, xScreen mov bx, yScreen call SetCursorPosition loc_17DB_1252: ; CODE XREF: CheckPanning_MMIO+28Aj ; CheckPanning_MMIO+2B0j ; CheckPanning_MMIO+2B8j call _CheckOverlay loc_17DB_1257: ; CODE XREF: CheckPanning_MMIO+2Ej ; CheckPanning_MMIO+44j mov al, 20h ; ' ' mov fs:3CEh, al mov ah, fs:3CFh and ah, 2 jz loc_17DB_1285 mov al, 25h ; '%' mov fs:3CEh, al mov al, fs:3CFh and al, 84h cmp al, byte_1947_8EDE jz loc_17DB_1285 mov byte_1947_8EDE, al call _CheckOverlay push cs call near ptr fRefreshCursor loc_17DB_1285: ; CODE XREF: CheckPanning_MMIO+329j ; CheckPanning_MMIO+33Bj pop ax mov fs:3CEh, ax pop ax mov fs:3D4h, al pop ax mov fs:3CEh, al pop fs popa retn CheckPanning_MMIO endp ; sp = -8 ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 sub_17DB_1298 proc near ; CODE XREF: fRefreshCursor+Cp mov CursorOff, 0 mov ax, xScreen mov bx, yScreen mov byte ptr word_1947_8D8C, 0FFh sub_17DB_1298 endp ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 UploadCursor proc near ; CODE XREF: SetCursor+1D4p ; MoveCursor+3E0p mov xScreen, ax mov yScreen, bx sub ax, csHotX sub bx, word_1947_8D92 cmp CursorDefinedFlag, 1 jz loc_17DB_12DC cmp ax, 0FFE1h jl loc_17DB_1309 cmp bx, 0FFE1h jl loc_17DB_1309 cmp ax, cxScreenPixels jge loc_17DB_1309 cmp bx, cyScreenPixels jge loc_17DB_1309 cmp byte_1947_8EDC, 1 jz loc_17DB_1313 loc_17DB_12DC: ; CODE XREF: UploadCursor+14j ; UploadCursor+7Ej mov cx, ax mov dx, bx cmp ax, 7FFFh sbb si, si and ax, si neg cx not si and cx, si cmp bx, 7FFFh sbb si, si and bx, si neg dx not si and dx, si mov ch, dl cmp cx, word_1947_8D8C jnz loc_17DB_1329 mov cx, ax call SetCursorPosition retn ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_1309: ; CODE XREF: UploadCursor+19j ; UploadCursor+1Ej UploadCursor+24j ; UploadCursor+2Aj mov byte_1947_8EDC, 1 call pfnTurnCursorOff retn ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_1313: ; CODE XREF: UploadCursor+31j push ax push bx mov byte_1947_8EDC, 0 cmp CursorOff, 1 jz loc_17DB_1325 call pfnTurnCursorOn loc_17DB_1325: ; CODE XREF: UploadCursor+76j pop bx pop ax jmp short loc_17DB_12DC ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 loc_17DB_1329: ; CODE XREF: UploadCursor+58j push ax push bx mov word_1947_8D8C, cx call CursorToHardware pop bx pop cx call SetCursorPosition retn UploadCursor endp ; 栩栩栩栩栩栩栩 S U B R O U T I N E 栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩栩 fRefreshCursor proc far ; CODE XREF: ResetHiResMode+14AP ; ENABLE1+34FP ; PhysicalDisableSecond+E0P ; CheckPanning_MMIO+346p cmp CursorDefinedFlag, 1 jnz locret_17DB_1352 mov byte_1947_8EDC, 1 call sub_17DB_1298 cmp byte_1947_A326, 0 jz locret_17DB_1352 call pfnTurnCursorOn locret_17DB_1352: ; CODE XREF: fRefreshCursor+5j ; fRefreshCursor+14j retf fRefreshCursor endp ; 陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳陳 db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; db 0 ; cseg05 ends