Bard's Tale III C64 Musings

Any developer realated stuff
Post Reply
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Bard's Tale III C64 Musings

Post by Darendor »

So I decided to try to take a look at the BOOT disk for the C64 version of Bard's Tale III.

The first file, called PRODOS, disassembles thus:
(Annotations added by me)

Code: Select all

02bc 12       ???		
02bd 08       php 		Memory location 0812
02be 0a       asl a		J
02bf 00       brk 		
02c0 93       ???		Unknown
02c1 20 22 50 jsr $5022		_"P
02c4 52       ???		R
02c5 4f       ???		O
02c6 44       ???		D
02c7 4f       ???		O
02c8 53       ???		S
02c9 22       ???		"
02ca 2c 38 2c bit $2c38		,8,
02cd 31 00    and ($00),y	1
02cf 00       brk 
02d0 00       brk 
02d1 32       ???		2
02d2 2e 30			.0
02d4 a9 00    lda #$00
02d6 8d 11 d0 sta $d011		Turn screen off
02d9 8d 20 d0 sta $d020		Turn border black
02dc a9 02    lda #$02
02de a2 08    ldx #$08
02e0 a0 01    ldy #$01
02e2 20 ba ff jsr $ffba		SETLFS | Logical #2, Device #8, Secondary #1
02e5 a9 03    lda #$03
02e7 a2 d1    ldx #$d1
02e9 a0 02    ldy #$02
02eb 20 bd ff jsr $ffbd		SETNAM | Length = 3, Lo byte of name, Hi byte of name
02ee a9 00    lda #$00
02f0 20 d5 ff jsr $ffd5		LOAD | 0 = Load mode (as opposed to verify mode)
02f3 a9 36    lda #$36
02f5 85 01    sta $01		Processor port; RAM $a000-$bfff; KERNAL$e0000-$ffff
02f7 a9 2f    lda #$2f
02f9 85 00    sta $00		Processor port data direction; set to default mode
02fb a9 00    lda #$00
02fd 4c 0e c2 jmp $c20e		Execute $c20e once 2.0 file is done loading
0300 d4       ???
0301 02       ???
0302 d4       ???
0303 02       ???
It escapes me how it manages to auto-load, exactly, but that's not important.

The following file, 2.0, is a bit more arcane. I haven't finished combing through the code, but I've discovered that it references a file called "B-E 2 0 18 13". It also calls a file named "#", which as far as I can tell, simply reloads the PRODOS file, for whatever reason. :?

More to come.
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

Here's the "2.0" file.

This is the main loader program, apparently. The PRODOS program loads it and calls $c20e in memory to execute it. Or something.

Weirdly, it references 2 files:

- B-E 2 0 18 13
- # (This seems tell the drive to load the first file on disk, as per the LOAD "*",8,1 function)

It also mentions a file named "mBARD64.SYSTEM"; the code at $c500 seems to address it.

Again, annotations and comments added by me.

Code: Select all

