plasmo wrote:
OK, it looks like I have a working rev3.2 ported to CRC65. I'm able to run a TeraTerm macro script file that starts off with a blank CF disk, load DOS/65 rev3.2 into system track, load xmodem which then uploaded all sources of rev3.0 utilities then I use ASM to assemble all sources into executables and BASIC compiler to compile *.bas programs into executables. When it is all done DOS/65 rev3.2 will auto-boot at power up and these are files in drive A:
Code:
...........................
DOS/65 V3.2 for CRC65 5/28/23
A0>dir
A0:XM .COM A0:XMODEM .COM A0:ASM .COM A0:MKCOM .COM
A0:ALLOC .ASM A0:COMPILE .ASM A0:COMPARE .ASM A0:COPY .ASM
A0:CPUTYPE .ASM A0:DEBUG .ASM A0:DUMP .ASM A0:ED .ASM
A0:MORE .ASM A0:RUN .ASM A0:ASCIIART.BAS A0:FLST .BAS
A0:SYST .BAS A0:BASIC .ASM A0:SD .ASM A0:SUBMIT .ASM
A0:UCOPY .ASM A0:FLST .INT A0:ALLOC .COM A0:SYST .INT
A0:COMPARE .COM A0:ASCIIART.INT A0:COPY .COM A0:CPUTYPE .COM
A0:DEBUG .COM A0:DUMP .COM A0:ED .COM A0:MORE .COM
A0:RUN .COM A0:COMPILE .COM A0:BASIC .COM A0:SD .COM
A0:UCOPY .COM A0:SUBMIT .COM
A0>
Everything works EXCEPT FLST.BAS does not work. When I run the compiled FLST.INT I got this:
Attachment:
FLST_does_not_work.jpg
It is a complicated BASIC program that delves into innards of DOS/65. I suspect rev3.2 is different enough to blow it up. Super directory, SD.COM, does work so I believe rev3.2 is compatible with rev3.0 at BIOS calls level.
My TEA is at $400. The SIM is crude right now and need polishing and better documentation, I'll publish it in CRC65 homepage in a few days.
Great job, Kevin!
Bill
Bill, First... thanks for taking the time to get version 3.20 working on your CRC65, and thanks for the kudos on the code itself. I also did not have the Basic program FLST working... it's an odd one. I did slightly change the Basic SYST program which works fine... go figure.
A few things to note regarding the 3.20 version code:
- The calls "to" PEM are still the same (as the standard 3.0 version code), no functional difference in what they do.
- The calls "from" PEM (to SIM) are different for some of them.
- The new SIM code was specifically written to interface to the new PEM code.
The key differences are in the following SIM routines:
- Set Home: - this is a dummy call in the new SIM code. There's no reason to home the drive of any IDE block device for any reason.
- Set Reserved Tracks: - this is a dummy call in the new SIM code. The original PEM code (routine sttrsc) would add reserved tracks before setting the track number for a read or write.
- Set Record Number: - this was set sectors in the original SIM code. This is a modified routine to set a 16-bit record number for reading or writing by SIM.
Based on the above, there will never be a call from the 3.20 version PEM to the Set Home or Set Reserved Tracks calls. Also note that the Disk Control Block (DCB) has been slightly modified as:
sample for drive A: on my system:
; .DW 4079 ;max block number (this is the same as before)
; .DW 4 ;records per physical block (LBA) - THIS IS DIFFERENT. There are 4- 128-byte records to a single 512-byte block on the IDE device!
; .DW 256 ;number of reserved records (OS Boot area) - THIS IS DIFFERENT. This accurately determines how many Records are reserved. Note that this value MUST be a multiple of the above value (which is 4).
; .DB 1 ;block size = 2048 (this is the same as before)
; .DW 1023 ;max directory (this is the same as before)
; .DW almpa ;address of allocation map (this is the same as before)
The last two entries were for checksum on diskettes to sense if a diskette had been swapped out by the user. These have been removed, saving 3 bytes per drive DCB.
The new PEM only copies the new DCB count of 11 bytes over and operates based on those new values. As the new PEM checks for Reserved Records, it will add that to the requested Record number before calling SIM. This requires that SIM use the requested drive number and add the offset to the requested Record number from PEM.
Not sure if your new SIM version is doing all of the same things my 3.20 version is, but I would recommend using it (new 3.20 SIM) and just replacing the BIOS and Monitor calls with yours. That should work without any issues as the BIOS calls used are quite simple. Looking forward to seeing a final version... as I also have one of your CRC65 boards!