4000 jmp initA 4003 jmp rddk 4006 jmp wrdk 4009 jmp init 400c jmp din 400f jmp dout 4012 jmp dver 4015 dkin push H 4016 push D 4017 push B 4018 mov A,D ;track number 4019 call nwtrk cd 54 40 401c call dski cd cd 40 401f pop B 4020 pop D 4021 pop H 4022 return 4023 dkout push H 4024 push D 4025 push B 4026 mov A,D 4027 call nwtrk cd 54 40 402a mvi A, 137 (87) 402c call dsk0 cd 91 40 402f pop B 4030 pop D 4031 pop H 4032 return 4033 init out 8 4035 loop1 in 8 4037 ani 40h 4039 jz trk0 ca 4e 40 ;there now 403c wait1 in 8 ;wait for head movement 403e ani 02h 4040 jnz wait1 4043 mvi A, 02 ;move head 4045 out 9 4047 mvi A, 00 4049 out 9 404b jmp loop1 404e trk0 mvi A, 00 4050 sta crtrk 32 3a 43 4053 return 4054 nwtrk push B ;desired trk is in A 4055 mov B,A ;now its in B 4056 again lda crtrk 3a 3a 43 4059 mov C,A ;put real one in C 405a cmp B 405b jz done ca 8f 40 405e jnc mvout d2 78 40 ;must go out 4061 wait2 in 8 ;here we move in 4063 ani 02h 4065 jnz wait2 c2 61 40 4068 mvi A, 01 406a out 9 406c mvi A, 00 406e out 9 4070 inr C 4071 mov A,C ;move C to A 4072 sta crtrk 32 3a 43 4075 jmp again c3 65 40 4078 mvout in 8 ;wait 407a ani 02h 407c jnz mvout c2 78 40 407f mvi A, 02 4081 out 9 4083 mvi A, 00 4085 out 9 4087 dcr C 4088 mov A,C 4089 sta crtrk 32 3a 43 408c jmp again c3 56 40 408f done pop B 4090 return 4091 dsk0 mov C,A ;from Mits 4092 mvi A, 136 (88) 4094 sub C 4095 mov B,A 4096 call secget cd ef 40 4099 mvi A, 128 (80) 409b out 9 409d ohlds mvi D, 01 409f mvi A, 128 (80) 40a1 ora M 40a2 mov E,A 40a3 inx H 40a4 notyt in 8 40a6 ana D 40a7 jnz notyt c2 a4 40 40aa add E 40ab out 10 40ad mov A,M 40ae inx H 40af mov E,M 40b0 inx H 40b1 dcr C 40b2 jz zrlop ca bb 40 40b5 dcr C 40b6 out 10 40b8 jnz notyt c2 a4 40 40bb zrlop in 8 40bd ana D 40be jnz zrlop c2 bb 40 40c1 out 10 40c3 dcr B 40c4 jnz zrlop c2 bb 40 40c7 ei 40c8 mvi A, 08 40ca out 9 40cc return 40cd dski call secget cd ef 40 40d0 mvi C, 137 (89) 40d2 reado in 8 40d4 ora A 40d5 jm reado fa d2 40 40d8 in 10 40da mov M,A 40db inx H 40dc dcr C 40dd jz retdo ca e9 40 40e0 dcr C 40e1 nop 40e2 in 10 40e4 mov M,A 40e5 inx H 40e6 jnz reado c2 d2 40 40e9 retdo ei 40ea mvi A, 08 40ec out 9 40ee return 40ef secget mvi A, 04 40f1 out 9 40f3 di 40f4 seclp in 9 40f6 rar 40f7 jc seclp da f4 40 40fa ani 31 (1f) 40fc cmp E 40fd jnz seclp c2 f4 40 4100 return 4101 dout push B 4102 push D 4103 push H 4104 mvi A, -1 (ff) 4106 sta buff 32 46 43 4109 mov A,D 410a sta buff+1 32 47 43 410d mov A,E 410e sta buff+2 32 48 43 4111 mvi A, 00 4113 sta buff+4 32 4a 43 4116 sta buff+5 32 4b 43 4119 pop H 411a push H 411b lxi D, buff+8 11 4c 43 411e mvi B, 80 4120 lp mov A, M 4121 stax D 4122 inx H 4123 inx D 4124 dcr B 4125 jnz lp c2 20 41 4128 mvi B, 136 (86) 412a lxi H, buff 21 46 43 412d mvi A, 00 412f lp2 mov C,M 4130 add C 4131 inx H 4132 dcr B 4133 jnz lp2 c2 2f 41 4136 sta buff+136 32 cc 43 4139 pop H 413a pop D 413b push D 413c push H 413d lxi H, buff 21 46 43 4140 call dkout cd 23 40 4143 pop H 4144 pop D 4145 pop B 4146 return 4147 din push B 4148 push D 4149 push H 414a mvi A, 01 414c sta mode 32 3b 43 414f comb lxi H, buff 21 46 43 4152 call dkin cd 15 40 4155 lxi D, buff+8 11 4c 43 4158 pop H 4159 push H 415a lda mode 3a 3b 43 415d ora A 415e jz nread ca 6b 41 4161 mvi B, 128 (80) 4163 lp3 ldax D 4164 mov M,A 4165 inx H 4166 inx D 4167 dcr B 4168 jnz lp3 c2 63 41 416b nread pop H 416c pop D 416d push D 416e push H 416f lda buff+1 3a 47 43 4172 cmp D 4173 jnz error c2 98 41 4176 lda buff+2 3a 48 43 4179 cmp E 417a jnz error c2 98 41 417d mvi B, 136 (86) 417f lxi H, buff 21 46 43 4182 mvi A, 00 4184 lp4 mov C,M 4185 add C 4186 inx H 4187 dcr B 4188 jnz lp4 c2 84 41 418b mov C,A 418c lda buff+136 3a cc 43 418f cmp C 4190 jnz error c2 98 41 4193 pop H 4194 pop D 4195 pop B 4196 ora A 4197 return 4198 error pop H 4199 pop D 419a pop B 419b stc 419c return 419d dver push B 419e push D 419f push H 41a0 mvi A, 00 41a2 sta mode 32 3b 43 41a5 jmp comb c3 4f 41 41a8 incts inr E 41a9 mov A,E 41aa cpi 32 (20) 41ac rnz 41ad mvi E, 00 41af inr D 41b0 return 41b1 wrdk call nlnc cd c7 42 ;write disk command 41b4 lxi H, msg1 21 d4 42 41b7 call hxans cd ef ff 41ba xchg 41bb shld mstrt 22 3c 43 41be call nlnc cd c7 42 41c1 lxi H, msg2 21 e0 42 41c4 call hxans cd e5 ff 41c7 xchg 41c8 shld mend 22 3e 43 41cb call nlnc cd c7 42 41ce lxi H, msg3 21ea 42 41d1 call hxans cd e5 ff 41d4 xchg 41d5 shld ts 22 40 43 41d8 wloop lhld mend 2a 3e 43 41db xchg 41dc lhld mstrt 2a 3c 43 41df dcx H 41e0 call cmphd cd 20 42 41e3 jc done2 da 31 42 41e6 lhld ts 2a 40 43 41e9 xchg 41ea lhld mstrt 2a 3c 43 41ed call dout cd 01 41 41f0 call dver cd 9d 41 41f3 jnc ok3 d2 fc 41 41f6 call dkerr cd 0e 42 41f9 jmp wloop c3 d8 41 41fc ok3 call incts cd a8 41 41ff xchg 4200 shld ts 22 40 43 4203 xchg 4204 lxi D, 128 (80) ;bytes 4207 dad D 4208 shld mstrt 22 3c 43 420b jmp wloop c3 d8 41 420e dkerr call nlnc cd c7 42 4211 lxi H, msg4 21 f0 42 4214 call tell cd df ff 4217 mov A,D 4218 call hotnc cd be ff 421b mov A,E 421c call hotnc cd be ff 421f return 4220 cmphd mov A,H 4221 sub D 4222 jc hlsml da 2f 42 4225 jnz hlbig c2 2d 42 4228 mov A,L 4229 sub E 422a jc hlsml da 2f 42 422d hlbig stc 422e return 422f hlsml ora A 4230 return 4231 done2 call nlnc cd c7 42 4234 lxi H, msg5 21 00 43 4237 call tell cd df ff 423a lhld ts 2a 40 43 423d dcx H 423e mov A,L 423f cpi ffh 4241 jnz hotnc c2 46 42 4244 mvi L, 1f 4246 mov A,H 4247 call hotnc cd be ff 424a mov A,L 424b call hotnc cd be ff 424e return 424f rddk call nlnc cd c7 42 ;command to read disk 4252 lxi H, msg6 21 14 43 4255 call hxans cd e5 ff 4258 xchg 4259 shld tsstr 22 42 43 425c call nlnc cd c7 42 425f lxi H, msg7 21 20 43 4262 call hxans cd e5 ff 4265 xchg 4266 shld tsend 22 44 43 4269 call nlnc cd c7 42 426c lxi H, msg1 21 d4 42 426f call hxans cd e5 ff 4272 xchg 4273 shld mstrt 22 3c 43 4276 rloop lhld tsend 2a 44 43 4279 xchg 427a call incts cd a8 41 427d lhld tsstr 2a 42 43 4280 call cmphd cd 20 42 4283 jc done3 da ab 42 4286 lhld tsstr 2a 42 43 4289 xchg 428a lhld mstrt 2a 3c 43 428d call din cd 47 41 4290 jnc ok4 d2 99 42 4293 call dkerr cd 0e 42 4296 jmp rloop c3 76 42 4299 ok4 call incts cd a8 41 429c xchg 429d shld tsstr 22 42 43 42a0 xchg 42a1 lxi D, 128 (80) 42a4 dad D 42a5 shld mstrt 22 3c 43 42a8 jmp rloop c3 76 42 42ab done3 call nlnc cd 47 41 42ae lxi H, msg8 21 2a 43 42b1 call ts cd df ff 42b4 lxi H, mstrt 2a 3c 43 42b7 dcx H 42b8 mov A,H 42b9 call hotnc cd be ff 42bc mov A,L 42bd call hotnc cd be ff 42c0 return 42c1 initA mvi A, 00 42c3 call init cd 33 40 42c6 return 42c7 nlnc push H 42c8 lxi H, crlf 21 d0 42 42cb call tell cd df ff 42ce pop H 42cf return 42do crld dw 0a0d 42d2 dw 0303 42d4 msg1 dw 'EM' 42d6 dw ' M' 42d8 dw 'TS' 42da dw 'RA' 42dc dw ':T' 42de dw 0320h 42e0 msg2 dw 'EM' 42e2 dw ' M' 42e4 dw 'NE' 42e6 dw ':D' 42e8 dw 0320h 42ea msg3 dw '/T' 42ec dw ':S' 42ee dw 0320h 42f0 msg4 dw 'RE' 42f2 dw 'OR' 42f4 dw ' R' 42f6 dw 'TA' 42f8 dw 'T ' 42fa dw 'S/' 42fc dw ' :' 42fe dw 0303h 4300 msg5 dw 'AL' 4302 dw 'TS' 4304 dw 'T ' 4306 dw 'AR' 4308 dw 'KC' 430a dw 'S ' 430c dw 'CE' 430e dw 'OT' 4310 dw ':R' 4312 dw 0320h 4314 msg6 dw '/T' 4316 dw ' S' 4318 dw 'TS' 431a dw 'RA' 431c dw ':T' 431e dw 0320h 4320 msg7 dw '/T' 4322 dw ' S' 4324 dw 'NE' 4326 dw ':D' 4328 dw 0320h 432a msg8 dw 'AL' 432c dw 'TS' 432e dw 'M ' 4330 dw 'ME' 4332 dw 'A ' 4334 dw 'DD' 4336 dw ':R' 4338 dw 0320h 433a crtrk ds 1 433b mode ds 1 ;1-read 0-verify 433c mstrt ds 2 433e mend ds 2 4340 ts ds 2 4342 tsstr ds 2 4344 tsend ds 2 4346 buff ds 137