c000 00       brk 
c001 80       ???		
c002 20 a0 40 jsr $40a0
c005 c0 60    cpy #$60
c007 e0 10    cpx #$10
c009 90 30    bcc $c03b
c00b b0 50    bcs $c05d
c00d d0 70    bne $c07f
c00f f0 08    beq $c019
c011 88       dey 
c012 28       plp 
c013 a8       tay 
c014 48       pha 
c015 c8       iny 
c016 68       pla 
c017 e8       inx 
c018 18       clc 
c019 98       tya 
c01a 38       sec 
c01b b8       clv 
c01c 58       cli 
c01d d8       cld 
c01e 78       sei 
c01f f8       sed 
c020 02       ???
c021 82       ???
c022 22       ???
c023 a2 42    ldx #$42
c025 c2       ???
c026 62       ???
c027 e2       ???
c028 12       ???
c029 92       ???
c02a 32       ???
c02b b2       ???
c02c 52       ???
c02d d2       ???
c02e 72       ???
c02f f2       ???
c030 0a       asl a
c031 8a       txa 
c032 2a       rol a
c033 aa       tax 
c034 4a       lsr a
c035 ca       dex 
c036 6a       ror a
c037 ea       nop 
c038 1a       ???
c039 9a       txs 
c03a 3a       ???
c03b ba       tsx 
c03c 5a       ???
c03d da       ???
c03e 7a       ???
c03f fa       ???
c040 04       ???
c041 84 24    sty $24
c043 a4 44    ldy $44
c045 c4 64    cpy $64
c047 e4 14    cpx $14
c049 94 34    sty $34,x
c04b b4 54    ldy $54,x
c04d d4       ???
c04e 74       ???
c04f f4       ???
c050 0c       ???
c051 8c 2c ac sty $ac2c
c054 4c cc 6c jmp $6ccc
c057 ec 1c 9c cpx $9c1c
c05a 3c       ???
c05b bc 5c dc ldy $dc5c,x
c05e 7c       ???
c05f fc       ???
c060 06 86    asl $86
c062 26 a6    rol $a6
c064 46 c6    lsr $c6
c066 66 e6    ror $e6
c068 16 96    asl $96,x
c06a 36 b6    rol $b6,x
c06c 56 d6    lsr $d6,x
c06e 76 f6    ror $f6,x
c070 0e 8e 2e asl $2e8e
c073 ae 4e ce ldx $ce4e
c076 6e ee 1e ror $1eee
c079 9e       ???
c07a 3e be 5e rol $5ebe,x
c07d de 7e fe dec $fe7e,x
c080 01 81    ora ($81,x)
c082 21 a1    and ($a1,x)
c084 41 c1    eor ($c1,x)
c086 61 e1    adc ($e1,x)
c088 11 91    ora ($91),y
c08a 31 b1    and ($b1),y
c08c 51 d1    eor ($d1),y
c08e 71 f1    adc ($f1),y
c090 09 89    ora #$89
c092 29 a9    and #$a9
c094 49 c9    eor #$c9
c096 69 e9    adc #$e9
c098 19 99 39 ora $3999,y
c09b b9 59 d9 lda $d959,y
c09e 79 f9 03 adc $03f9,y
c0a1 83       ???
c0a2 23       ???
c0a3 a3       ???
c0a4 43       ???
c0a5 c3       ???
c0a6 63       ???
c0a7 e3       ???
c0a8 13       ???
c0a9 93       ???
c0aa 33       ???
c0ab b3       ???
c0ac 53       ???
c0ad d3       ???
c0ae 73       ???
c0af f3       ???
c0b0 0b       ???
c0b1 8b       ???
c0b2 2b       ???
c0b3 ab       ???
c0b4 4b       ???
c0b5 cb       ???
c0b6 6b       ???
c0b7 eb       ???
c0b8 1b       ???
c0b9 9b       ???
c0ba 3b       ???
c0bb bb       ???
c0bc 5b       ???
c0bd db       ???
c0be 7b       ???
c0bf fb       ???
c0c0 05 85    ora $85
c0c2 25 a5    and $a5
c0c4 45 c5    eor $c5
c0c6 65 e5    adc $e5
c0c8 15 95    ora $95,x
c0ca 35 b5    and $b5,x
c0cc 55 d5    eor $d5,x
c0ce 75 f5    adc $f5,x
c0d0 0d 8d 2d ora $2d8d
c0d3 ad 4d cd lda $cd4d
c0d6 6d ed 1d adc $1ded
c0d9 9d 3d bd sta $bd3d,x
c0dc 5d dd 7d eor $7ddd,x
c0df fd 07 87 sbc $8707,x
c0e2 27       ???
c0e3 a7       ???
c0e4 47       ???
c0e5 c7       ???
c0e6 67       ???
c0e7 e7       ???
c0e8 17       ???
c0e9 97       ???
c0ea 37       ???
c0eb b7       ???
c0ec 57       ???
c0ed d7       ???
c0ee 77       ???
c0ef f7       ???
c0f0 0f       ???
c0f1 8f       ???
c0f2 2f       ???
c0f3 af       ???
c0f4 4f       ???
c0f5 cf       ???
c0f6 6f       ???
c0f7 ef       ???
c0f8 1f       ???
c0f9 9f       ???
c0fa 3f       ???
c0fb bf       ???
c0fc 5f       ???
c0fd df       ???
c0fe 7f       ???
c0ff ff       ???
c100 0f       ???
c101 0f       ???
c102 0f       ???
c103 0f       ???
c104 0f       ???
c105 0f       ???
c106 0f       ???
c107 0f       ???
c108 0f       ???
c109 0f       ???
c10a 0f       ???
c10b 0f       ???
c10c 0f       ???
c10d 0f       ???
c10e 0f       ???
c10f 0f       ???
c110 0f       ???
c111 0f       ???
c112 0f       ???
c113 0f       ???
c114 0f       ???
c115 0f       ???
c116 0f       ???
c117 0f       ???
c118 0f       ???
c119 0f       ???
c11a 0f       ???
c11b 0f       ???
c11c 0f       ???
c11d 0f       ???
c11e 0f       ???
c11f 0f       ???
c120 0f       ???
c121 0f       ???
c122 0f       ???
c123 0f       ???
c124 0f       ???
c125 0f       ???
c126 0f       ???
c127 0f       ???
c128 0f       ???
c129 0f       ???
c12a 0f       ???
c12b 0f       ???
c12c 0f       ???
c12d 0f       ???
c12e 0f       ???
c12f 0f       ???
c130 0f       ???
c131 0f       ???
c132 0f       ???
c133 0f       ???
c134 0f       ???
c135 0f       ???
c136 00       brk 
c137 00       brk 
c138 0f       ???
c139 0f       ???
c13a 0f       ???
c13b 0f       ???
c13c 0f       ???
c13d 0f       ???
c13e 00       brk 
c13f 00       brk 
c140 0f       ???
c141 0f       ???
c142 0f       ???
c143 0f       ???
c144 0f       ???
c145 0f       ???
c146 00       brk 
c147 00       brk 
c148 0f       ???
c149 0f       ???
c14a 0f       ???
c14b 0f       ???
c14c 0f       ???
c14d 0f       ???
c14e 00       brk 
c14f 00       brk 
c150 0f       ???
c151 0f       ???
c152 0f       ???
c153 0f       ???
c154 0f       ???
c155 0f       ???
c156 00       brk 
c157 00       brk 
c158 0f       ???
c159 0f       ???
c15a 0f       ???
c15b 0f       ???
c15c 0f       ???
c15d 0f       ???
c15e 00       brk 
c15f 00       brk 
c160 0f       ???
c161 0f       ???
c162 0f       ???
c163 0f       ???
c164 0f       ???
c165 0f       ???
c166 00       brk 
c167 00       brk 
c168 0f       ???
c169 0f       ???
c16a 0f       ???
c16b 0f       ???
c16c 0f       ???
c16d 0f       ???
c16e 00       brk 
c16f 00       brk 
c170 0f       ???
c171 0f       ???
c172 0f       ???
c173 0f       ???
c174 0f       ???
c175 0f       ???
c176 00       brk 
c177 00       brk 
c178 0f       ???
c179 0f       ???
c17a 0f       ???
c17b 0f       ???
c17c 0f       ???
c17d 0f       ???
c17e 00       brk 
c17f 00       brk 
c180 0f       ???
c181 0f       ???
c182 0f       ???
c183 0f       ???
c184 0f       ???
c185 0f       ???
c186 00       brk 
c187 00       brk 
c188 0f       ???
c189 0f       ???
c18a 0f       ???
c18b 0f       ???
c18c 0f       ???
c18d 0f       ???
c18e 00       brk 
c18f 00       brk 
c190 0f       ???
c191 0f       ???
c192 0f       ???
c193 0f       ???
c194 0f       ???
c195 0f       ???
c196 00       brk 
c197 00       brk 
c198 0f       ???
c199 0f       ???
c19a 0f       ???
c19b 0f       ???
c19c 0f       ???
c19d 0f       ???
c19e 00       brk 
c19f 00       brk 
c1a0 0f       ???
c1a1 0f       ???
c1a2 0f       ???
c1a3 0f       ???
c1a4 0f       ???
c1a5 0f       ???
c1a6 00       brk 
c1a7 00       brk 
c1a8 0f       ???
c1a9 0f       ???
c1aa 0f       ???
c1ab 0f       ???
c1ac 0f       ???
c1ad 0f       ???
c1ae 00       brk 
c1af 00       brk 
c1b0 0f       ???
c1b1 0f       ???
c1b2 0f       ???
c1b3 0f       ???
c1b4 0f       ???
c1b5 0f       ???
c1b6 00       brk 
c1b7 00       brk 
c1b8 0f       ???
c1b9 0f       ???
c1ba 0f       ???
c1bb 0f       ???
c1bc 0f       ???
c1bd 0f       ???
c1be 00       brk 
c1bf 00       brk 
c1c0 0f       ???
c1c1 0f       ???
c1c2 0f       ???
c1c3 0f       ???
c1c4 0f       ???
c1c5 0f       ???
c1c6 00       brk 
c1c7 00       brk 
c1c8 0f       ???
c1c9 0f       ???
c1ca 0f       ???
c1cb 0f       ???
c1cc 0f       ???
c1cd 0f       ???
c1ce 00       brk 
c1cf 00       brk 
c1d0 0f       ???
c1d1 0f       ???
c1d2 0f       ???
c1d3 0f       ???
c1d4 0f       ???
c1d5 0f       ???
c1d6 00       brk 
c1d7 00       brk 
c1d8 0f       ???
c1d9 0f       ???
c1da 0f       ???
c1db 0f       ???
c1dc 0f       ???
c1dd 0f       ???
c1de 00       brk 
c1df 00       brk 
c1e0 0f       ???
c1e1 0f       ???
c1e2 0f       ???
c1e3 0f       ???
c1e4 0f       ???
c1e5 0f       ???
c1e6 00       brk 
c1e7 00       brk 
c1e8 0f       ???
c1e9 0f       ???
c1ea 0f       ???
c1eb 0f       ???
c1ec 0f       ???
c1ed 0f       ???
c1ee 00       brk 
c1ef 00       brk 
c1f0 0f       ???
c1f1 0f       ???
c1f2 0f       ???
c1f3 0f       ???
c1f4 0f       ???
c1f5 0f       ???
c1f6 00       brk 
c1f7 00       brk 
c1f8 0f       ???
c1f9 0f       ???
c1fa 0f       ???
c1fb 0f       ???
c1fc 0f       ???
c1fd 0f       ???
c1fe 00       brk 
c1ff 00       brk 
c200 0f       ???
c201 0f       ???
c202 0f       ???
c203 0f       ???
c204 0f       ???
c205 0f       ???
c206 00       brk 
c207 00       brk 
c208 4c 54 c3 jmp $c354
c20b 4c 00 c5 jmp $c500
c20e 4c cf c4 jmp $c4cf		Program start, as per PRODOS
c211 4c da c2 jmp $c2da
c214 00       brk 
c215 00       brk 
c216 00       brk 
c217 58       cli 
c218 78       sei 
c219 2c 00 dd bit $dd00
c21c 50 f9    bvc $c217
c21e 85 3a    sta $3a
c220 a0 04    ldy #$04
c222 ea       nop 
c223 ea       nop 
c224 ea       nop 
c225 a9 17    lda #$17
c227 06 3a    asl $3a
c229 90 02    bcc $c22d
c22b a9 37    lda #$37
c22d 8d 00 dd sta $dd00
c230 ea       nop 
c231 ea       nop 
c232 ea       nop 
c233 ea       nop 
c234 a9 07    lda #$07
c236 06 3a    asl $3a
c238 90 02    bcc $c23c
c23a a9 27    lda #$27
c23c 8d 00 dd sta $dd00
c23f ea       nop 
c240 ea       nop 
c241 ea       nop 
c242 ea       nop 
c243 ea       nop 
c244 88       dey 
c245 d0 db    bne $c222
c247 a9 27    lda #$27
c249 8d 00 dd sta $dd00
c24c 58       cli 
c24d 60       rts 
c24e ad 11 d0 lda $d011
c251 29 07    and #$07
c253 49 07    eor #$07
c255 85 3b    sta $3b
c257 a9 c1    lda #$c1
c259 85 3c    sta $3c
c25b a9 27    lda #$27
c25d 8d 00 dd sta $dd00
c260 ad 00 dd lda $dd00
c263 4a       lsr a
c264 4a       lsr a
c265 29 03    and #$03
c267 4d 00 dd eor $dd00
c26a 29 0f    and #$0f
c26c 49 ff    eor #$ff
c26e 85 39    sta $39
c270 a5 42    lda $42
c272 20 17 c2 jsr $c217
c275 ad 15 c2 lda $c215
c278 20 17 c2 jsr $c217
c27b ad 16 c2 lda $c216
c27e 20 17 c2 jsr $c217
c281 a9 c7    lda #$c7
c283 8d 00 dd sta $dd00
c286 60       rts 
c287 58       cli 
c288 78       sei 
c289 ac 12 d0 ldy $d012
c28c b1 3b    lda ($3b),y
c28e f0 f7    beq $c287
c290 2d 00 dd and $dd00
c293 8d 00 dd sta $dd00
c296 09 20    ora #$20
c298 a8       tay 
c299 ea       nop 
c29a ea       nop 
c29b ea       nop 
c29c ea       nop 
c29d ad 00 dd lda $dd00
c2a0 4a       lsr a
c2a1 4a       lsr a
c2a2 ea       nop 
c2a3 4d 00 dd eor $dd00
c2a6 4a       lsr a
c2a7 4a       lsr a
c2a8 ea       nop 
c2a9 4d 00 dd eor $dd00
c2ac 4a       lsr a
c2ad 4a       lsr a
c2ae ea       nop 
c2af 4d 00 dd eor $dd00
c2b2 8c 00 dd sty $dd00
c2b5 45 39    eor $39
c2b7 a8       tay 
c2b8 b9 00 c0 lda $c000,y
c2bb 58       cli 
c2bc 60       rts 
c2bd ad 00 dd lda $dd00
c2c0 29 0f    and #$0f
c2c2 09 20    ora #$20
c2c4 8d 00 dd sta $dd0
c2c7 20 d9 c2 jsr $c2d9
c2ca a9 40    lda #$40
c2cc 58       cli 
c2cd 78       sei 
c2ce 2c 00 dd bit $dd00
c2d1 f0 f9    beq $c2cc
c2d3 a2 14    ldx #$14
c2d5 ca       dex 
c2d6 d0 fd    bne $c2d5
c2d8 58       cli 
c2d9 60       rts 
c2da a5 01    lda $01
c2dc 48       pha 
c2dd a9 35    lda #$35
c2df 85 01    sta $01
c2e1 ad 15 d0 lda $d015
c2e4 48       pha 
c2e5 a9 00    lda #$00
c2e7 8d 15 d0 sta $d015
c2ea a5 44    lda $44
c2ec 8d 33 c3 sta $c333
c2ef 8d 0e c3 sta $c30e
c2f2 a5 45    lda $45
c2f4 8d 34 c3 sta $c334
c2f7 8d 0f c3 sta $c30f
c2fa 20 4e c2 jsr $c24e
c2fd a5 42    lda $42
c2ff c9 03    cmp #$03
c301 f0 17    beq $c31a
c303 c9 02    cmp #$02
c305 d0 1f    bne $c326
c307 a2 00    ldx #$00
c309 a0 34    ldy #$34
c30b 84 01    sty $01
c30d bd ff ff lda $ffff,x
c310 a0 35    ldy #$35
c312 84 01    sty $01
c314 20 17 c2 jsr $c217
c317 e8       inx 
c318 d0 ef    bne $c309
c31a 20 bd c2 jsr $c2bd
c31d 20 87 c2 jsr $c287
c320 8d 14 c2 sta $c214
c323 4c 42 c3 jmp $c342
c326 20 bd c2 jsr $c2bd
c329 a2 00    ldx #$00
c32b 20 87 c2 jsr $c287
c32e a0 34    ldy #$34
c330 84 01    sty $01
c332 9d ff ff sta $ffff,x
c335 a0 35    ldy #$35
c337 84 01    sty $01
c339 e8       inx 
c33a d0 ef    bne $c32b
c33c 20 87 c2 jsr $c287
c33f 8d 14 c2 sta $c214
c342 a9 c7    lda #$c7
c344 8d 00 dd sta $dd00
c347 68       pla 
c348 8d 15 d0 sta $d015
c34b 68       pla 
c34c 85 01    sta $01
c34e ad 14 c2 lda $c214
c351 c9 01    cmp #$01
c353 60       rts 
c354 18       clc 
c355 20 69 c3 jsr $c369
c358 20 da c2 jsr $c2da
c35b b0 0b    bcs $c368
c35d 38       sec 
c35e 20 69 c3 jsr $c369
c361 e6 45    inc $45
c363 20 da c2 jsr $c2da
c366 c6 45    dec $45
c368 60       rts 
c369 a5 46    lda $46
c36b 2a       rol a
c36c 8d 16 c2 sta $c216
c36f a5 47    lda $47
c371 2a       rol a
c372 8d 15 c2 sta $c215
c375 a2 00    ldx #$00
c377 38       sec 
c378 ad 16 c2 lda $c216
c37b fd b2 c3 sbc $c3b2,x
c37e a8       tay 
c37f ad 15 c2 lda $c215
c382 e9 00    sbc #$00
c384 90 09    bcc $c38f
c386 e8       inx 
c387 8d 15 c2 sta $c215
c38a 8c 16 c2 sty $c216
c38d b0 e8    bcs $c377
c38f e8       inx 
c390 e0 23    cpx #$23
c392 f0 0b    beq $c39f
c394 e0 12    cpx #$12
c396 90 01    bcc $c399
c398 e8       inx 
c399 8e 15 c2 stx $c215
c39c 4c d5 c3 jmp $c3d5
c39f a9 12    lda #$12
c3a1 8d 15 c2 sta $c215
c3a4 38       sec 
c3a5 ed 16 c2 sbc $c216
c3a8 c9 ff    cmp #$ff
c3aa d0 02    bne $c3ae
c3ac a9 00    lda #$00
c3ae 8d 16 c2 sta $c216
c3b1 60       rts 
c3b2 15 15    ora $15,x
c3b4 15 15    ora $15,x
c3b6 15 15    ora $15,x
c3b8 15 15    ora $15,x
c3ba 15 15    ora $15,x
c3bc 15 15    ora $15,x
c3be 15 15    ora $15,x
c3c0 15 15    ora $15,x
c3c2 15 13    ora $13,x
c3c4 13       ???
c3c5 13       ???
c3c6 13       ???
c3c7 13       ???
c3c8 13       ???
c3c9 12       ???
c3ca 12       ???
c3cb 12       ???
c3cc 12       ???
c3cd 12       ???
c3ce 12       ???
c3cf 11 11    ora ($11),y
c3d1 11 11    ora ($11),y
c3d3 11 ff    ora ($ff),y
c3d5 ad 15 c2 lda $c215
c3d8 a2 04    ldx #$04
c3da dd f8 c3 cmp $c3f8,x
c3dd ca       dex 
c3de b0 fa    bcs $c3da
c3e0 8a       txa 
c3e1 0a       asl a
c3e2 aa       tax 
c3e3 bd fd c3 lda $c3fd,x
c3e6 8d f3 c3 sta $c3f3
c3e9 bd fe c3 lda $c3fe,x
c3ec 8d f4 c3 sta $c3f4
c3ef ac 16 c2 ldy $c216
c3f2 b9 ff ff lda $ffff,y
c3f5 8d 16 c2 sta $c216
c3f8 60       rts 
c3f9 24 1f    bit $1f
c3fb 19 12 3f ora $3f12,y
c3fe c4 2d    cpy $2d
c400 c4 1a    cpy $1a
c402 c4 05    cpy $05
c404 c4 00    cpy $00
c406 0b       ???
c407 01 0c    ora ($0c,x)
c409 02       ???
c40a 0d 03 0e ora $0e03
c40d 04       ???
c40e 0f       ???
c40f 05 10    ora $10
c411 06 11    asl $11
c413 07       ???		g
c414 12       ???		r
c415 08       php 		h
c416 13       ???		s
c417 09 14    ora #$14		in
c419 0a       asl a		j
c41a 00       brk 
c41b 0b       ???
c41c 03       ???
c41d 0e 06 11 asl $1106		nfk
c420 09 01    ora #$01
c422 0c       ???
c423 04       ???
c424 0f       ???
c425 07       ???
c426 12       ???
c427 0a       asl a
c428 02       ???
c429 0d 05 10 ora $1005
c42c 08       php 
c42d 00       brk 
c42e 0b       ???		k
c42f 04       ???		d
c430 0f       ???		o
c431 08       php 		h
c432 01 0c    ora ($0c,x)	al
c434 05 10    ora $10		ej
c436 09 02    ora #$02		ib
c438 0d 06 11 ora $1106		
c43b 0a       asl a
c43c 03       ???
c43d 0e 07 00 asl $0007
c440 0b       ???
c441 05 10    ora $10
c443 0a       asl a
c444 04       ???
c445 0f       ???
c446 09 03    ora #$03		ic
c448 0e 08 02 asl $0208		nhb
c44b 0d 07 01 ora $0107		mga
c44e 0c       ???		l
c44f 06 			f

