Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.sys.apple2.programmer > #2851 > unrolled thread

Prodos8 2.0.3 info

Started byJohn Brooks <jbrooks@blueshiftinc.com>
First post2016-07-28 20:17 -0700
Last post2016-08-16 09:56 +0000
Articles 12 on this page of 32 — 11 participants

Back to article view | Back to comp.sys.apple2.programmer


Contents

  Prodos8 2.0.3 info John Brooks <jbrooks@blueshiftinc.com> - 2016-07-28 20:17 -0700
    Re: Prodos8 2.0.3 info Michael J. Mahon <mjmahon@aol.com> - 2016-07-31 00:07 -0500
      Re: Prodos8 2.0.3 info John Brooks <jbrooks@blueshiftinc.com> - 2016-07-30 22:26 -0700
        Re: Prodos8 2.0.3 info Oliver Schmidt <ol.sc@web.de> - 2016-07-31 09:26 +0000
          Re: Prodos8 2.0.3 info John Brooks <jbrooks@blueshiftinc.com> - 2016-07-31 08:25 -0700
            Re: Prodos8 2.0.3 info dempson@actrix.gen.nz (David Empson) - 2016-08-01 09:05 +1200
              Re: Prodos8 2.0.3 info Antoine Vignau <antoine.vignau@laposte.net> - 2016-07-31 22:56 -0700
              Re: Prodos8 2.0.3 info Oliver Schmidt <ol.sc@web.de> - 2016-08-01 12:29 +0000
                Re: Prodos8 2.0.3 info Antoine Vignau <antoine.vignau@laposte.net> - 2016-08-01 08:45 -0700
                Re: Prodos8 2.0.3 info John Brooks <jbrooks@blueshiftinc.com> - 2016-08-09 20:43 -0700
                  Re: Prodos8 2.0.3 info Antoine Vignau <antoine.vignau@laposte.net> - 2016-08-09 22:50 -0700
                  Re: Prodos8 2.0.3 info Oliver Schmidt <ol.sc@web.de> - 2016-08-10 07:12 -0700
                    Re: Prodos8 2.0.3 info John Brooks <jbrooks@blueshiftinc.com> - 2016-08-10 08:52 -0700
                      Re: Prodos8 2.0.3 info D Finnigan <dog_cow@macgui.com> - 2016-08-10 16:12 +0000
                        Re: Prodos8 2.0.3 info gids.rs@sasktel.net - 2016-08-10 22:27 -0700
                      Re: Prodos8 2.0.3 info gids.rs@sasktel.net - 2016-08-10 22:35 -0700
                  Re: Prodos8 2.0.3 info Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-08-11 08:31 -0700
                    Re: Prodos8 2.0.3 info John Brooks <jbrooks@blueshiftinc.com> - 2016-08-11 10:32 -0700
                      Re: Prodos8 2.0.3 info Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-08-11 12:35 -0700
                        Re: Prodos8 2.0.3 info qkumba <peter.ferrie@gmail.com> - 2016-08-12 09:24 -0700
                          Re: Prodos8 2.0.3 info Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-08-12 10:08 -0700
    Re: Prodos8 2.0.3 info John Brooks <jbrooks@blueshiftinc.com> - 2016-08-13 21:37 -0700
      Re: Prodos8 2.0.3 info Antoine Vignau <antoine.vignau@laposte.net> - 2016-08-14 15:32 -0700
      Re: Prodos8 2.0.3 info Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-08-15 09:10 -0700
        Re: Prodos8 2.0.3 info John Brooks <jbrooks@blueshiftinc.com> - 2016-08-15 13:41 -0700
          Re: Prodos8 2.0.3 info Michael Pohoreski <michael.pohoreski@gmail.com> - 2016-08-16 18:19 -0700
            Re: Prodos8 2.0.3 info geoff body <gbody4@bigpond.com> - 2016-08-17 07:49 -0700
              Re: Prodos8 2.0.3 info John Brooks <jbrooks@blueshiftinc.com> - 2016-08-17 10:04 -0700
      Re: Prodos8 2.0.3 info David Schmidt <schmidtd@my-deja.com> - 2016-08-15 13:45 -0400
        Re: Prodos8 2.0.3 info John Brooks <jbrooks@blueshiftinc.com> - 2016-08-15 13:49 -0700
          Re: Prodos8 2.0.3 info David Schmidt <schmidtd@my-deja.com> - 2016-08-15 17:36 -0400
          Re: Prodos8 2.0.3 info Oliver Schmidt <ol.sc@web.de> - 2016-08-16 09:56 +0000

