Porting ProDOS the "Easy" Way and Other Apple /// Things [message #372439] |
Sat, 18 August 2018 04:33 |
Steve Nickolas
Messages: 2036 Registered: October 2012
Karma: 0
|
Senior Member |
|
|
Currently I'm working on some code to fake the Apple ][ bankswitching.
I've written a first draft, but I haven't really gotten anywhere yet (I
did, though, locate all the LDAs and BITs that affect the language card in
version 1.4, and write a first experiment which went down like a lead
zeppelin.)
The logic was thus:
1. C500-C7FF is always visible and can be written to if unlocked - in
fact, this is how I load the boot code for the Apple ][ side, I write a
Disk ][ ROM into C600-C6FF. So basically I use a jump table at C500 to
set up the paging code.
2. The page register is FFEF: it should usually be F0 for compatibility,
but F1 should work on any /// and gives you a different bank from
2000-9FFF. So I want to store "ROM" at 2000-4FFF, followed by main LC
memory from 5000-7FFF, and alternate LC memory from 8000-8FFF. When
"Paging", I want to copy the current bank back, then copy the desired bank
up...but I need to preserve registers and avoid using any ZP!
3. AND FFDF wih F7 to unlock, and OR it with 08 to lock, C000-FFFF.
I might have to do some rejigging to avoid stepping on FFD0-FFEF, as I did
with the ROM.
By the way, I altered the Copy ][+ DOS 3.3 "no boot sector" to be
polyglottal:
0000: 01 38 B0 03 4C A8 A0 A6 2B BD 88 C0 8A 4A 4A 4A
0010: 4A 09 C0 85 11 A9 00 85 10 20 89 FE 20 93 FE 20
0020: 2F FB 20 84 FE 20 58 FC A2 00 BD 3B 08 F0 06 20
0030: ED FD E8 D0 F5 20 0C FD 6C 10 00 8D 8D 8D 8D 8D
0040: A0 A0 A0 A0 A0 D4 C8 C9 D3 A0 C4 C9 D3 CB A0 C8
0050: C1 D3 A0 CE CF A0 C4 CF D3 A0 D4 CF A0 C2 CF CF
0060: D4 AE 8D 8D 8D 8D A0 A0 A0 A0 A0 A0 A0 A0 C9 CE
0070: D3 C5 D2 D4 A0 C1 CE CF D4 C8 C5 D2 A0 C4 C9 D3
0080: CB A0 C1 CE C4 8D 8D A0 A0 A0 A0 A0 A0 A0 A0 D0
0090: D2 C5 D3 D3 A0 C1 A0 CB C5 D9 A0 D4 CF A0 D2 C5
00A0: C2 CF CF D4 AE A0 A0 00 20 63 FB A2 00 BD 3B A0
00B0: F0 06 20 39 FC E8 D0 F5 20 0C FD 4C A1 F6 00 00
00C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
(It works exactly the same on an Apple /// as an Apple ][.)
-uso.
|
|
|
Re: Porting ProDOS the "Easy" Way and Other Apple /// Things [message #372534 is a reply to message #372439] |
Sun, 19 August 2018 07:38 |
Steve Nickolas
Messages: 2036 Registered: October 2012
Karma: 0
|
Senior Member |
|
|
I've made the first step: ProDOS-8 now loads to the splash screen.
The next step is trying to rewrite the detection to only check slots 1-4,
and to automagically assume a Disk ][ in 6. Initially it's going to
use just the Apple /// firmware if anything, but I think I'm going to
alter the ATINIT hook to allow the Apple ][ firmware to be loaded in on
demand.
-uso.
|
|
|