c450 a9 7f    lda #$7f
c452 8d 0d dc sta $dc0d		
c455 8d 0d dd sta $dd0d		Interrupt control and status register.
c458 ad 0d dc lda $dc0d	
c45b ad 0d dd lda $dd0d		Interrupt control and status register.
c45e a2 00    ldx #$00
c460 a9 01    lda #$01
c462 9d 00 d8 sta $d800,x	Color RAM
c465 9d 00 d9 sta $d900,x	Also color RAM
c468 9d 00 da sta $da00,x	Still color RAM
c46b 9d 00 db sta $db00,x	More color RAM
c46e a9 86    lda #$86
c470 9d 00 04 sta $0400,x	Default area of screen memory
c473 9d 00 05 sta $0500,x	"	"	"	"
c476 9d 00 06 sta $0600,x	"	"	"	"
c479 9d 00 07 sta $0700,x	"	"	"	"
c47c e0 2e    cpx #$2e
c47e b0 0f    bcs $c48f
c480 bd a0 c4 lda $c4a0,x
c483 9d 00 d0 sta $d000,x
c486 e0 1d    cpx #$1d
c488 b0 05    bcs $c48f
c48a a9 00    lda #$00
c48c 9d 00 d4 sta $d400,x	Voice #1 frequency (write only)
c48f e8       inx 
c490 d0 ce    bne $c460
c492 ad 00 dd lda $dd00		Port A, serial bus access
c495 09 03    ora #$03
c497 8d 00 dd sta $dd00
c49a a9 3f    lda #$3f
c49c 8d 02 dd sta $dd02
c49f 60       rts 
c4a0 00       brk 
c4a1 00       brk 
c4a2 00       brk 
c4a3 00       brk 
c4a4 00       brk 
c4a5 00       brk 
c4a6 00       brk 
c4a7 00       brk 
c4a8 00       brk 
c4a9 00       brk 
c4aa 00       brk 
c4ab 00       brk 
c4ac 00       brk 
c4ad 00       brk 
c4ae 00       brk 
c4af 00       brk 
c4b0 00       brk 
c4b1 07       ???
c4b2 00       brk 
c4b3 00       brk 
c4b4 00       brk 
c4b5 00       brk 
c4b6 18       clc 	x
c4b7 00       brk 
c4b8 18       clc 	x
c4b9 00       brk 
c4ba 00       brk 
c4bb 00       brk 
c4bc 00       brk 
c4bd 00       brk 
c4be 00       brk 
c4bf 00       brk 
c4c0 00       brk 
c4c1 00       brk 
c4c2 02       ???	b
c4c3 03       ???	c
c4c4 04       ???	d
c4c5 00       brk 
c4c6 01 07    ora ($07,x)
c4c8 08       php 
c4c9 09 0a    ora #$0a
c4cb 0b       ???
c4cc 0c       ???
c4cd 0d 0e