Page 2 of 2 — ← Prev page 1 [2]


#2929

FromMichael Pohoreski <michael.pohoreski@gmail.com>
Date2016-08-12 10:08 -0700
Message-ID<26914584-5333-46db-8a60-95e13b4f5c24@googlegroups.com>
In reply to#2928
On Friday, August 12, 2016 at 9:24:51 AM UTC-7, qkumba wrote:
> > Ah, File: XRW1, Page 280
> > blockio cld ; this must be first as it is an id value
> 
> I always wondered why they didn't read the softswitches instead?
> Something like:
> 
>  LDA $C012
>  STA lcstate
>  LDA $C011
>  PHA ;save bank and LC state
>  LDA $C08B
>  LDA $C08B ;enable bank 1
>  JSR $D000 ;call driver
>  PLA
>  LSR
>  LSR
>  LSR
>  LSR
>  ASL lcstate
>  ADC #0
>  TAX
>  STA $C082,X ;restore bank and LC state

I'm surmising because ProDOS initially supported the Apple ][ and $C011 / $C012 were not supported until the //e.

C010 49168 KBDSTRB      OECG WR   Keyboard Strobe
C011 49169 RDLCBNK2      ECG  R7  Status of Selected $Dx Bank
C012 49170 RDLCRAM       ECG  R7  Status of $Dx ROM / $Dx RAM

[toc] | [prev] | [next] | [standalone]


#2940

