33 lines
No EOL
2.9 KiB
JSON
Generated
33 lines
No EOL
2.9 KiB
JSON
Generated
{
|
|
"_comment": "generated by tools/mergeSurvey.py from survey/*.json - do not edit by hand",
|
|
"notes": {
|
|
"0600": {
|
|
"routine": [
|
|
"driveBootstrapEntry - Entry point of the 1541 bootstrap sector, executed by DOS 'B-E 2 0 1 17' at the first byte of whatever buffer channel 2 was given (so it runs at an unknown page, not necessarily $0600). It disables IRQs, writes $08 to VIA1 port B (CLK OUT asserted, DATA OUT released, ATNA off), plants an RTS ($60) at $0300 (buffer 0, free to clobber) and JSRs to it; TSX / LDA $0100,X then reads the return-address high byte left on the stack, which is the page the code is currently running in. That page is copied verbatim to $0600 (buffer 3) and execution continues with an absolute JMP to $0624 inside the copy.",
|
|
"In: None beyond DOS having loaded the sector into a channel buffer and jumped to its first byte. Uses the stack to discover its own page.",
|
|
"Out: $0300 = $60 (RTS, later overwritten by the fast loader read); $14/$15 = pointer to the original page (lo always 0); $0600-$06FF = copy of the sector; VIA1_PRB_SERIAL = $08; I flag set. Falls into queueFastLoaderReads at $0624 via JMP."
|
|
],
|
|
"unit": "drive/driveBootstrap"
|
|
},
|
|
"0624": {
|
|
"routine": [
|
|
"queueFastLoaderReads - Copies the 12-byte jobQueueInitTable to drive zero page $00-$0B: job code $80 (read sector) for buffers 0,1,2 ($0300,$0400,$0500), $00 (no job) for buffers 3,4,5, and track/sector pairs 1/18, 1/19, 1/20 for buffers 0-2. Enables IRQs so the DOS job controller runs, then spins while any of the three job bytes still has bit 7 set. When all three have finished it ORs the result codes and requires exactly $01 (all OK); any DOS error code makes the OR differ and the whole queue is re-issued (infinite retry, no error exit). On success it calls ROM_INIT_DRIVE ($D042, re-reads the BAM / disk id) and jumps to the freshly loaded fast loader at $0300.",
|
|
"In: jobQueueInitTable at $0641. Requires that the code is already running from $0600 (the DOS reads target buffers 0-2, which would otherwise overwrite it).",
|
|
"Out: $0300-$05FF = fast loader (track 1 sectors 18-20, unencrypted); $00-$0B = job queue state; I flag cleared; disk re-initialised. Does not return - ends with JMP $0300."
|
|
],
|
|
"unit": "drive/driveBootstrap"
|
|
},
|
|
"0641": {
|
|
"unit": "drive/driveBootstrap",
|
|
"block": [
|
|
"jobQueueInitTable: byteTable, 12 bytes. Image of drive zero page $00-$0B copied by queueFastLoaderReads: $80,$80,$80 (read jobs for buffers 0-2), $00,$00,$00 (no job for buffers 3-5), then track/sector pairs $01,$12 / $01,$13 / $01,$14 (track 1 sectors 18,19,20)."
|
|
]
|
|
},
|
|
"064D": {
|
|
"unit": "drive/driveBootstrap",
|
|
"block": [
|
|
"eaCopyrightMessage: text, 179 bytes. Plain ASCII, no terminator, fills the sector to $06FF and is never displayed: '(C)1988 ELECTRONIC ARTS, 1820 GATEWAY DR, SAN MATEO,CA 94404. THE AGE OF MODEM WARFARE HAS BEGUN. MORE TELEGAMES COMING SOON FROM EA. WRITE TO US & TELL US YOU LIKE MODEM GAMES.'"
|
|
]
|
|
}
|
|
}
|
|
} |