c4cf 78	      sei
c4d0 20 50 c4 jsr $c450
c4d3 a2 ff    ldx #$ff		"
c4d5 9a       txs 		
c4d6 20 2f c6 jsr $c62f		_/F
c4d9 a2 14    ldx #$14		"N
c4db ec 12 d0 cpx $d012		 LP
c4de d0 fb    bne $c4db		P
c4e0 ca       dex 		J
c4e1 d0 f8    bne $c4db		P
c4e3 a2 f2    ldx #$f2		"
c4e5 a0 c4    ldy #$c4		 D
c4e7 20 00 c5 jsr $c500		_ E
c4ea b0 03    bcs $c4ef		0c
c4ec 4c 00 20 jmp $2000		L
c4ef 4c ef c4 jmp $c4ef		L D
c4f2 0d c2 c1 ora $c1c2		mBA
c4f5 d2       ???		R
c4f6 c4 b6    cpy $b6		D6
c4f8 b4 ae    ldy $ae,x		4.
c4fa d3       ???		S
c4fb d9 d3 d4 cmp $d4d3,y	YST
c4fe c5 cd    cmp $cd		EM
c500 86 33    stx $33		
c502 84 34    sty $34
c504 a9 01    lda #$01
c506 85 42    sta $42		
c508 a9 00    lda #$00
c50a 85 44    sta $44
c50c a9 ba    lda #$ba
c50e 85 45    sta $45
c510 a9 02    lda #$02
c512 85 46    sta $46
c514 a9 00    lda #$00
c516 85 47    sta $47
c518 20 22 c6 jsr $c622
c51b a2 00    ldx #$00
c51d 18       clc 
c51e a9 00    lda #$00
c520 7d 08 c6 adc $c608,x
c523 85 31    sta $31
c525 a9 ba    lda #$ba
c527 7d 15 c6 adc $c615,x
c52a 85 32    sta $32
c52c a0 00    ldy #$00
c52e b1 31    lda ($31),y
c530 29 f0    and #$f0
c532 f0 15    beq $c549
c534 b1 31    lda ($31),y
c536 29 0f    and #$0f
c538 d1 33    cmp ($33),y
c53a d0 0d    bne $c549
c53c a8       tay 
c53d b1 33    lda ($33),y
c53f 51 31    eor ($31),y
c541 0a       asl a
c542 d0 05    bne $c549
c544 88       dey 
c545 d0 f6    bne $c53d
c547 f0 16    beq $c55f
c549 e8       inx 
c54a e0 0d    cpx #$0d
c54c 90 cf    bcc $c51d
c54e ad 02 ba lda $ba02
c551 85 46    sta $46
c553 ad 03 ba lda $ba03
c556 85 47    sta $47
c558 05 46    ora $46
c55a d0 bc    bne $c518
c55c a9 ff    lda #$ff
c55e 60       rts 
c55f a0 15    ldy #$15
c561 b1 31    lda ($31),y
c563 85 37    sta $37
c565 c8       iny 
c566 b1 31    lda ($31),y
c568 85 38    sta $38
c56a a0 1f    ldy #$1f
c56c b1 31    lda ($31),y
c56e 85 35    sta $35
c570 c8       iny 
c571 b1 31    lda ($31),y
c573 85 36    sta $36
c575 a0 11    ldy #$11
c577 b1 31    lda ($31),y
c579 85 46    sta $46
c57b c8       iny 
c57c b1 31    lda ($31),y
c57e 85 47    sta $47
c580 a0 00    ldy #$00
c582 b1 31    lda ($31),y
c584 29 f0    and #$f0
c586 c9 10    cmp #$10
c588 f0 39    beq $c5c3
c58a a9 00    lda #$00
c58c 85 44    sta $44
c58e a9 ba    lda #$ba
c590 85 45    sta $45
c592 20 22 c6 jsr $c622
c595 a2 00    ldx #$00
c597 86 30    stx $30
c599 a6 30    ldx $30
c59b bd 00 ba lda $ba00,x
c59e 85 46    sta $46
c5a0 bd 00 bb lda $bb00,x
c5a3 85 47    sta $47
c5a5 a5 38    lda $38
c5a7 c9 02    cmp #$02
c5a9 90 18    bcc $c5c3
c5ab a5 35    lda $35
c5ad 85 44    sta $44
c5af a5 36    lda $36
c5b1 85 45    sta $45
c5b3 20 22 c6 jsr $c622
c5b6 e6 36    inc $36
c5b8 e6 36    inc $36
c5ba c6 38    dec $38
c5bc c6 38    dec $38
c5be e6 30    inc $30
c5c0 4c 99 c5 jmp $c599
c5c3 a9 00    lda #$00
c5c5 85 44    sta $44
c5c7 a9 bc    lda #$bc
c5c9 85 45    sta $45
c5cb 20 22 c6 jsr $c622
c5ce a5 35    lda $35
c5d0 85 31    sta $31
c5d2 a5 36    lda $36
c5d4 85 32    sta $32
c5d6 a0 00    ldy #$00
c5d8 a5 38    lda $38
c5da f0 1b    beq $c5f7
c5dc b9 00 bc lda $bc00,y
c5df 91 31    sta ($31),y
c5e1 c8       iny 
c5e2 d0 f8    bne $c5dc
c5e4 e6 32    inc $32
c5e6 a4 37    ldy $37
c5e8 f0 0b    beq $c5f5
c5ea 88       dey 
c5eb b9 00 bd lda $bd00,y
c5ee 91 31    sta ($31),y
c5f0 88       dey 
c5f1 c0 ff    cpy #$ff
c5f3 d0 f6    bne $c5eb
c5f5 18       clc 
c5f6 60       rts 
c5f7 a4 37    ldy $37
c5f9 f0 fa    beq $c5f5
c5fb 88       dey 
c5fc b9 00 bc lda $bc00,y
c5ff 91 31    sta ($31),y
c601 88       dey 
c602 c0 ff    cpy #$ff
c604 d0 f6    bne $c5fc
c606 18       clc 
c607 60       rts 
c608 04       ???
c609 2b       ???
c60a 52       ???
c60b 79 a0
c60d c7       			
c60e ee 15 3c inc $3c15		
c611 63       ???		
c612 8a       txa 		
c613 b1 d8    lda ($d8),y	
c615 00       brk 		
c616 00       brk 	
c617 00       brk 		
c618 00       brk 		
c619 00       brk 		
c61a 00       brk 
c61b 00       brk 
c61c 01 01    ora ($01,x)
c61e 01 01    ora ($01,x)
c620 01 01    ora ($01,x)
c622 20 54 c3 jsr $c354
c625 90 07    bcc $c62e
c627 a9 36    lda #$36
c629 85 01    sta $01
c62b 6c fc ff jmp ($fffc)	Cold reset of machine?
c62e 60       rts 
c62f a9 36    lda #$36
c631 85 01    sta $01		Processor port
c633 a9 2f    lda #$2f
c635 85 00    sta $00		Processor port data direction register.  Default.
c637 20 e7 ff jsr $ffe7		CLALL KERNAL function
c63a 20 5e c6 jsr $c65e
c63d 20 51 c6 jsr $c651
c640 78       sei 
c641 a9 67    lda #$67
c643 8d 00 dd sta $dd00
c646 2c 00 dd bit $dd00
c649 70 fb    bvs $c646
c64b a9 c7    lda #$c7
c64d 8d 00 dd sta $dd00
c650 60       rts 
c651 a2 72    ldx #$72
c653 a0 c6    ldy #$c6
c655 a9 0d    lda #$0d
c657 20 bd ff jsr $ffbd		SETNAM; length = 13; Lo byte name; Hi byte name
c65a a9 0f    lda #$0f
c65c d0 0b    bne $c669
c65e a9 01    lda #$01
c660 a2 7f    ldx #$7f
c662 a0 c6    ldy #$c6
c664 20 bd ff jsr $ffbd		SETNAM; length = 1; Lo byte name; Hi byte name
c667 a9 02    lda #$02
c669 a8       tay 
c66a a2 08    ldx #$08
c66c 20 ba ff jsr $ffba		SETLFS; Logical number = 2; Device = 8; Secondary = 2
c66f 4c c0 ff jmp $ffc0		OPEN
c672 42       ???		B	Begin filename as per $c657  {"B-E 2 0 18 13"}
c673 2d 45 20 and $2045		-E_
c676 32       ???		2
c677 20 30 20 jsr $2030 	_0_
c67a 31 38    and ($38),y 	18
c67c 20 31 33 jsr $3331		_13	End filename as per $c657
c67f 23       ???		#	Filename as per $c664
From C680 to EOF (C9E9) is literally nothing but "00 BRK".
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

It would appear, according to DIrMaster, that the following files are hidden somewhere on the BOOT disk:

BARDS.TALE3.64
BARD64.SYSTEM
BARD3.PIC64
BARDSUBS1
BARDSUBS2
MAINPIC64
SPLASH64
UTIL64
MUSIC64
DMUSIC64
BARD.SYSTEM

Of course, trying to load them conventionally yields a "?FILE NOT FOUND ERROR"... :roll:
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

So I downloaded the Apple II disk images from this site, and I downloaded AppleWin, which is an Apple II emulator.

The emulator auto-boots whatever disk is placed into it (in this case the BOOT disk for BT III), but interestingly I get this screen a half second after it boots up with the BOOT disk in it:

Image

So yeah, I'm dealing with Prodos 8 v1.4. That's the filesystem BTIII seems to use, whether it's for the C64 or Apple II.

Any Apple II wizards in the house?
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

So I've managed to work out the sequence of events when one loads the game on the C64, to a point.

The load sequence so far:

PRODOS -> 2.0 -> Block-Execute T18 S13 (executed code within the 1541 disk drive itself); this code then manipulates the buffers within the drive to load the rest of the game. I think.

This is the code that runs in the drive:

Edit 27 Feb. 2022: I have corrected some errors I made in transcribing this code from the Hex dump.

Code: Select all