FromJohn Brooks <jbrooks@blueshiftinc.com>
Date2016-08-13 21:37 -0700
Message-ID<29341a02-64a5-453e-b03c-d64f1a80f3bc@googlegroups.com>
In reply to#2851
On Friday, July 29, 2016 at 2:09:55 AM UTC-7, John Brooks wrote:
> While looking at ProDOS8 2.0.3 to see how hard it would be to remove the 65c02 opcode dependencies, I made notes and a rough page-by-page memory map.
> 
> In case this is useful to other Apple II programmers, here are my notes & memory map:
> 
> Prodos8 v2.0.3
> 
> 0/D000 (LC bank 2)
>  Bank 2 ID byte: used to determine which LC bank is active
>  <255 unused bytes>
> 
> 0/D100 - 0/D3FF (LC bank 2)
>  Quit code: One of 3 possible quit routines, 40col for II & II+, 80col for //e & //c, or GSOS restore. All 3 quit handlers are loaded at boot and only one of the 3 is moved here. 768 bytes used, 2*768=1.5K discarded at boot.
> 
> 0/D400 - 0/DFFF (LC bank 2)
>  <3072 bytes unused>
> 
> 
> 0/D000 (LC Bank 1)
>  Disk II read/write block. Calls RWTS twice as 1 block = 2 sectors
>  Disk II RWTS
> 
> 0/D100
>  Disk II seek
>  Disk II 6&2 decode table
> 
> 0/D200
>  Disk II 6&2 encode table
> 
> 0/D300
>  Buffer for 2-bit-per-byte data during encode/decode
>  Misc Disk II & RWTS vars
>  Step phase timing table
>  Millisecond wait routine for spin-up & stepping
>  Read sector address
> 
> 0/D400
>  Read sector data
>  Set track
>  Check drive
>  
> 0/D500
>  Write sector
> 
> 0/D600
>  6&2 pre-nibblize
>  Reset stepper phases
>  Convert block to Trk/Sec
>  Smartport status buffer
>  Smartport unit numbers buffer
> 
> 0/D700
>  Pathname buffer
>  Read clock routine: Thunderclock & IIGS clock driver loaded at boot. One moved here
>  <64 bytes unused>
> 
> 0/D800
>  FCB: File Control Block buffer
> 
> 0/D900
>  VCB: Volume Control Block buffer
> 
> 0/DA00
>  Volume bit map block 1st half
> 
> 0/DB00
>  Volume bit map block 2nd half
> 
> 0/DC00
>  Misc block buffer 1st half
> 
> 0/DD00
>  Misc block buffer 2nd half
> 
> 0/DE00
>  Main entry to the P8 MLI
>  Clean up and exit MLI back to caller
>  Call a specified device driver
> 
> 0/DF00
>  Init IRQ manager
>  IRQ received entry point
>  Dispatch IRQ to one of 4 user installed handlers
>  Misc IRQ-related buffers & vars
> 
> 0/E000
>  MLI Error handler
>  System death handler
>  Call a device driver or the file manager based on the MLI command number
> 
> 0/E100
>  Set Prefix
>  Get Prefix
>  Find FCB
> 
> 0/E200
>  Check if device is online
> 
> 0/E300
>  Create a file
> 
> 0/E400
>  Create a file
>  Touch date & time on a file
> 
> 0/E500
>  Touch date & time on all parent dirs of a file
>  Find a file
>  
> 0/E600
>  Find a file
> 
> 0/E700
>  Find a file
> 
> 0/E800
>  Find a file
>  Find a VCB
>  Mount a new device in a VCB
> 
> 0/E900
>  Test for a duplicate volume
>  Found a duplicate volume
>  Count free blocks in a volume bit map
> 
> 0/EA00
>  Free up blocks from the volume bit map
>  Allocate 1 block in the  volume bit map
> 
> 0/EB00
>  Allocate 1 block in the volume bit map
>  Write the volume bit map back to the device
> 
> 0/EC00
>  Set file mark
>  Seek into a file, traversing seed, sapling, or tree block lists
> 
> 0/ED00
>  Seek into a file, traversing seed, sapling, or tree block lists
>  Seek into a directory
> 
> 0/EE00
>  Read or Write a block from a file
>  Update FCB after read/write
>  Open file
> 
> 0/EF00
>  Open file
>  Open directory
>  Read from file
> 
> 0/F000
>  Read from file
> 
> 0/F100
>  Read a partial block from a file
>  Read a directory
>  Calculate file mark
> 
> 0/F200
>  Reset file EOF after a write error
>  Adjust EOF after a write
>  Write to a file
>  Write to a sapling file
>  Write to a tree file
> 
> 0/F300
>  Write a partial block
>  Handle allocating blocks to a tree
>  Handle allocating blocks to a sapling
> 
> 0/F400
>  Allocate a block for writing
>  Test for write protect
>  Close file
>  Flush file
> 
> 0/F500
>  Flush file
>  Update EOF
>  Report an error
>  Set EOF
> 
> 0/F600
>  Set EOF
>  Adjust an FCB
> 
> 0/F700
>  Get EOF
>  Newline
>  Get Info
>  Set Info
>  Rename
> 
> 0/F800
>  Rename
> 
> 0/F900
>  Rename
>  Delete a file
>  Delete a tree file
>  Clear a directory file entry
>  Update the free block count on the device
>  Delete a directory
> 
> 0/FA00
>  Delete a directory
>  Remove blocks from a tree
>  Free blocks from a seedling
>  Free blocks from a sapling
>  Free blocks from a tree
> 
> 0/FB00
>  Free blocks from a tree
>  Reduce a tree to a sapling, or a sapling to a seedling
>  Free 1 block
>  Allocate a 1k user buffer
> 
> 0/FC00
>  Allocate a 1k user buffer
>  Get 1k user buffer
>  Free 1k user buffer
>  Allocate 1 page in mem bitmap
>  Get file buffer
>  Set file buffer
>  Copy quit handler from LC bank 2 to 0/1000 and call it
> 
> 0/FD00
>  Remap smartport devices to unuse slot/drive locations
>  Smartport remap data
>  MLI data & buffers
> 
> 0/FE00
>  MLI data & buffers
> 
> 0/FF00
>  /RAM driver entry point
>  /RAM copy & call functions
>  IRQ intercept routine
>  6502 vectors
> 
> 1/0200
>  /RAM driver
>  /RAM command handler
>  /RAM format
>  /RAM block write
>  /RAM block read
> 
> 1/0300
>  /RAM block read
>  Clear block for unallocated blocks
>  Construct volume bit map from partial /RAM bitmap
> 
> -JB
> twitter: @JBrooksBSI

Quick update. I've got the core P8 MLI code converted to 6502 (code between $DE00 and $FEFF). It took about 100 extra bytes compared to the 65c02 code. I made room for the code expansion by moving the system death function & msg text to the first page of LC bank 2 ($D001).

Moving the sysdeath machinery to LC seemed like a better option than moving the smartport port remapping code & tables out of the core MLI.

I still need to get all the P8 drivers & 40-col quit code to pure 6502, fix the P8 startup to work on 6502 systems, and do lots of testing (any volunteers?), but it's looking good so far.

-JB
twitter: @JBrooksBSI

[toc] | [prev] | [next] | [standalone]


#2942

FromAntoine Vignau <antoine.vignau@laposte.net>
Date2016-08-14 15:32 -0700
Message-ID<4ae3f67a-9bbb-436c-a245-65a0acee2370@googlegroups.com>
In reply to#2940
Congrats John.
I'd be happy to test...
Antoine

