12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319 |
- org 00000h
- di ;0000 no interrupt
- ld sp,0ffa6h ;0001 init stack
- xor a ;0004 A=0
- jp init ;0005 go init 00046h
- ;RST 08 handle - clear top line
- ld de,0303eh ;0008 point to screen ram
- call cleartopline ;000b go clear top line 0052dh
- nop ;000e pass through to display message at return addr
- nop ;000f
- ;RST 10 handle - display message at return addr
- pop hl ;0010 get return addr
- displaymsg:
- ld c,(hl) ;0011 load count
- inc hl ;0012 dump
- ld b,000h ;0013
- jp printroutine ;0015 00541h
- ;
- rst 38h ;0018
- rst 38h ;0019
- rst 38h ;001a
- rst 38h ;001b
- rst 38h ;001c
- rst 38h ;001d
- rst 38h ;001e
- rst 38h ;001f
- rst 38h ;0020
- rst 38h ;0021
- rst 38h ;0022
- rst 38h ;0023
- rst 38h ;0024
- rst 38h ;0025
- rst 38h ;0026
- rst 38h ;0027
- rst 38h ;0028
- rst 38h ;0029
- rst 38h ;002a
- rst 38h ;002b
- rst 38h ;002c
- rst 38h ;002d
- rst 38h ;002e
- rst 38h ;002f
- rst 38h ;0030
- rst 38h ;0031
- rst 38h ;0032
- rst 38h ;0033
- rst 38h ;0034
- rst 38h ;0035
- rst 38h ;0036
- rst 38h ;0037
- rst 38h ;0038
- rst 38h ;0039
- rst 38h ;003a
- rst 38h ;003b
- rst 38h ;003c
- rst 38h ;003d
- rst 38h ;003e
- rst 38h ;003f
- jp 00000h ;0040
- jp 00000h ;0043
- ; init
- init:
- out (0c0h),a ;0046 clear io, floppy control
- out (0c4h),a ;0048 Program map A base
- out (0c5h),a ;004a Program map B base
- out (0c6h),a ;004c DMA map A base
- out (0c7h),a ;004e DMA map B base
- out (0d4h),a ;0050 Hi-res color
- out (0d8h),a ;0052 Hi-res start
- ld hl,0005ah ;0054
- jp otirloop ;0057 do OTIR loop on following data 00562h
- defb 0b5h ;005a io port CRT register select
- defb 004h ;005b count 4
- defb 0cfh ;005c
- defb 0b8h ;005d
- defb 037h ;005e
- defb 0efh ;005f
- ;
- defb 0b4h ;0060 io port PIO A data
- defb 001h ;0061 count 1
- defb 001h ;0062
- ;
- defb 0a1h ;0063 io port DART A command
- defb 006h ;0064 count 6
- defb 048h ;0065
- defb 048h ;0066
- defb 004h ;0067
- defb 044h ;0068
- defb 005h ;0069
- defb 0eah ;006a
- ;
- defb 0a3h ;006b io port DART B command
- defb 008h ;006c count 8
- defb 048h ;006d
- defb 048h ;006e
- defb 004h ;006f
- defb 044h ;0070
- defb 001h ;0071
- defb 000h ;0072
- defb 003h ;0073
- defb 0c1h ;0074
- ;
- defb 0a5h ;0075 io port SIO A command
- defb 002h ;0076count 2
- defb 048h ;0077
- defb 048h ;0078
- ;
- defb 0a7h ;0079 io port SIO B command
- defb 002h ;007a count 2
- defb 048h ;007b
- defb 048h ;007c
- ;
- defb 0a8h ;007d io port CTC CHANNEL 0 - Communications baud rate
- defb 002h ;007e count 2
- defb 003h ;007f
- defb 003h ;0080
- ;
- defb 0a9h ;0081 io port CTC CHANNEL 1 - AUX RS-232C baud rate
- defb 002h ;0082 count 2
- defb 003h ;0083
- defb 003h ;0084
- ;
- defb 0aah ;0085 io port CTC CHANNEL 2 - Printer baud rate
- defb 002h ;0086 count 2
- defb 057h ;0087
- defb 04eh ;0088
- ;
- defb 000h ;0089 io port reset
- defb 000h ;008a count 0 terminator
- ;code continues
- ld ix,00092h ;008b continuation addr
- jp setupclearscreen ;008f setup display and clear screen 00505h
- ;code continues
- ld a,080h ;0092
- out (0d4h),a ;0094 out 0d4h,80h Hi-res color
- ld de,03000h ;0096 point to display upper left corner
- ld hl,0009fh ;0099 point to message
- jp displaymsg ;009c go display message at HL 00011h
- defb 008h ;009f 8 bytes
- defb 054h ;00a0 T
- defb 065h ;00a1 e
- defb 073h ;00a2 s
- defb 074h ;00a3 t
- defb 069h ;00a4 i
- defb 06eh ;00a5 n
- defb 067h ;00a6 g
- defb 02eh ;00a7 .
- ld a,005h ;00a8
- out (0a3h),a ;00aa DART B command
- ld a,068h ;00ac
- out (0a3h),a ;00ae DART B command
- ld a,0f0h ;00b0 ?????
- out (0c8h),a ;00b2 Map and system control
- ld ix,0c001h ;00b4
- ld bc,000c5h ;00b8
- ld d,009h ;00bb
- ld a,0a0h ;00bd
- out (0c5h),a ;00bf Program map B base
- ld (ix-001h),b ;00c1
- dec b ;00c4
- inc a ;00c5
- out (0c5h),a ;00c6 Program map B base
- ld (ix-001h),b ;00c8
- dec a ;00cb
- out (0c5h),a ;00cc Program map B base
- ld b,(ix-001h) ;00ce
- inc b ;00d1
- jr z,$+4 ;00d2
- ld d,011h ;00d4
- ld b,d ;00d6
- ld hl,00122h ;00d7
- ld de,00000h ;00da
- outi ;00dd
- jr z,$+84 ;00df
- exx ;00e1
- ld b,055h ;00e2 memory check ?
- ld e,000h ;00e4
- ld hl,0c000h ;00e6 graphic memory address
- ld c,b ;00e9
- ld (hl),c ;00ea
- rlc c ;00eb
- inc l ;00ed
- jr nz,$-4 ;00ee
- rlc c ;00f0
- inc h ;00f2
- jr nz,$-9 ;00f3
- ld h,0c0h ;00f5
- ld c,b ;00f7
- ld a,(hl) ;00f8
- xor c ;00f9
- or e ;00fa
- ld e,a ;00fb
- rlc c ;00fc
- inc l ;00fe
- jr nz,$-7 ;00ff
- rlc c ;0101
- inc h ;0103
- jr nz,$-12 ;0104
- rlc b ;0106
- jr nc,$-34 ;0108
- ld a,e ;010a
- exx ;010b
- and a ;010c
- jr z,$+10 ;010d
- inc a ;010f
- jr z,$+6 ;0110
- or d ;0112
- ld d,a ;0113
- jr $+3 ;0114
- inc e ;0116
- ld a,b ;0117
- cp 004h ;0118
- jr nz,$-61 ;011a
- ld a,020h ;011c
- out (0c0h),a ;011e Floppy external control
- jr $-67 ;0120
- and c ;0122
- pop bc ;0123
- pop hl ;0124
- nop ;0125
- jr nz,$+66 ;0126
- ld h,b ;0128
- add a,b ;0129
- and b ;012a
- ret nz ;012b
- ret po ;012c
- ld bc,04121h ;012d
- ld h,c ;0130
- add a,c ;0131
- nop ;0132
- xor a ;0133
- or d ;0134
- or e ;0135
- jr z,$+43 ;0136;
- ld ix,0013fh ;0138
- jp 0058ch ;013c
- ld de,03000h ;013f
- ld hl,00148h ;0142
- jp displaymsg ;0145 00011h
- defb 017h ;0148 count 23
- defb 045h ;0149 Error #2 :Call service.
- defb 072h ;014a
- defb 072h ;014b
- defb 06fh ;014c
- defb 072h ;014d
- defb 020h ;014e
- defb 023h ;014f
- defb 032h ;0150
- defb 020h ;0151
- defb 03ah ;0152
- defb 043h ;0153
- defb 061h ;0154
- defb 06ch ;0155
- defb 06ch ;0156
- defb 020h ;0157
- defb 073h ;0158
- defb 065h ;0159
- defb 072h ;015a
- defb 076h ;015b
- defb 069h ;015c
- defb 063h ;015d
- defb 065h ;015e
- defb 02eh ;015f
- halt ;0160
- out (0c5h),a ;0161 Program map B base
- out (0c8h),a ;0163 Map and system control
- dec hl ;0165
- dec hl ;0166
- ld a,(hl) ;0167
- rrca ;0168
- and 080h ;0169
- ld (0ff80h),a ;016b
- ld de,0ffa6h ;016e
- ld hl,005beh ;0171
- ld bc,0005ah ;0174
- ldir ;0177
- call 00503h ;0179
- call 003d9h ;017c
- call 0061ch ;017f
- ld a,0ffh ;0182
- jr c,$+3 ;0184
- cpl ;0186
- ld (0ff93h),a ;0187
- ld hl,00404h ;018a
- ld (0ff91h),hl ;018d
- or a ;0190
- jr nz,$+50 ;0191
- ld c,010h ;0193
- call 0065ah ;0195
- jr c,$+19 ;0198
- ld bc,00000h ;019a
- call 0040eh ;019d
- jr c,$+11 ;01a0
- call 003a2h ;01a2
- ld a,(0ff8bh) ;01a5
- ld (0ff91h),a ;01a8
- ld c,011h ;01ab
- call 0065ah ;01ad
- jr c,$+19 ;01b0
- ld bc,00000h ;01b2
- call 0040eh ;01b5
- jr c,$+11 ;01b8
- call 003a2h ;01ba
- ld a,(0ff8bh) ;01bd
- ld (0ff92h),a ;01c0
- ld a,001h ;01c3
- ld c,008h ;01c5
- or 0a0h ;01c7
- out (0c0h),a ;01c9 Floppy external control
- ld b,a ;01cb
- in a,(0b0h) ;01cc Floppy status
- rr a ;01ce
- jr c,$-4 ;01d0
- in a,(0b0h) ;01d2 Floppy status
- add a,a ;01d4
- jr c,$+8 ;01d5
- call 0057dh ;01d7
- call 00262h ;01da
- inc c ;01dd
- ld a,b ;01de
- add a,a ;01df
- and 00fh ;01e0
- jr nz,$-27 ;01e2
- ld a,(0ff93h) ;01e4
- or a ;01e7
- jr nz,$+28 ;01e8
- in a,(0ffh) ;01ea ????
- and 020h ;01ec
- jr nz,$+22 ;01ee
- ld c,010h ;01f0
- call 0065ah ;01f2
- ld b,000h ;01f5
- call nc,00262h ;01f7
- ld c,011h ;01fa
- call 0065ah ;01fc
- ld b,000h ;01ff
- call nc,00262h ;0201
- call 00503h ;0204
- ld bc,002a3h ;0207
- ld hl,0061ah ;020a
- otir ;020d
- ld de,03000h ;020f
- ld hl,00218h ;0212
- jp displaymsg ;0215 00011h
- defb 019h ;0218 count 25
- defb 04eh ;0219 No System Device On Line.
- defb 06fh ;021a
- defb 020h ;021b
- defb 053h ;021c
- defb 079h ;021d
- defb 073h ;021e
- defb 074h ;021f
- defb 065h ;0220
- defb 06dh ;0221
- defb 020h ;0222
- defb 044h ;0223
- defb 065h ;0224
- defb 076h ;0225
- defb 069h ;0226
- defb 063h ;0227
- defb 065h ;0228
- defb 020h ;0229
- defb 04fh ;022a
- defb 06eh ;022b
- defb 020h ;022c
- defb 04ch ;022d
- defb 069h ;022e
- defb 06eh ;022f
- defb 065h ;0230
- defb 02eh ;0231
- call 0057dh ;0232
- call 0057dh ;0235
- call 0057dh ;0238
- jp 0017ch ;023b
- ld ix,00245h ;023e
- jp 0058ch ;0242
- call 0056bh ;0245
- rst 10h ;0248
- defb 017h ;0249 count 23
- defb 045h ;024a Error #0: Call service.
- defb 072h ;024b
- defb 072h ;024c
- defb 06fh ;024d
- defb 072h ;024e
- defb 020h ;024f
- defb 023h ;0250
- defb 030h ;0251
- defb 03ah ;0252
- defb 020h ;0253
- defb 043h ;0254
- defb 061h ;0255
- defb 06ch ;0256
- defb 06ch ;0257
- defb 020h ;0258
- defb 073h ;0259
- defb 065h ;025a
- defb 072h ;025b
- defb 076h ;025c
- defb 069h ;025d
- defb 063h ;025e
- defb 065h ;025f
- defb 02eh ;0260
- halt ;0261
- push bc ;0262
- xor a ;0263
- ld (0ff81h),a ;0264
- ld (0ff82h),a ;0267
- rst 8 ;026a
- defb 008h ;026b count 8
- defb 04ch ;026c Loading
- defb 06fh ;026d
- defb 061h ;026e
- defb 064h ;026f
- defb 069h ;0270
- defb 06eh ;0271
- defb 067h ;0272
- defb 020h ;0273
- pop ix ;0274
- call 004a1h ;0276
- jr c,$-59 ;0279
- ld bc,00000h ;027b
- call 0040eh ;027e
- jr c,$+92 ;0281
- ld hl,(0ff81h) ;0283
- ld a,l ;0286
- and a ;0287
- jr z,$+20 ;0288
- ld a,h ;028a
- and 003h ;028b
- in a,(0ffh) ;028d
- jr z,$+9 ;028f
- bit 0,a ;0291
- jr nz,$+9 ;0293
- jp 0034bh ;0295
- bit 1,a ;0298
- jr z,$-5 ;029a
- call 003a2h ;029c
- jp c,00343h ;029f
- jr z,$+20 ;02a2
- call 0040eh ;02a4
- jr c,$+54 ;02a7
- ld hl,0401fh ;02a9
- bit 0,(hl) ;02ac
- jp nz,0034fh ;02ae
- call 0040eh ;02b1
- jr c,$+41 ;02b4
- exx ;02b6
- ld hl,0400eh ;02b7
- ld d,(hl) ;02ba
- inc hl ;02bb
- ld e,(hl) ;02bc
- push de ;02bd
- pop iy ;02be
- ld hl,04080h ;02c0
- ld c,(hl) ;02c3
- inc hl ;02c4
- inc hl ;02c5
- ld d,(hl) ;02c6
- inc hl ;02c7
- ld e,(hl) ;02c8
- inc hl ;02c9
- ld a,(hl) ;02ca
- inc hl ;02cb
- ld l,(hl) ;02cc
- ld h,a ;02cd
- ex de,hl ;02ce
- push hl ;02cf
- ld a,e ;02d0
- add a,0ffh ;02d1
- ld a,d ;02d3
- exx ;02d4
- ld e,000h ;02d5
- adc a,e ;02d7
- ld d,a ;02d8
- pop hl ;02d9
- call 00414h ;02da
- jr c,$+106 ;02dd
- ld a,(0ff8bh) ;02df
- cp 002h ;02e2
- jr z,$+10 ;02e4
- xor a ;02e6
- ex af,af' ;02e7
- exx ;02e8
- jp 0ffa6h ;02e9
- ex af,af' ;02ec
- adc a,c ;02ed
- push ix ;02ee
- pop bc ;02f0
- ld a,(0ff8bh) ;02f1
- ld de,00013h ;02f4
- ld hl,0ff8dh ;02f7
- jr nz,$+69 ;02fa
- cp 002h ;02fc
- jp nz,0ffb8h ;02fe
- push bc ;0301
- bit 3,c ;0302
- jr nz,$+7 ;0304
- ld a,0ffh ;0306
- ld (0ff81h),a ;0308
- in a,(0ffh) ;030b
- ld c,a ;030d
- xor a ;030e
- bit 0,c ;030f
- jr z,$+4 ;0311
- ld a,00fh ;0313
- bit 1,c ;0315
- jr z,$+4 ;0317
- or 0f0h ;0319
- ld b,a ;031b
- ld a,(0ff81h) ;031c
- cpl ;031f
- and a ;0320
- jr z,$+19 ;0321
- push bc ;0323
- push ix ;0324
- pop bc ;0326
- ld a,c ;0327
- sub 007h ;0328
- ld b,a ;032a
- ld a,080h ;032b
- rlca ;032d
- rlca ;032e
- djnz $-2 ;032f
- pop bc ;0331
- and b ;0332
- rrca ;0333
- xor b ;0334
- pop bc ;0335
- ld (0ff81h),a ;0336
- ld a,(0ff8bh) ;0339
- jp 0ffb8h ;033c
- ld a,033h ;033f
- jr $+16 ;0341
- ld a,030h ;0343
- jr $+12 ;0345
- ld a,032h ;0347
- jr $+8 ;0349
- ld a,039h ;034b
- jr $+4 ;034d
- ld a,031h ;034f
- push ix ;0351
- push af ;0353
- call 0056bh ;0354
- push de ;0357
- rst 10h ;0358
- defb 028h ;0359 count 40
- defb 045h ;035a Error #10: Invalid System Disk in Drive
- defb 072h ;035b
- defb 072h ;035c
- defb 06fh ;035d
- defb 072h ;035e
- defb 020h ;035f
- defb 023h ;0360
- defb 031h ;0361
- defb 030h ;0362
- defb 03ah ;0363
- defb 020h ;0364
- defb 049h ;0365
- defb 06eh ;0366
- defb 076h ;0367
- defb 061h ;0368
- defb 06ch ;0369
- defb 069h ;036a
- defb 064h ;036b
- defb 020h ;036c
- defb 053h ;036d
- defb 079h ;036e
- defb 073h ;036f
- defb 074h ;0370
- defb 065h ;0371
- defb 06dh ;0372
- defb 020h ;0373
- defb 044h ;0374
- defb 069h ;0375
- defb 073h ;0376
- defb 06bh ;0377
- defb 020h ;0378
- defb 069h ;0379
- defb 06eh ;037a
- defb 020h ;037b
- defb 044h ;037c
- defb 072h ;037d
- defb 069h ;037e
- defb 076h ;037f
- defb 065h ;0380
- defb 020h ;0381
- pop hl ;0382
- pop bc ;0383
- ld de,00008h ;0384
- add hl,de ;0387
- add hl,de ;0388
- inc hl ;0389
- ld a,004h ;038a Select display memory
- out (0c8h),a ;038c Map and system control
- ld (hl),b ;038e
- xor a ;038f
- out (0c8h),a ;0390 Map and system control
- call 0057dh ;0392
- call 0057dh ;0395
- call 00503h ;0398
- call 003d9h ;039b
- exx ;039e
- pop bc ;039f
- scf ;03a0
- ret ;03a1
- ld a,003h ;03a2
- ld (0ff8bh),a ;03a4
- ld hl,0401dh ;03a7
- ld a,(hl) ;03aa
- cp 0e5h ;03ab
- scf ;03ad
- ret z ;03ae
- cp 06ch ;03af
- scf ;03b1
- ret z ;03b2
- add a,001h ;03b3
- jr nc,$+8 ;03b5
- ld hl,0ff8bh ;03b7
- ld (hl),002h ;03ba
- ret ;03bc
- inc hl ;03bd
- ld b,(hl) ;03be
- ld a,b ;03bf
- inc hl ;03c0
- ld c,(hl) ;03c1
- add a,001h ;03c2
- adc a,c ;03c4
- ld hl,0ff8bh ;03c5
- ld (hl),002h ;03c8
- jr z,$+10 ;03ca
- ld (hl),001h ;03cc
- ld a,b ;03ce
- or c ;03cf
- scf ;03d0
- ret z ;03d1
- or a ;03d2
- ret ;03d3
- ld bc,00001h ;03d4
- or a ;03d7
- ret ;03d8
- ld de,03000h ;03d9
- rst 10h ;03dc
- defb 01dh ;03dd count 29
- defb 052h ;03de R3-00C Ready For System Disk
- defb 033h ;03df
- defb 02dh ;03e0
- defb 030h ;03e1
- defb 030h ;03e2
- defb 043h ;03e3
- defb 020h ;03e4
- defb 052h ;03e5
- defb 065h ;03e6
- defb 061h ;03e7
- defb 064h ;03e8
- defb 079h ;03e9
- defb 020h ;03ea
- defb 046h ;03eb
- defb 06fh ;03ec
- defb 072h ;03ed
- defb 020h ;03ee
- defb 053h ;03ef
- defb 079h ;03f0
- defb 073h ;03f1
- defb 074h ;03f2
- defb 065h ;03f3
- defb 06dh ;03f4
- defb 020h ;03f5
- defb 044h ;03f6
- defb 069h ;03f7
- defb 073h ;03f8
- defb 06bh ;03f9
- defb 020h ;03fa
- call 0057dh ;03fb
- ret ;03fe
- ld b,00ah ;03ff
- ld hl,00000h ;0401
- inc hl ;0404
- ld a,l ;0405
- or h ;0406
- jr nz,$-3 ;0407
- djnz $-5 ;0409
- jp 00133h ;040b
- ld de,00100h ;040e
- ld hl,04000h ;0411
- push bc ;0414
- push ix ;0415
- pop bc ;0417
- ld a,c ;0418
- pop bc ;0419
- cp 010h ;041a
- jp nc,006c1h ;041c
- ld a,005h ;041f
- ex af,af' ;0421
- push bc ;0422
- ex (sp),hl ;0423
- ld a,l ;0424
- and 00fh ;0425
- push bc ;0427
- push af ;0428
- ld a,(0ff81h) ;0429
- and a ;042c
- ld b,000h ;042d
- jr z,$+4 ;042f
- ld b,010h ;0431
- pop af ;0433
- add a,b ;0434
- inc a ;0435
- out (0b2h),a ;0436 Floppy sector register
- add hl,hl ;0438
- add hl,hl ;0439
- add hl,hl ;043a
- add hl,hl ;043b
- cp 011h ;043c
- ld a,h ;043e
- out (0b3h),a ;043f Floppy data register
- jr c,$+18 ;0441
- rra ;0443
- out (0b3h),a ;0444 Floppy data register
- push ix ;0446
- pop bc ;0448
- ld a,b ;0449
- jr nc,$+4 ;044a
- or 010h ;044c
- ld (0ff82h),a ;044e
- out (0c0h),a ;0451 Floppy external control
- pop bc ;0453
- pop hl ;0454
- ld a,01dh ;0455
- call 004b6h ;0457
- and 098h ;045a
- jr nz,$+42 ;045c
- call 004c1h ;045e
- ld a,(0ff82h) ;0461
- bit 4,a ;0464
- ld a,082h ;0466
- jr z,$+4 ;0468
- ld a,08ah ;046a
- call 004b6h ;046c
- and 09ch ;046f
- jr nz,$+21 ;0471
- inc h ;0473
- inc bc ;0474
- dec d ;0475
- ret z ;0476
- ld a,c ;0477
- and 00fh ;0478
- jr z,$-91 ;047a
- in a,(0b2h) ;047c
- inc a ;047e
- out (0b2h),a ;047f Floppy sector register
- ld a,005h ;0481
- ex af,af' ;0483
- jr $-35 ;0484
- scf ;0486
- bit 7,a ;0487
- ret nz ;0489
- ex af,af' ;048a
- dec a ;048b
- jr nz,$-107 ;048c
- ex af,af' ;048e
- bit 4,a ;048f
- jr z,$+14 ;0491
- ld a,(0ff81h) ;0493
- and a ;0496
- jr nz,$+8 ;0497
- cpl ;0499
- ld (0ff81h),a ;049a
- jr $-126 ;049d
- scf ;049f
- ret ;04a0
- push bc ;04a1
- push ix ;04a2
- pop bc ;04a4
- ld a,c ;04a5
- pop bc ;04a6
- cp 010h ;04a7
- jp nc,00788h ;04a9
- ld a,001h ;04ac
- call 004b6h ;04ae
- and 004h ;04b1
- ret nz ;04b3
- scf ;04b4
- ret ;04b5
- out (0b0h),a ;04b6 Floppy status
- in a,(0b4h) ;04b8
- bit 4,a ;04ba
- jr z,$-4 ;04bc
- in a,(0b0h) ;04be
- ret ;04c0
- push bc ;04c1
- ld bc,0b301h ;04c2
- jr $+6 ;04c5
- push bc ;04c7
- ld bc,07803h ;04c8
- ld a,b ;04cb
- ld (0ff8ch),a ;04cc
- ld a,c ;04cf
- out (0b4h),a ;04d0 PIO A data
- ld bc,006ach ;04d2
- ld a,0c3h ;04d5
- out (c),a ;04d7
- djnz $-2 ;04d9
- ld a,07dh ;04db
- out (c),a ;04dd
- out (c),l ;04df
- out (c),h ;04e1
- out (c),e ;04e3
- out (c),d ;04e5
- push hl ;04e7
- ld hl,004fbh ;04e8
- ld b,003h ;04eb
- otir ;04ed
- ld a,(0ff8ch) ;04ef
- out (c),a ;04f2
- ld b,005h ;04f4
- otir ;04f6
- pop hl ;04f8
- pop bc ;04f9
- ret ;04fa
- inc d ;04fb
- jr z,$-121 ;04fc
- adc a,d ;04fe
- rst 8 ;04ff
- ld bc,087cfh ;0500
- pop ix ;0503
- setupclearscreen:
- ;entry during initiation with IX=0092
- xor a ;0505 start A=0
- ld bc,00eb9h ;0506 C=B9 B=14
- ld hl,0054fh ;0509
- out (0b8h),a ;050c CRT register select
- inc a ;050e A++
- outi ;050f C)=(HL++) and B--
- jr nz,$-5 ;0511 loop until B==0 (14 bytes to write)
- ld de,03002h ;0513
- ld hl,03000h ;0516
- ld bc,00ffeh ;0519
- ;RST 08 jump in here HL=300C DE=300E BC=4E IX=032F
- ld a,004h ;051c Select display memory
- out (0c8h),a ;051e Output to screen out C8,04 Map and system control
- xor a ;0520
- ld (hl),a ;0521 put 00h at 3000h or 300Ch
- inc hl ;0522 bump
- ld (hl),020h ;0523 put 20h at 3001h or 300Dh
- dec hl ;0525 go back point to original
- ldir ;0526 copy 00 20 through 4K or 80 words
- xor a ;0528 Reset map A=0
- out (0c8h),a ;0529 out C8,00 Map and system control
- jp (ix) ;052b continue
- cleartopline:
- ;process RST 08 entry DE=300C
- push de ;052d save old DE
- ld l,e ;052e HL=DE
- ld h,d ;052f
- inc de ;0530 DE+=2
- inc de ;0531
- ld bc,0004eh ;0532 80-2
- push ix ;0535 save old IX
- ld ix,0053dh ;0537 exit addr
- jr $-31 ;053b clear line 300C 80char
- ;clear line returns here
- pop ix ;053d restore old IX
- pop de ;053f restore old DE
- ret ;0540
- printroutine:
- ;print routine
- ;BC count
- ;HL message source
- ;DE screen target
- ld a,004h ;0541 Select display memory
- out (0c8h),a ;0543 Output to screen Map and system control
- inc de ;0545 do every other addr
- ldi ;0546 (DE++)=(HL++) and BC--
- jp pe,00545h ;0548 repeat while BC not 0
- xor a ;054b Reset map
- out (0c8h),a ;054c Reset to memory Map and system control
- jp (hl) ;054e
- ;data to be output to io port B9 14 byte CRT data register
- defb 069h ;054f
- defb 050h ;0550
- defb 056h ;0551
- defb 00bh ;0552
- defb 019h ;0553
- defb 003h ;0554
- defb 018h ;0555
- defb 018h ;0556
- defb 000h ;0557
- defb 00bh ;0558
- defb 020h ;0559
- defb 000h ;055a
- defb 000h ;055b
- defb 000h ;055c
- ;
- pop hl ;055d
- jr $+4 ;055e
- ;
- otir ;0560 out B bytes from (HL) to (C)
- ;
- otirloop:
- ld c,(hl) ;0562 get register
- inc hl ;0563 bump
- ld b,(hl) ;0564 get count
- inc hl ;0565 bump
- ld a,b ;0566 evaluate count
- and a ;0567
- jr nz,$-8 ;0568 if count not 0 loop
- jp (hl) ;056a
- ld de,03100h ;056b
- ld a,00fh ;056e
- out (0b8h),a ;0570 CRT register select
- xor a ;0572
- out (0b9h),a ;0573 CRT data register
- in a,(0bbh) ;0575
- or a ;0577
- ret nz ;0578
- ld de,030a0h ;0579
- ret ;057c
- ;
- ld hl,04600h ;057d
- dec hl ;0580
- ex (sp),hl ;0581
- ex (sp),hl ;0582
- ex (sp),hl ;0583
- ex (sp),hl ;0584
- ld a,l ;0585
- or h ;0586
- jr nz,$-7 ;0587
- ret ;0589
- pop ix ;058a
- ld a,00fh ;058c
- out (0b8h),a ;058e CRT register select
- xor a ;0590
- out (0b9h),a ;0591 CRT data register
- in a,(0bbh) ;0593 ????
- and a ;0595
- jr nz,$+6 ;0596
- ld a,081h ;0598
- out (0d4h),a ;059a Hi-res color
- ld bc,006cch ;059c
- ld hl,005b8h ;059f
- otir ;05a2
- ld bc,00000h ;05a4
- ex (sp),hl ;05a7
- ex (sp),hl ;05a8
- dec bc ;05a9
- ld a,b ;05aa
- or c ;05ab
- jr nz,$-5 ;05ac
- ld a,080h ;05ae
- out (0d4h),a ;05b0 Hi-res color
- ld a,09fh ;05b2
- out (0cch),a ;05b4 ?????
- jp (ix) ;05b6
- adc a,(hl) ;05b8
- inc b ;05b9
- sub d ;05ba
- cp a ;05bb
- rst 18h ;05bc
- rst 38h ;05bd
- ld a,001h ;05be
- out (0c8h),a ;05c0 Map and system control
- ex af,af' ;05c2
- adc a,(hl) ;05c3
- ex af,af' ;05c4
- inc hl ;05c5
- dec de ;05c6
- ld a,e ;05c7
- or d ;05c8
- jr nz,$-7 ;05c9
- out (0c8h),a ;05cb Map and system control
- jp 002ech ;05cd
- cp 002h ;05d0
- ld a,001h ;05d2
- out (0c8h),a ;05d4 Map and system control
- jr nz,$+31 ;05d6
- ld a,(0ff81h) ;05d8
- ld (00022h),a ;05db
- ld a,c ;05de
- sub 010h ;05df
- jr c,$+20 ;05e1
- ld c,a ;05e3
- jr z,$+10 ;05e4
- ld a,(0ff8fh) ;05e6
- cp 095h ;05e9
- jr nz,$+3 ;05eb
- inc c ;05ed
- ld a,004h ;05ee
- add a,c ;05f0
- ld c,a ;05f1
- push bc ;05f2
- pop ix ;05f3
- ld a,(0ff80h) ;05f5
- or c ;05f8
- ld c,a ;05f9
- ld a,(0ff91h) ;05fa
- ld (de),a ;05fd
- inc de ;05fe
- push bc ;05ff
- ld bc,00004h ;0600
- ldir ;0603
- ld de,00023h ;0605
- ld hl,0ff8dh ;0608
- ld a,(0ff92h) ;060b
- ld (de),a ;060e
- inc de ;060f
- ld bc,00004h ;0610
- ldir ;0613
- pop bc ;0615
- jp (iy) ;0616
- dec b ;0618
- add a,b ;0619
- dec b ;061a
- nop ;061b
- ld bc,002a3h ;061c
- ld hl,00618h ;061f
- otir ;0622
- ld b,0ffh ;0624
- in a,(079h) ;0626
- cp 0c7h ;0628
- jr z,$+6 ;062a
- djnz $-6 ;062c
- scf ;062e
- ret ;062f
- call 00723h ;0630
- ret c ;0633
- in a,(0ffh) ;0634
- rra ;0636
- rra ;0637
- and 007h ;0638
- ld hl,007e2h ;063a
- jr z,$+18 ;063d
- ld hl,007d6h ;063f
- dec a ;0642
- jr z,$+5 ;0643
- ld hl,007cah ;0645
- call 0076bh ;0648
- call 00723h ;064b
- ret c ;064e
- ld de,0ff8dh ;064f
- ld bc,00004h ;0652
- ldir ;0655
- jp 0077fh ;0657
- push bc ;065a
- pop ix ;065b
- ld a,010h ;065d
- sub c ;065f
- jr z,$+4 ;0660
- ld a,020h ;0662
- ld hl,0ff83h ;0664
- ld b,004h ;0667
- ld (hl),008h ;0669
- inc hl ;066b
- ld (hl),a ;066c
- inc hl ;066d
- ld (hl),000h ;066e
- djnz $-3 ;0670
- call 00723h ;0672
- ret c ;0675
- call 0074bh ;0676
- call 00738h ;0679
- and 002h ;067c
- ret z ;067e
- scf ;067f
- ret ;0680
- push bc ;0681
- call 0056bh ;0682
- rst 10h ;0685
- defb 028h ;0686 sount 40
- defb 045h ;0687 Error 1: Disk system error, Call Service
- defb 072h ;0688
- defb 072h ;0689
- defb 06fh ;068a
- defb 072h ;068b
- defb 020h ;068c
- defb 031h ;068d
- defb 03ah ;068e
- defb 020h ;068f
- defb 044h ;0690
- defb 069h ;0691
- defb 073h ;0692
- defb 06bh ;0693
- defb 020h ;0694
- defb 073h ;0695
- defb 079h ;0696
- defb 073h ;0697
- defb 074h ;0698
- defb 065h ;0699
- defb 06dh ;069a
- defb 020h ;069b
- defb 065h ;069c
- defb 072h ;069d
- defb 072h ;069e
- defb 06fh ;069f
- defb 072h ;06a0
- defb 02ch ;06a1
- defb 020h ;06a2
- defb 043h ;06a3
- defb 061h ;06a4
- defb 06ch ;06a5
- defb 06ch ;06a6
- defb 020h ;06a7
- defb 053h ;06a8
- defb 065h ;06a9
- defb 072h ;06aa
- defb 076h ;06ab
- defb 069h ;06ac
- defb 063h ;06ad
- defb 065h ;06ae
- call 0057dh ;06af
- call 0057dh ;06b2
- call 0057dh ;06b5
- call 00503h ;06b8
- call 003d9h ;06bb
- pop bc ;06be
- scf ;06bf
- ret ;06c0
- call 004c7h ;06c1
- ld a,b ;06c4
- ld (0ff85h),a ;06c5
- ld a,c ;06c8
- ld (0ff86h),a ;06c9
- ld a,d ;06cc
- ld (0ff87h),a ;06cd
- push bc ;06d0
- push hl ;06d1
- call 00723h ;06d2
- jp c,006fbh ;06d5
- ld hl,0ff83h ;06d8
- ld bc,00678h ;06db
- in a,(079h) ;06de
- and 041h ;06e0
- jr nz,$-4 ;06e2
- outi ;06e4
- jr nz,$-8 ;06e6
- out (07ah),a ;06e8 ?????
- nop ;06ea
- in a,(079h) ;06eb
- and 044h ;06ed
- jr nz,$-4 ;06ef
- out (07bh),a ;06f1 ????
- call 00738h ;06f3
- and 002h ;06f6
- call nz,006ffh ;06f8
- pop hl ;06fb
- pop bc ;06fc
- inc bc ;06fd
- ret ;06fe
- call 00723h ;06ff
- ret c ;0702
- ld a,003h ;0703
- call 0074dh ;0705
- ld bc,00478h ;0708
- ld hl,0ff89h ;070b
- in a,(079h) ;070e
- cp 00fh ;0710
- jr nz,$-4 ;0712
- ini ;0714
- jr nz,$-8 ;0716
- call 00738h ;0718
- ld a,(0ff89h) ;071b
- sub 098h ;071e
- ret z ;0720
- scf ;0721
- ret ;0722
- in a,(079h) ;0723
- and 080h ;0725
- scf ;0727
- ret z ;0728
- ld a,001h ;0729
- out (079h),a ;072b ????
- ld b,0ffh ;072d
- in a,(079h) ;072f
- and 080h ;0731
- ret z ;0733
- djnz $-5 ;0734
- scf ;0736
- ret ;0737
- in a,(079h) ;0738
- and 044h ;073a
- jr nz,$-4 ;073c
- in a,(078h) ;073e
- ld b,a ;0740
- in a,(079h) ;0741
- and 042h ;0743
- jr nz,$-4 ;0745
- in a,(078h) ;0747
- ld a,b ;0749
- ret ;074a
- ld a,000h ;074b
- call 00760h ;074d
- ld a,(0ff84h) ;0750
- call 00760h ;0753
- ld a,000h ;0756
- ld b,004h ;0758
- call 00760h ;075a
- djnz $-3 ;075d
- ret ;075f
- push af ;0760
- in a,(079h) ;0761
- and 041h ;0763
- jr nz,$-4 ;0765
- pop af ;0767
- out (078h),a ;0768 Step out
- ret ;076a
- ld a,00ch ;076b
- call 0074dh ;076d
- ld bc,00878h ;0770
- in a,(079h) ;0773
- cp 007h ;0775
- jr nz,$-4 ;0777
- outi ;0779
- jr nz,$-8 ;077b
- jr $-69 ;077d
- ld a,0e4h ;077f
- call 00794h ;0781
- ret z ;0784
- jp 00681h ;0785
- call 00723h ;0788
- ret c ;078b
- ld a,001h ;078c
- call 00794h ;078e
- ret z ;0791
- jr $+11 ;0792
- call 0074dh ;0794
- call 00738h ;0797
- and 002h ;079a
- ret ;079c
- call 0056bh ;079d
- rst 10h ;07a0
- defb 027h ;07a1 count 39
- defb 045h ;07a2 Error 3: Disk Malfunction, Call Service
- defb 072h ;07a3
- defb 072h ;07a4
- defb 06fh ;07a5
- defb 072h ;07a6
- defb 020h ;07a7
- defb 033h ;07a8
- defb 03ah ;07a9
- defb 020h ;07aa
- defb 044h ;07ab
- defb 069h ;07ac
- defb 073h ;07ad
- defb 06bh ;07ae
- defb 020h ;07af
- defb 04dh ;07b0
- defb 061h ;07b1
- defb 06ch ;07b2
- defb 066h ;07b3
- defb 075h ;07b4
- defb 06eh ;07b5
- defb 063h ;07b6
- defb 074h ;07b7
- defb 069h ;07b8
- defb 06fh ;07b9
- defb 06eh ;07ba
- defb 02ch ;07bb
- defb 020h ;07bc
- defb 043h ;07bd
- defb 061h ;07be
- defb 06ch ;07bf
- defb 06ch ;07c0
- defb 020h ;07c1
- defb 053h ;07c2
- defb 065h ;07c3
- defb 072h ;07c4
- defb 076h ;07c5
- defb 069h ;07c6
- defb 063h ;07c7
- defb 065h ;07c8
- halt ;07c9
- ld bc,00432h ;07ca
- ld bc,00031h ;07cd
- ld b,b ;07d0
- dec bc ;07d1
- ld b,000h ;07d2
- sub l ;07d4
- rst 38h ;07d5
- ld bc,00232h ;07d6
- ld bc,00031h ;07d9
- ld b,b ;07dc
- dec bc ;07dd
- ld b,000h ;07de
- ld c,d ;07e0
- rst 38h ;07e1
- nop ;07e2
- nop ;07e3
- ld c,d ;07e4
- rst 38h ;07e5
- rst 38h ;07e6
- rst 38h ;07e7
- rst 38h ;07e8
- rst 38h ;07e9
- rst 38h ;07ea
- rst 38h ;07eb
- rst 38h ;07ec
- rst 38h ;07ed
- rst 38h ;07ee
- rst 38h ;07ef
- rst 38h ;07f0
- rst 38h ;07f1
- rst 38h ;07f2
- rst 38h ;07f3
- rst 38h ;07f4
- rst 38h ;07f5
- rst 38h ;07f6
- rst 38h ;07f7
- rst 38h ;07f8
- rst 38h ;07f9
- rst 38h ;07fa
- rst 38h ;07fb
- rst 38h ;07fc
- rst 38h ;07fd
- rst 38h ;07fe
- rst 38h ;07ff
|