.C:1f00  78          SEI
.C:1f01  D8          CLD
.C:1f02  A9 08       LDA #$08
.C:1f04  8D 00 18    STA $1800
.C:1f07  A9 60       LDA #$60
.C:1f09  8D 00 03    STA $0300
.C:1f0c  20 00 03    JSR $0300
.C:1f0f  BA          TSX
.C:1f10  BD 00 01    LDA $0100,X
.C:1f13  85 15       STA $15
.C:1f15  A0 00       LDY #$00
.C:1f17  84 14       STY $14
.C:1f19  B1 14       LDA ($14),Y
.C:1f1b  99 00 07    STA $0700,Y
.C:1f1e  C8          INY
.C:1f1f  D0 F8       BNE $1F19
.C:1f21  4C 24 07    JMP $0724
.C:1f24  A2 0E       LDX #$0E
.C:1f26  BD 4D 07    LDA $074D,X
.C:1f29  95 00       STA $00,X
.C:1f2b  CA          DEX
.C:1f2c  10 F8       BPL $1F26
.C:1f2e  58          CLI
.C:1f2f  A5 00       LDA $00
.C:1f31  05 01       ORA $01
.C:1f33  05 02       ORA $02
.C:1f35  05 03       ORA $03
.C:1f37  30 F6       BMI $1F2F
.C:1f39  78          SEI
.C:1f3a  A9 00       LDA #$00
.C:1f3c  85 D2       STA $D2
.C:1f3e  A9 12       LDA #$12
.C:1f40  85 22       STA $22
.C:1f42  A9 00       LDA #$00
.C:1f44  85 30       STA $30
.C:1f46  A9 02       LDA #$02
.C:1f48  85 31       STA $31
.C:1f4a  4C 00 03    JMP $0300

.C:1f4d  80 80       NOOP #$80
.C:1f4f  80 80       NOOP #$80
.C:1f51  00          BRK
.C:1f52  00          BRK
.C:1f53  12          JAM
.C:1f54  0E 12 0F    ASL $0F12
.C:1f57  12          JAM
.C:1f58  10 12       BPL $1F6C
.C:1f5a  11 00       ORA ($00),Y
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

Discovered that I made some errors (surprise) in transcribing the hex dump.

Sigh.
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

So at the end of the file at track 18 sector 13 there's this data field:

Code: Select all

.C:1f4d  80 80       NOOP #$80
.C:1f4f  80 80       NOOP #$80
.C:1f51  00          BRK
.C:1f52  00          BRK
.C:1f53  12          JAM		T18
.C:1f54  0E 12 0F    ASL $0F12		S14 T18 S15
.C:1f57  12          JAM		T18
.C:1f58  10 12       BPL $1F6C		S16 T18
.C:1f5a  11 00       ORA ($00),Y	S17
I figured out that they pointed to Sectors 14, 15, 16 and 17 on track 18. I disassembled those files and they are also code designed to run in the 1541.
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

Well, someone at the Lemon64.com forums decoded the code snippet "properly".

Lo.

Code: Select all

.C:1f00  78          SEI            ; Disable drive controller
.C:1f01  D8          CLD
.C:1f02  A9 08       LDA #$08
.C:1f04  8D 00 18    STA $1800
.C:1f07  A9 60       LDA #$60       ; RTS
.C:1f09  8D 00 03    STA $0300
.C:1f0c  20 00 03    JSR $0300      ; Pushes PC to stack and immediately returns
.C:1f0f  BA          TSX
.C:1f10  BD 00 01    LDA $0100,X    ; Gets PC previously saved to stack
.C:1f13  85 15       STA $15
.C:1f15  A0 00       LDY #$00
.C:1f17  84 14       STY $14
.C:1f19  B1 14       LDA ($14),Y
.C:1f1b  99 00 07    STA $0700,Y    ; Copies this 256byte page from whatever buffer into buffer 4
.C:1f1e  C8          INY
.C:1f1f  D0 F8       BNE $1F19
.C:1f21  4C 24 07    JMP $0724      ; Continue from the next instruction in buffer4. The buffer we had been using is about to be overwritten.
.C:1f24  A2 0E       LDX #$0E
.C:1f26  BD 4D 07    LDA $074D,X
.C:1f29  95 00       STA $00,X      ; Copy job codes for disk controller to execute. Why bother reading sectors ourselves...
.C:1f2b  CA          DEX
.C:1f2c  10 F8       BPL $1F26
.C:1f2e  58          CLI            ; Turn disk controller IRQ back on
.C:1f2f  A5 00       LDA $00        ; Check status of jobs we've forced onto the buffers.
.C:1f31  05 01       ORA $01
.C:1f33  05 02       ORA $02
.C:1f35  05 03       ORA $03
.C:1f37  30 F6       BMI $1F2F      ; Not done loading sectors into buffers? Loop
.C:1f39  78          SEI            ; We're done with the drive controller IRQ again.
.C:1f3a  A9 00       LDA #$00       ; Probaby initial values for the custom code we are about to JMP into. IDK.
.C:1f3c  85 D2       STA $D2
.C:1f3e  A9 12       LDA #$12
.C:1f40  85 22       STA $22
.C:1f42  A9 00       LDA #$00
.C:1f44  85 30       STA $30
.C:1f46  A9 02       LDA #$02
.C:1f48  85 31       STA $31
.C:1f4a  4C 00 03    JMP $0300      ; Jump to the start of our 1024 byte custom code.

.C:1f4d  80 80       NOOP #$80      ; Job codes for buffers 0 and 1. $80 = Read sector
.C:1f4f  80 80       NOOP #$80      ; Job codes for buffers 2 and 3
.C:1f51  00          BRK            ; No job for buffer 4
.C:1f52  00          BRK
.C:1f53  12          JAM            ; Track #12 and...
.C:1f54  0E 12 0F    ASL $0F12      ; Sector #0E for Buffer 0. T=12 and S=0F for buffer 1
.C:1f57  12          JAM            ; etc
.C:1f58  10 12       BPL $1F6C
.C:1f5a  11 00       ORA ($00),Y
Courtesy of user "itsP".


My guess is that this code loads:
- Track 18, Sector 14 into buffer 0
- Track 18, Sector 15 into buffer 1
- Track 18, Sector 16 into buffer 2
- Track 18, Sector 17 into buffer 3

...and then runs at $0300. Which means that sectors 14-17 make up 1 program, loaded into the drive memory.
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

Here is the entire code loaded into the 1541's memory:

Code: Select all

.C:0300  78          SEI
.C:0301  A2 45       LDX #$45
.C:0303  9A          TXS
.C:0304  20 F2 03    JSR $03F2
.C:0307  A9 00       LDA #$00
.C:0309  85 D2       STA $D2
.C:030b  A5 0E       LDA $0E
.C:030d  20 9E 04    JSR $049E
.C:0310  A5 D1       LDA $D1
.C:0312  C9 03       CMP #$03
.C:0314  F0 4D       BEQ $0363
.C:0316  C9 02       CMP #$02
.C:0318  F0 1E       BEQ $0338
.C:031a  A9 02       LDA #$02
.C:031c  8D C4 06    STA $06C4
.C:031f  20 4D 04    JSR $044D
.C:0322  90 0B       BCC $032F
.C:0324  CE C4 06    DEC $06C4
.C:0327  F0 06       BEQ $032F
.C:0329  20 5A 05    JSR $055A
.C:032c  4C 1F 03    JMP $031F
.C:032f  20 24 06    JSR $0624
.C:0332  20 BA 03    JSR $03BA
.C:0335  4C 00 03    JMP $0300
.C:0338  20 92 04    JSR $0492
.C:033b  20 E9 F5    JSR $F5E9
.C:033e  85 3A       STA $3A
.C:0340  20 8F F7    JSR $F78F
.C:0343  A9 02       LDA #$02
.C:0345  8D C4 06    STA $06C4
.C:0348  20 C2 05    JSR $05C2
.C:034b  90 0B       BCC $0358
.C:034d  CE C4 06    DEC $06C4
.C:0350  F0 06       BEQ $0358
.C:0352  20 5A 05    JSR $055A
.C:0355  4C 48 03    JMP $0348
.C:0358  20 24 06    JSR $0624
.C:035b  A5 D2       LDA $D2
.C:035d  20 CA 03    JSR $03CA
.C:0360  4C 00 03    JMP $0300
.C:0363  A9 01       LDA #$01
.C:0365  48          PHA
.C:0366  20 9E 04    JSR $049E
.C:0369  20 2A 06    JSR $062A
.C:036c  68          PLA
.C:036d  18          CLC
.C:036e  69 01       ADC #$01
.C:0370  C9 24       CMP #$24
.C:0372  90 F1       BCC $0365
.C:0374  A9 23       LDA #$23
.C:0376  48          PHA
.C:0377  20 9E 04    JSR $049E
.C:037a  20 A2 06    JSR $06A2
.C:037d  68          PLA
.C:037e  38          SEC
.C:037f  E9 01       SBC #$01
.C:0381  D0 F3       BNE $0376
.C:0383  20 24 06    JSR $0624
.C:0386  A9 00       LDA #$00
.C:0388  20 CA 03    JSR $03CA
.C:038b  4C 00 03    JMP $0300
.C:038e  A0 04       LDY #$04
.C:0390  A9 00       LDA #$00
.C:0392  8D 00 18    STA $1800
.C:0395  A9 04       LDA #$04
.C:0397  2C 00 18    BIT $1800
.C:039a  F0 FB       BEQ $0397
.C:039c  AD 00 18    LDA $1800
.C:039f  4A          LSR A
.C:03a0  26 14       ROL $14
.C:03a2  A9 04       LDA #$04
.C:03a4  2C 00 18    BIT $1800
.C:03a7  D0 FB       BNE $03A4
.C:03a9  AD 00 18    LDA $1800
.C:03ac  4A          LSR A
.C:03ad  26 14       ROL $14
.C:03af  88          DEY
.C:03b0  D0 E3       BNE $0395
.C:03b2  A9 08       LDA #$08
.C:03b4  8D 00 18    STA $1800
.C:03b7  A5 14       LDA $14
.C:03b9  60          RTS