[toc] | [prev] | [next] | [standalone]


#2944

FromMichael Pohoreski <michael.pohoreski@gmail.com>
Date2016-08-15 09:10 -0700
Message-ID<1e8995e1-f26c-4461-a36d-e5e0c5f72c68@googlegroups.com>
In reply to#2940
On Saturday, August 13, 2016 at 9:37:01 PM UTC-7, John Brooks wrote:
> Quick update. I've got the core P8 MLI code converted to 6502 (code between $DE00 and $FEFF). It took about 100 extra bytes compared to the 65c02 code. I made room for the code expansion by moving the system death function & msg text to the first page of LC bank 2 ($D001).

Which sources are you using?

i.e. Is this a binary patch? Or an assembly language source code patch?

Michael

[toc] | [prev] | [next] | [standalone]


#2946

FromJohn Brooks <jbrooks@blueshiftinc.com>
Date2016-08-15 13:41 -0700
Message-ID<f400894c-0041-42f6-ba32-a61de6c0ca9e@googlegroups.com>
In reply to#2944
On Monday, August 15, 2016 at 9:10:33 AM UTC-7, Michael Pohoreski wrote:
> On Saturday, August 13, 2016 at 9:37:01 PM UTC-7, John Brooks wrote:
> > Quick update. I've got the core P8 MLI code converted to 6502 (code between $DE00 and $FEFF). It took about 100 extra bytes compared to the 65c02 code. I made room for the code expansion by moving the system death function & msg text to the first page of LC bank 2 ($D001).
> 
> Which sources are you using?
> 
> i.e. Is this a binary patch? Or an assembly language source code patch?
> 
> Michael

It's the IIGS ROM3 firmware & GSOS 6.01 source from MacGUI from about a year ago. I've got P8 2.4 booting on a a couple OS X II+ emulators and running Copy II+ 8 utilities which seem to be fully functional. I've got a couple bugs to fix before it's ready for major testing though.

> i.e. Is this a binary patch? Or an assembly language source code patch?

It's source code built with MPW AsmIIGS. There are about 200 patch points in P8 2.0.3 for a total of about 1000 lines of code (so far) to make P8 2.x work on 6502 ][, ][+, & un-enhanced //e.

-JB
Twitter: @JBrooksBSI

[toc] | [prev] | [next] | [standalone]


#2955

FromMichael Pohoreski <michael.pohoreski@gmail.com>
Date2016-08-16 18:19 -0700
Message-ID<ef0bcd6b-11ef-436b-8367-b89c3cdde45d@googlegroups.com>
In reply to#2946
On Monday, August 15, 2016 at 1:41:41 PM UTC-7, John Brooks wrote:
> It's the IIGS ROM3 firmware & GSOS 6.01 source from MacGUI from about a year ago.

Is that source mirrored anywhere these days?

> It's source code built with MPW AsmIIGS. There are about 200 patch points in P8 2.0.3 for a total of about 1000 lines of code (so far) to make P8 2.x work on 6502 ][, ][+, & un-enhanced //e.

Sweet !  Definitely following this thread. :-)

[toc] | [prev] | [next] | [standalone]


#2960

Fromgeoff body <gbody4@bigpond.com>
Date2016-08-17 07:49 -0700
Message-ID<2fa31dbb-7a94-4927-a6a4-8299e1a8971b@googlegroups.com>
In reply to#2955
I was wondering if there is going to be AppleTalk support. I thought AppleTalk uses lc bank 2 starting at $D400

GeoffB

[toc] | [prev] | [next] | [standalone]


#2962

FromJohn Brooks <jbrooks@blueshiftinc.com>
Date2016-08-17 10:04 -0700
Message-ID<a4e2684f-13eb-4199-b3c7-4d3846bcef2f@googlegroups.com>
In reply to#2960
On Wednesday, August 17, 2016 at 7:49:02 AM UTC-7, geoff body wrote:
> I was wondering if there is going to be AppleTalk support. I thought AppleTalk uses lc bank 2 starting at $D400
> 
> GeoffB

I haven't tested Appletalk, but it is unchanged between 2.0.3 and 2.4.

ProDOS 2.4 leaves LC bank 2 $D400-$DFFF available like in 2.0.3.

The only 'extra' memory used by P8 2.4 vs P8 2.0.3 is LC bank 2 $D001-$D04F which now has the system death message function & text that was moved out of main LC to make room for the 6502 compatibility.

