Alright. So.
I've done an ML dump of the 2 visible files on the BOOT disk.
I've started going through the first of those 2 files, named BARDS TALE II.PRG ...
So far this is what I've interpreted:
Code: Select all
0801 0b ??? 0801 nonsense?
0802 08 php 0802 "Push Processor Status on Stack"
0803 cc 0d 9e cpy $9e0d 0803 "Compare Memory and Index Y"
0806 32 ??? 0806 nonsense?
0807 30 36 bmi $083f 0807 Branch on Result Minus to $083f [N.B. there is no valid command at $083f??]
0809 34 ??? 0809 nonsense?
080a 00 brk 080a nonsense?
080b 00 brk 080b nonsense?
080c 00 brk 080c nonsense?
080d 78 sei 080d "Set Interrupt Disable Status"
080e a2 00 ldx #$00 080e "Load Index X with Memory" value of 0
0810 78 sei 0810 "Set Interrupt Disable Status"
0811 a2 00 ldx #$00 0811 "Load Index X with Memory" value of 0
0813 bd 30 08 lda $0830,x 0813 Get byte at ($0830 + X)
0816 9d 00 01 sta $0100,x 0816 Store that byte at ($0100 + X)
0819 e8 inx 0819 Increment Index X by 1
081a d0 f7 bne $0813 081a Branch on Result not Zero to address $0813
081c ca dex 081c Decrement Index X by 1
081d 9a txs 081d Transfer Stack Pointer to Index X
081e a9 e9 lda #$e9 081e "Load Accumulator with Memory" value of e9 [aka 233]
0820 85 2d sta $2d 0820 Store e9 [233] at memory location $002d
0822 a9 0c lda #$0c 0822 "Load Accumulator with Memory" value of 0c [aka 12]
0824 85 2e sta $2e 0824 Store oc [12] at memory location $002e
0826 4c 00 01 jmp $0100 0826 Jump to memory location $0100
0829 ea nop 0829 No Operation
082a ea nop 082a No Operation
082b ea nop 082b No Operation
082c ea nop 082c No Operation
082d ea nop 082d No Operation
082e ea nop 082e No Operation
082f ea nop 082f No Operation
0830 a9 0a lda #$0a "Load Accumulator with Memory" value of 0a [aka 10]
0832 85 02 sta $02 Store 0a [10] at memory location $0002
0834 a9 30 lda #$30 "Load Accumulator with Memory" value of 30 [aka 48]
0836 85 01 sta $01 Store 30 [48] at memory location $0001
0838 a9 00 lda #$00 "Load Accumulator with Memory" value of 0 [aka 0]
083a 85 ae sta $ae Store 0 [0] at memory location $00ae
083c a9 ff lda #$ff "Load Accumulator with Memory" value of ff [aka 255]
083e 85 af sta $af Store ff [255] at memory location $00af
0840 38 sec Set Carry Flag
0841 a5 2d lda $2d "Load Accumulator with Memory" value of whatever is at memory location $002d
0843 e9 ff sbc #$ff Subtract Memory from Accumulator with Borrow value of ff [255]
0845 85 c1 sta $c1 Store result at memory location $00c1
0847 a5 2e lda $2e "Load Accumulator with Memory" value of whatever is at memory location $002e
0849 e9 00 sbc #$00 Subtract Memory from Accumulator with Borrow value of 0 [0]
084b 85 c2 sta $c2 Store result at memory location $00c2
084d a0 00 ldy #$00 "Load Index Y with Memory" value of 0 [0]
084f b1 c1 lda ($c1),y "Load Accumulator with Memory" [vector of $00c1] plus offset Y [0]
0851 91 ae sta ($ae),y Store Accumulator value at $00ae plus offset of Y [0]
0853 88 dey Decrement Index Y by 1
0854 d0 f9 bne $084f Branch on Result not Zero to memory address $084f
0856 c6 c2 dec $c2 Decrement value of memory address $00c2 by 1
0858 c6 af dec $af Decrement value of memory address $00af by 1
085a a5 c2 lda $c2 "Load Accumulator with Memory" value of memory location $00c2
085c c9 07 cmp #$07 "Compare Memory and Accumulator" to value 07 [7]
085e d0 ef bne $084f Branch on Result not Zero to memory address $084f
The native ML code is to the left, of course, and my attempts to annotate/decipher to the right.
It seems that nothing happens until $080d, with the SEI instruction. The bytes preceeding this address are gibberish, or perhaps they are part of the "autorun" code from using LOAD"*",8
,1 to start the game...
I believe that this part of the file prepares the screen and fonts for the loading intro, but I could be way off there.