.C:03ba  A0 00       LDY #$00
.C:03bc  B9 00 02    LDA $0200,Y
.C:03bf  20 CA 03    JSR $03CA
.C:03c2  C8          INY
.C:03c3  D0 F7       BNE $03BC
.C:03c5  A5 D2       LDA $D2
.C:03c7  4C CA 03    JMP $03CA
.C:03ca  48          PHA
.C:03cb  4A          LSR A
.C:03cc  4A          LSR A
.C:03cd  4A          LSR A
.C:03ce  4A          LSR A
.C:03cf  AA          TAX
.C:03d0  A9 01       LDA #$01
.C:03d2  8D 00 18    STA $1800
.C:03d5  2C 00 18    BIT $1800
.C:03d8  D0 FB       BNE $03D5
.C:03da  8E 00 18    STX $1800
.C:03dd  8A          TXA
.C:03de  0A          ASL A
.C:03df  29 0F       AND #$0F
.C:03e1  8D 00 18    STA $1800
.C:03e4  68          PLA
.C:03e5  29 0F       AND #$0F
.C:03e7  8D 00 18    STA $1800
.C:03ea  0A          ASL A
.C:03eb  29 0F       AND #$0F
.C:03ed  EA          NOP
.C:03ee  8D 00 18    STA $1800
.C:03f1  60          RTS

.C:03f2  AD 00 1C    LDA $1C00
.C:03f5  29 F7       AND #$F7
.C:03f7  8D 00 1C    STA $1C00
.C:03fa  A9 EE       LDA #$EE
.C:03fc  8D 0C 1C    STA $1C0C
.C:03ff  A9 08	     LDA #$08		[Track 18 Sector 15 @ "08"]
.C:0401  8D 00 18    STA $1800
.C:0404  A9 0A       LDA #$0A
.C:0406  85 D0       STA $D0
.C:0408  A2 00       LDX #$00
.C:040a  A0 00       LDY #$00
.C:040c  CA          DEX
.C:040d  D0 12       BNE $0421
.C:040f  88          DEY
.C:0410  D0 0F       BNE $0421
.C:0412  C6 D0       DEC $D0
.C:0414  D0 0B       BNE $0421
.C:0416  AD 00 1C    LDA $1C00
.C:0419  29 FB       AND #$FB
.C:041b  8D 00 1C    STA $1C00
.C:041e  4E C5 06    LSR $06C5
.C:0421  AD 00 18    LDA $1800
.C:0424  4A          LSR A
.C:0425  90 E5       BCC $040C
.C:0427  20 8E 03    JSR $038E
.C:042a  85 D1       STA $D1
.C:042c  20 8E 03    JSR $038E
.C:042f  85 0E       STA $0E
.C:0431  20 8E 03    JSR $038E
.C:0434  85 0F       STA $0F
.C:0436  AD 00 1C    LDA $1C00
.C:0439  09 0C       ORA #$0C
.C:043b  8D 00 1C    STA $1C00
.C:043e  2C C5 06    BIT $06C5
.C:0441  30 09       BMI $044C
.C:0443  38          SEC
.C:0444  6E C5 06    ROR $06C5
.C:0447  A2 C0       LDX #$C0
.C:0449  4C C6 06    JMP $06C6
.C:044c  60          RTS

.C:044d  A9 03       LDA #$03
.C:044f  85 C4       STA $C4
.C:0451  20 69 05    JSR $0569
.C:0454  B0 32       BCS $0488
.C:0456  20 A3 05    JSR $05A3
.C:0459  B0 2D       BCS $0488
.C:045b  A0 00       LDY #$00
.C:045d  50 FE       BVC $045D
.C:045f  B8          CLV
.C:0460  AD 01 1C    LDA $1C01
.C:0463  91 30       STA ($30),Y
.C:0465  C8          INY
.C:0466  D0 F5       BNE $045D
.C:0468  A0 BA       LDY #$BA
.C:046a  50 FE       BVC $046A
.C:046c  B8          CLV
.C:046d  AD 01 1C    LDA $1C01
.C:0470  99 00 01    STA $0100,Y
.C:0473  C8          INY
.C:0474  D0 F4       BNE $046A
.C:0476  20 E0 F8    JSR $F8E0
.C:0479  A5 38       LDA $38
.C:047b  C5 47       CMP $47
.C:047d  D0 09       BNE $0488
.C:047f  20 E9 F5    JSR $F5E9
.C:0482  C5 3A       CMP $3A
.C:0484  D0 02       BNE $0488
.C:0486  18          CLC
.C:0487  60          RTS
.C:0488  C6 C4       DEC $C4
.C:048a  D0 C5       BNE $0451
.C:048c  A9 27       LDA #$27
.C:048e  85 D2       STA $D2
.C:0490  38          SEC
.C:0491  60          RTS

.C:0492  A2 00       LDX #$00
.C:0494  20 8E 03    JSR $038E
.C:0497  9D 00 02    STA $0200,X
.C:049a  E8          INX
.C:049b  D0 F7       BNE $0494
.C:049d  60          RTS

.C:049e  48          PHA
.C:049f  38          SEC
.C:04a0  E5 22       SBC $22
.C:04a2  F0 36       BEQ $04DA
.C:04a4  A2 01       LDX #$01
.C:04a6  B0 06       BCS $04AE
.C:04a8  A2 FF       LDX #$FF
.C:04aa  49 FF       EOR #$FF
.C:04ac  69 01       ADC #$01
.C:04ae  0A          ASL A
.C:04af  85 C1       STA $C1
.C:04b1  86 C2       STX $C2
.C:04b3  18          CLC
.C:04b4  AD 00 1C    LDA $1C00
.C:04b7  65 C2       ADC $C2
.C:04b9  29 03       AND #$03
.C:04bb  85 C3       STA $C3
.C:04bd  AD 00 1C    LDA $1C00
.C:04c0  29 FC       AND #$FC
.C:04c2  05 C3       ORA $C3
.C:04c4  8D 00 1C    STA $1C00
.C:04c7  A9 94       LDA #$94
.C:04c9  8D 05 18    STA $1805
.C:04cc  2C 05 18    BIT $1805
.C:04cf  30 FB       BMI $04CC
.C:04d1  C6 C1       DEC $C1
.C:04d3  D0 DE       BNE $04B3
.C:04d5  A2 40       LDX #$40
.C:04d7  20 C6 06    JSR $06C6
.C:04da  68          PLA
.C:04db  85 22       STA $22
.C:04dd  20 4B F2    JSR $F24B
.C:04e0  85 C5       STA $C5
.C:04e2  8A          TXA
.C:04e3  0A          ASL A
.C:04e4  0A          ASL A
.C:04e5  0A          ASL A
.C:04e6  0A          ASL A
.C:04e7  0A          ASL A
.C:04e8  85 C2       STA $C2
.C:04ea  AD 00 1C    LDA $1C00
.C:04ed  29 9F       AND #$9F
.C:04ef  05 C2       ORA $C2
.C:04f1  8D 00 1C    STA $1C00
.C:04f4  A5 C5       LDA $C5
.C:04f6  85 43       STA $43
.C:04f8  A9 00       LDA #$00
.C:04fa  85 BC       STA $BC
.C:04fc  AA          TAX
.C:04fd  A8          TAY
.C:04fe  A5 39       LDA $39
.C:0500  99 00 07    STA $0700,Y		[Track 18 Sector 16]
.C:0503  A5 BC       LDA $BC
.C:0505  99 02 07    STA $0702,Y
.C:0508  A5 22       LDA $22
.C:050a  99 03 07    STA $0703,Y
.C:050d  A9 50       LDA #$50
.C:050f  99 04 07    STA $0704,Y
.C:0512  A9 49       LDA #$49
.C:0514  99 05 07    STA $0705,Y
.C:0517  A9 0F       LDA #$0F
.C:0519  99 06 07    STA $0706,Y
.C:051c  99 07 07    STA $0707,Y
.C:051f  B9 02 07    LDA $0702,Y
.C:0522  59 03 07    EOR $0703,Y
.C:0525  59 04 07    EOR $0704,Y
.C:0528  59 05 07    EOR $0705,Y
.C:052b  99 01 07    STA $0701,Y
.C:052e  18          CLC
.C:052f  98          TYA
.C:0530  69 08       ADC #$08
.C:0532  A8          TAY
.C:0533  E6 BC       INC $BC
.C:0535  A5 BC       LDA $BC
.C:0537  C5 43       CMP $43
.C:0539  90 C3       BCC $05FE
.C:053b  98          TYA
.C:053c  48          PHA
.C:053d  A9 07       LDA #$07
.C:053f  85 31       STA $31
.C:0541  20 30 FE    JSR $FE30
.C:0544  68          PLA
.C:0545  A8          TAY
.C:0546  88          DEY
.C:0547  B9 00 07    LDA $0700,Y
.C:054a  99 45 07    STA $0745,Y
.C:054d  88          DEY
.C:054e  C0 FF       CPY #$FF
.C:0550  D0 F5       BNE $0547
.C:0552  20 F5 FD    JSR $FDF5
.C:0555  A9 02       LDA #$02
.C:0557  85 31       STA $31
.C:0559  60          RTS

.C:055a  60          RTS

