I want to load from audio cassette, but I need to load it into CP/M.
Is this possible?
Everything is possible with a computer :)
Of course, much depends on your meaning of 'load it into CP/M'
What about using the Monitor from CP/M's DDT?
Caveat: This is no definite way, just an idea how it could work. Also, as so often, there are traps in details - and of course many more ways to do so. This seems to be the least complicated I can think of.
This would go roughly along the lines of
- Boot CP/M
- Start DDT
Save the low storage below DDT (Address at 0006h) (*1)
D6,7 To get the DDT base address (top of TPA)
Calculate new Highmem for the Exidy Monitor as
M0,FF,<Highmem> Save low storage
Warmstart the Monitor with a Highmem setting below that
XH Display and ...
<Highmem> ... change HL to hold Highmem
GE006 Start the Exidy Monitor
Load your program
SE T=1 Tape Spee 300 Bd
LO Load the program
Here lies the first big hurdle, if the program loads below 0100h, or above what has been set as Highmem (later being rather unlikely - as the machine does have large RAM, does it?) - It is assumed neither applies
Restore low storage
MO <Highmem> 0 100
Execute RST 7 to restart Debug.
Examine/Change/Save your program
I would most definitely start here with saving the program to disk (*3) so you may restart for here with just loading from disk
Normally I would do:
SE T=1 LOG
That would mean you want to run that program right away? Hmm. Well, that might hold plenty of possible traps. Most around memory usage. At least if you intend to return to CP/M afterwards.
*1 - DDT replaces CCP after start, and sets the BDOS entry address (JMP at 0005h) to its lowest address.
*2 - Note these two steps could be replaced by just G+38. IIRC
*3 - Terminate DDT by
ctrl-C) and write its memory with
SAVE <number of pages> prog.COM