-JB

[toc] | [prev] | [next] | [standalone]


#2945

FromDavid Schmidt <schmidtd@my-deja.com>
Date2016-08-15 13:45 -0400
Message-ID<nosv3s$fem$1@dont-email.me>
In reply to#2940
On 8/14/2016 12:37 AM, John Brooks wrote:
> [...]
> I still need to get all the P8 drivers & 40-col quit code to pure 6502, fix the P8 startup to work on 6502 systems, and do lots of testing (any volunteers?), but it's looking good so far.

I think I can come up with a few tests.

[toc] | [prev] | [next] | [standalone]


#2947

FromJohn Brooks <jbrooks@blueshiftinc.com>
Date2016-08-15 13:49 -0700
Message-ID<c1775397-17f5-4d0d-8709-d552a1b9cebe@googlegroups.com>
In reply to#2945
On Monday, August 15, 2016 at 10:45:33 AM UTC-7, schmidtd wrote:
> On 8/14/2016 12:37 AM, John Brooks wrote:
> > [...]
> > I still need to get all the P8 drivers & 40-col quit code to pure 6502, fix the P8 startup to work on 6502 systems, and do lots of testing (any volunteers?), but it's looking good so far.
> 
> I think I can come up with a few tests.

That would be great! My first computer was a ][+, but I haven't used one in over 30 years since I moved to the //e when it came out.

One oddity is that when I boot my ProDOS 2.4 on the ][+ emulators, I see a flashing period in the upper left corner of the screen. Thinking this was a bug due to my 6502 changes, I booted ProDOS 1.9 to check the 'correct' reference behavior, but it had the same problem. The flashing period seems to go away if I turn off the emulator's slot-3 80 column card support, but now I'm uncertain about whether this is a problem with the emulators or a bug in ProDOS.

Any ideas on the above, and/or any tests you think are good for initial P8 validation?

-JB
Twitter: @JBrooksBSI

[toc] | [prev] | [next] | [standalone]


#2948

FromDavid Schmidt <schmidtd@my-deja.com>
Date2016-08-15 17:36 -0400
Message-ID<notcl2$v6i$1@dont-email.me>
In reply to#2947
On 8/15/2016 4:49 PM, John Brooks wrote:
> On Monday, August 15, 2016 at 10:45:33 AM UTC-7, schmidtd wrote:
>> On 8/14/2016 12:37 AM, John Brooks wrote:
>>> [...]
>>> I still need to get all the P8 drivers & 40-col quit code to pure 6502, fix the P8 startup to work on 6502 systems, and do lots of testing (any volunteers?), but it's looking good so far.
>>
>> I think I can come up with a few tests.
>
> That would be great! My first computer was a ][+, but I haven't used one in over 30 years since I moved to the //e when it came out.
>
> One oddity is that when I boot my ProDOS 2.4 on the ][+ emulators, I see a flashing period in the upper left corner of the screen. Thinking this was a bug due to my 6502 changes, I booted ProDOS 1.9 to check the 'correct' reference behavior, but it had the same problem. The flashing period seems to go away if I turn off the emulator's slot-3 80 column card support, but now I'm uncertain about whether this is a problem with the emulators or a bug in ProDOS.
>
> Any ideas on the above, and/or any tests you think are good for initial P8 validation?

[arg, reply vs. follow-up strikes again]

Yes, the period is the code trying to initialize the 80 column firmware. 
  I am a stickler for II+ compatibility, as a few other devs will attest.

My tests would be to see if ADTPro can enumerate devices in a sane way 
(and of course repeated read-write cycles produces identical disk 
images), that a really crowded list of devices gets re-mapped correctly 
as 2.0.3 will but 1.9 won't, and that running an SPF torture-test 
doesn't cause any undue harm.

[toc] | [prev] | [next] | [standalone]


#2950

FromOliver Schmidt <ol.sc@web.de>
Date2016-08-16 09:56 +0000
Message-ID<nounvm$gcg$1@news.albasani.net>
In reply to#2947
Hi John,

> Any ideas on the above, and/or any tests you think are good for initial P8 validation?

Given that you're using LC bank 2 in a way not used before I'd check that
interrupts during P8 operation still work as expected.

I'd do so both on a ][+ and on a enhanced //e as their ROM support for
interrupts differs a _lot_.

Just my two cents,
Oliver

[toc] | [prev] | [standalone]


Page 2 of 2 — ← Prev page 1 [2]

Back to top | Article view | comp.sys.apple2.programmer


csiph-web