.C:055b  A9 28       LDA #$28
.C:055d  85 22       STA $22
.C:055f  A9 01       LDA #$01
.C:0561  20 9E 04    JSR $049E
.C:0564  A5 0E       LDA $0E
.C:0566  4C 9E 04    JMP $049E
.C:0569  A9 FE       LDA #$FE
.C:056b  85 C7       STA $C7
.C:056d  A5 0F       LDA $0F
.C:056f  0A          ASL A
.C:0570  0A          ASL A
.C:0571  0A          ASL A
.C:0572  18          CLC
.C:0573  65 0F       ADC $0F
.C:0575  65 0F       ADC $0F
.C:0577  A8          TAY
.C:0578  20 A3 05    JSR $05A3
.C:057b  B0 1C       BCS $0599
.C:057d  A2 00       LDX #$00
.C:057f  50 FE       BVC $057F
.C:0581  B8          CLV
.C:0582  AD 01 1C    LDA $1C01
.C:0585  59 00 07    EOR $0700,Y
.C:0588  3D 9B 05    AND $059B,X
.C:058b  D0 08       BNE $0595
.C:058d  C8          INY
.C:058e  E8          INX
.C:058f  E0 08       CPX #$08
.C:0591  D0 EC       BNE $057F
.C:0593  18          CLC
.C:0594  60          RTS

.C:0595  C6 C7       DEC $C7
.C:0597  D0 D4       BNE $056D
.C:0599  38          SEC
.C:059a  60          RTS

.C:059b  FF C0 0F    ISB $0FC0,X
.C:059e  FF FF 00    ISB $00FF,X
.C:05a1  00          BRK
.C:05a2  0F A9 05    SLO $05A9
.C:05a5  85 C9       STA $C9
.C:05a7  A9 FF       LDA #$FF
.C:05a9  8D 05 18    STA $1805
.C:05ac  2C 05 18    BIT $1805
.C:05af  10 0B       BPL $05BC
.C:05b1  2C 00 1C    BIT $1C00
.C:05b4  30 F6       BMI $05AC
.C:05b6  B8          CLV
.C:05b7  AD 01 1C    LDA $1C01
.C:05ba  18          CLC
.C:05bb  60          RTS

.C:05bc  C6 C9       DEC $C9
.C:05be  D0 E7       BNE $05A7
.C:05c0  38          SEC
.C:05c1  60          RTS

.C:05c2  A9 02       LDA #$02
.C:05c4  85 C4       STA $C4
.C:05c6  AD 00 1C    LDA $1C00
.C:05c9  29 10       AND #$10
.C:05cb  F0 51       BEQ $201E
.C:05cd  20 69 05    JSR $0569
.C:05d0  B0 45       BCS $2017
.C:05d2  A2 09       LDX #$09
.C:05d4  50 FE       BVC $05D4
.C:05d6  B8          CLV
.C:05d7  CA          DEX
.C:05d8  D0 FA       BNE $05D4
.C:05da  A9 FF       LDA #$FF
.C:05dc  8D 03 1C    STA $1C03
.C:05df  AD 0C 1C    LDA $1C0C
.C:05e2  29 1F       AND #$1F
.C:05e4  09 C0       ORA #$C0
.C:05e6  8D 0C 1C    STA $1C0C
.C:05e9  A9 FF       LDA #$FF
.C:05eb  A2 05       LDX #$05
.C:05ed  8D 01 1C    STA $1C01
.C:05f0  B8          CLV
.C:05f1  50 FE       BVC $05F1
.C:05f3  B8          CLV
.C:05f4  CA          DEX
.C:05f5  D0 FA       BNE $05F1
.C:05f7  A0 BB       LDY #$BB
.C:05f9  B9 00 01    LDA $0100,Y
.C:05fc  50 FE       BVC $05FC
.C:05fe  B8          CLV
.C:05ff  8D.C:0500  99 00 07    STA $0700,Y
.C:0503  A5 BC       LDA $BC
.C:0505  99 02 07    STA $0702,Y
.C:0508  A5 22       LDA $22
.C:050a  99 03 07    STA $0703,Y
.C:050d  A9 50       LDA #$50
.C:050f  99 04 07    STA $0704,Y
.C:0512  A9 49       LDA #$49
.C:0514  99 05 07    STA $0705,Y
.C:0517  A9 0F       LDA #$0F
.C:0519  99 06 07    STA $0706,Y
.C:051c  99 07 07    STA $0707,Y
.C:051f  B9 02 07    LDA $0702,Y
.C:0522  59 03 07    EOR $0703,Y
.C:0525  59 04 07    EOR $0704,Y
.C:0528  59 05 07    EOR $0705,Y
.C:052b  99 01 07    STA $0701,Y
.C:052e  18          CLC
.C:052f  98          TYA
.C:0530  69 08       ADC #$08
.C:0532  A8          TAY
.C:0533  E6 BC       INC $BC
.C:0535  A5 BC       LDA $BC
.C:0537  C5 43       CMP $43
.C:0539  90 C3       BCC $05FE
.C:053b  98          TYA
.C:053c  48          PHA
.C:053d  A9 07       LDA #$07
.C:053f  85 31       STA $31
.C:0541  20 30 FE    JSR $FE30
.C:0544  68          PLA
.C:0545  A8          TAY
.C:0546  88          DEY
.C:0547  B9 00 07    LDA $0700,Y
.C:054a  99 45 07    STA $0745,Y
.C:054d  88          DEY
.C:054e  C0 FF       CPY #$FF
.C:0550  D0 F5       BNE $0547
.C:0552  20 F5 FD    JSR $FDF5
.C:0555  A9 02       LDA #$02
.C:0557  85 31       STA $31
.C:0559  60          RTS

.C:055a  60          RTS

.C:055b  A9 28       LDA #$28
.C:055d  85 22       STA $22
.C:055f  A9 01       LDA #$01
.C:0561  20 9E 04    JSR $049E
.C:0564  A5 0E       LDA $0E
.C:0566  4C 9E 04    JMP $049E
.C:0569  A9 FE       LDA #$FE
.C:056b  85 C7       STA $C7
.C:056d  A5 0F       LDA $0F
.C:056f  0A          ASL A
.C:0570  0A          ASL A
.C:0571  0A          ASL A
.C:0572  18          CLC
.C:0573  65 0F       ADC $0F
.C:0575  65 0F       ADC $0F
.C:0577  A8          TAY
.C:0578  20 A3 05    JSR $05A3
.C:057b  B0 1C       BCS $0599
.C:057d  A2 00       LDX #$00
.C:057f  50 FE       BVC $057F
.C:0581  B8          CLV
.C:0582  AD 01 1C    LDA $1C01
.C:0585  59 00 07    EOR $0700,Y
.C:0588  3D 9B 05    AND $059B,X
.C:058b  D0 08       BNE $0595
.C:058d  C8          INY
.C:058e  E8          INX
.C:058f  E0 08       CPX #$08
.C:0591  D0 EC       BNE $057F
.C:0593  18          CLC
.C:0594  60          RTS

.C:0595  C6 C7       DEC $C7
.C:0597  D0 D4       BNE $056D
.C:0599  38          SEC
.C:059a  60          RTS

.C:059b  FF C0 0F    ISB $0FC0,X
.C:059e  FF FF 00    ISB $00FF,X
.C:05a1  00          BRK
.C:05a2  0F A9 05    SLO $05A9
.C:05a5  85 C9       STA $C9
.C:05a7  A9 FF       LDA #$FF
.C:05a9  8D 05 18    STA $1805
.C:05ac  2C 05 18    BIT $1805
.C:05af  10 0B       BPL $05BC
.C:05b1  2C 00 1C    BIT $1C00
.C:05b4  30 F6       BMI $05AC
.C:05b6  B8          CLV
.C:05b7  AD 01 1C    LDA $1C01
.C:05ba  18          CLC
.C:05bb  60          RTS

.C:05bc  C6 C9       DEC $C9
.C:05be  D0 E7       BNE $05A7
.C:05c0  38          SEC
.C:05c1  60          RTS

.C:05c2  A9 02       LDA #$02
.C:05c4  85 C4       STA $C4
.C:05c6  AD 00 1C    LDA $1C00
.C:05c9  29 10       AND #$10
.C:05cb  F0 51       BEQ $201E
.C:05cd  20 69 05    JSR $0569
.C:05d0  B0 45       BCS $2017
.C:05d2  A2 09       LDX #$09
.C:05d4  50 FE       BVC $05D4
.C:05d6  B8          CLV
.C:05d7  CA          DEX
.C:05d8  D0 FA       BNE $05D4
.C:05da  A9 FF       LDA #$FF
.C:05dc  8D 03 1C    STA $1C03
.C:05df  AD 0C 1C    LDA $1C0C
.C:05e2  29 1F       AND #$1F
.C:05e4  09 C0       ORA #$C0
.C:05e6  8D 0C 1C    STA $1C0C
.C:05e9  A9 FF       LDA #$FF
.C:05eb  A2 05       LDX #$05
.C:05ed  8D 01 1C    STA $1C01
.C:05f0  B8          CLV
.C:05f1  50 FE       BVC $05F1
.C:05f3  B8          CLV
.C:05f4  CA          DEX
.C:05f5  D0 FA       BNE $05F1
.C:05f7  A0 BB       LDY #$BB
.C:05f9  B9 00 01    LDA $0100,Y
.C:05fc  50 FE       BVC $05FC
.C:05fe  B8          CLV
.C:05ff  8D	     STA $1C01		[Track 18 Sector 17 @ "01"]
.C:0602  C8          INY
.C:0603  D0 F4       BNE $1EF9
.C:0605  B1 30       LDA ($30),Y
.C:0607  50 FE       BVC $0607
.C:0609  B8          CLV
.C:060a  8D 01 1C    STA $1C01
.C:060d  C8          INY
.C:060e  D0 F5       BNE $0605
.C:0610  50 FE       BVC $0610
.C:0612  20 00 FE    JSR $FE00
.C:0615  18          CLC
.C:0616  60          RTS

.C:0617  C6 C4       DEC $C4
.C:0619  D0 B2       BNE $1ECD
.C:061b  4C 8C 04    JMP $048C
.C:061e  A9 2B       LDA #$2B
.C:0620  85 D2       STA $D2
.C:0622  18          CLC
.C:0623  60          RTS

.C:0624  A9 00       LDA #$00
.C:0626  8D 00 18    STA $1800
.C:0629  60          RTS

.C:062a  AD 0C 1C    LDA $1C0C
.C:062d  29 1F       AND #$1F
.C:062f  09 C0       ORA #$C0
.C:0631  8D 0C 1C    STA $1C0C
.C:0634  A9 FF       LDA #$FF
.C:0636  8D 03 1C    STA $1C03
.C:0639  A9 55       LDA #$55
.C:063b  8D 01 1C    STA $1C01
.C:063e  A2 00       LDX #$00
.C:0640  A0 28       LDY #$28
.C:0642  B8          CLV
.C:0643  50 FE       BVC $0643
.C:0645  B8          CLV
.C:0646  CA          DEX
.C:0647  D0 FA       BNE $0643
.C:0649  88          DEY
.C:064a  10 F7       BPL $0643
.C:064c  A9 00       LDA #$00
.C:064e  8D C3 06    STA $06C3
.C:0651  A9 FF       LDA #$FF
.C:0653  8D 01 1C    STA $1C01
.C:0656  A2 05       LDX #$05
.C:0658  50 FE       BVC $0658
.C:065a  B8          CLV
.C:065b  CA          DEX
.C:065c  D0 FA       BNE $0658
.C:065e  A2 0A       LDX #$0A
.C:0660  AC C3 06    LDY $06C3
.C:0663  50 FE       BVC $0663
.C:0665  B8          CLV
.C:0666  B9 00 07    LDA $0700,Y
.C:0669  8D 01 1C    STA $1C01
.C:066c  C8          INY
.C:066d  CA          DEX
.C:066e  D0 F3       BNE $0663
.C:0670  8C C3 06    STY $06C3
.C:0673  A2 09       LDX #$09
.C:0675  A9 55       LDA #$55
.C:0677  50 FE       BVC $0677
.C:0679  B8          CLV
.C:067a  8D 01 1C    STA $1C01
.C:067d  CA          DEX
.C:067e  D0 F7       BNE $0677
.C:0680  C6 BC       DEC $BC
.C:0682  F0 18       BEQ $069C
.C:0684  A2 50       LDX #$50
.C:0686  A0 01       LDY #$01
.C:0688  A9 55       LDA #$55
.C:068a  50 FE       BVC $068A
.C:068c  B8          CLV
.C:068d  8D 01 1C    STA $1C01
.C:0690  CA          DEX
.C:0691  D0 F7       BNE $068A
.C:0693  88          DEY
.C:0694  10 F4       BPL $068A
.C:0696  50 FE       BVC $0696
.C:0698  A5 BC       LDA $BC
.C:069a  D0 B5       BNE $0651
.C:069c  B8          CLV
.C:069d  50 FE       BVC $069D
.C:069f  4C 00 FE    JMP $FE00
.C:06a2  A2 00       LDX #$00
.C:06a4  8A          TXA
.C:06a5  9D 00 02    STA $0200,X
.C:06a8  E8          INX
.C:06a9  D0 FA       BNE $06A5
.C:06ab  20 E9 F5    JSR $F5E9
.C:06ae  85 3A       STA $3A
.C:06b0  20 8F F7    JSR $F78F
.C:06b3  A9 00       LDA #$00
.C:06b5  85 0F       STA $0F
.C:06b7  20 C2 05    JSR $05C2
.C:06ba  E6 0F       INC $0F
.C:06bc  A5 0F       LDA $0F
.C:06be  C5 BC       CMP $BC
.C:06c0  D0 F5       BNE $06B7
.C:06c2  60          RTS

.C:06c3  00          BRK
.C:06c4  00          BRK
.C:06c5  00          BRK
.C:06c6  A0 00       LDY #$00
.C:06c8  88          DEY
.C:06c9  D0 FD       BNE $06C8
.C:06cb  CA          DEX
.C:06cc  D0 FA       BNE $06C8
.C:06ce  60          RTS

.C:0700  78          SEI
.C:0701  D8          CLD
.C:0702  A9 08       LDA #$08
.C:0704  8D 00 18    STA $1800
.C:0707  A9 60       LDA #$60
.C:0709  8D 00 03    STA $0300
.C:070c  20 00 03    JSR $0300
.C:070f  BA          TSX
.C:0710  BD 00 01    LDA $0100,X
.C:0713  85 15       STA $15
.C:0715  A0 00       LDY #$00
.C:0717  84 14       STY $14
.C:0719  B1 14       LDA ($14),Y
.C:071b  99 00 07    STA $0700,Y
.C:071e  C8          INY
.C:071f  D0 F8       BNE $0719
.C:0721  4C 24 07    JMP $0724
.C:0724  A2 0E       LDX #$0E
.C:0726  BD 4D 07    LDA $074D,X
.C:0729  95 00       STA $00,X
.C:072b  CA          DEX
.C:072c  10 F8       BPL $0726
.C:072e  58          CLI
.C:072f  A5 00       LDA $00
.C:0731  05 01       ORA $01
.C:0733  05 02       ORA $02
.C:0735  05 03       ORA $03
.C:0737  30 F6       BMI $072F
.C:0739  78          SEI
.C:073a  A9 00       LDA #$00
.C:073c  85 D2       STA $D2
.C:073e  A9 12       LDA #$12
.C:0740  85 22       STA $22
.C:0742  A9 00       LDA #$00
.C:0744  85 30       STA $30
.C:0746  A9 02       LDA #$02
.C:0748  85 31       STA $31
.C:074a  4C 00 03    JMP $0300

.C:074d  80 80       NOOP #$80
.C:074f  80 80       NOOP #$80
.C:0751  00          BRK
.C:0752  00          BRK
.C:0753  12          JAM
.C:0754  0E 12 0F    ASL $0F12
.C:0757  12          JAM
.C:0758  10 12       BPL $1F6C
.C:075a  11 00       ORA ($00),Y
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

So far, I've established with reasonable certainty:

- Load "*",8,1 loads the PRODOS file
- The PRODOS file loads the 2.0 file
- The 2.0 file performs a Block Execute on the 1541's RAM buffer #4 ($0700) to load Track 18 Sector 13
- Track 18 Sector 13 then loads into the 1541's RAM buffers 0 to 3 sectors 14, 15, 16, and 17, in that order (i.e. S14 is in buffer #0, S15 in #1, S16 in #2, and S17 in #3)

Sadly, from there, I lose the scent and am unable to discern what file(s) are loaded next. There's a mention of a "mBARD64.SYSTEM" file in a table and the hi/lo bytes are referenced, but near as I can tell it's not accessed.

This is arcane sorcery, man. :?
User avatar
Twoflower
Posts: 128
Joined: Thu Mar 19, 2009 12:40 am
Location: Haarlem, NL
Contact:

Re: Bard's Tale III C64 Musings

Post by Twoflower »

First of all - i'm seriously impressed of how much 6502/6510 code you've learned over the years, but this is kind of a dead end. As I mentioned to you in the PM, the other (trackloading Prodos) disksides have never been decloaked on the C64.
/Twoflower
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

Twoflower wrote: Wed Mar 02, 2022 8:23 pm First of all - i'm seriously impressed of how much 6502/6510 code you've learned over the years, but this is kind of a dead end. As I mentioned to you in the PM, the other (trackloading Prodos) disksides have never been decloaked on the C64.
Okay.

It has to be a T/S loading system, akin to BTII. BTIII is built on top of the BTII engine, is it not?
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

So, someone puts LOAD "*",8,1 and hits RETURN:

- The computer loads PRODOS.PRG, which auto-boots
- PRODOS.PRG then loads 2.0.PRG
- 2.0.PRG does 2 things:
a) Block-Executes T18 S13,
b) Somehow - method unknown, but the code appears to be in $C500 - $C55E - it loads the files "mBARD64.SYSTEM" into $2000 and then JMPs to it at that location
- T18 S13 then proceeds to load Sectors 14, 15, 16, and 17 into disk buffers 0, 1, 2, and 3 respectively; it then overwrites itself into buffer #4


Sure wish I could figure out how it loads the mBARD64.SYSTEM file.
User avatar
Twoflower
Posts: 128
Joined: Thu Mar 19, 2009 12:40 am
Location: Haarlem, NL
Contact:

Re: Bard's Tale III C64 Musings

Post by Twoflower »

Darendor wrote: Thu Mar 03, 2022 1:00 am
Twoflower wrote: Wed Mar 02, 2022 8:23 pm First of all - i'm seriously impressed of how much 6502/6510 code you've learned over the years, but this is kind of a dead end. As I mentioned to you in the PM, the other (trackloading Prodos) disksides have never been decloaked on the C64.
Okay.

It has to be a T/S loading system, akin to BTII. BTIII is built on top of the BTII engine, is it not?
BTIII was completely rewritten by Becky Heineman, Some structure (graphics-format, etc.) was kept, but it is a different beast.
/Twoflower
User avatar
Darendor
Posts: 1502
Joined: Wed Jan 14, 2009 1:53 am
Location: Red Deer, Alberta, Canada

Re: Bard's Tale III C64 Musings

Post by Darendor »

:?

Humph.
Post Reply