qlwiki:cpm_68k_operating_system

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
qlwiki:cpm_68k_operating_system [2018/01/22 21:13] timbo614qlwiki:cpm_68k_operating_system [2023/08/25 12:23] (current) – external edit 127.0.0.1
Line 1: Line 1:
  ====== CP/M 68K Operating System ======  ====== CP/M 68K Operating System ======
 The CP/M 68K Operating System was actually supplied by Digital Research, and sold by [[qlwiki:Quest Automation Ltd]] for use with their [[qlwiki:Quest Floppy Disk Drive]]. The CP/M 68K Operating System was actually supplied by Digital Research, and sold by [[qlwiki:Quest Automation Ltd]] for use with their [[qlwiki:Quest Floppy Disk Drive]].
- 
  
 The program was primarily designed to be used with the Quest Floppy Disk Drive, as it was reliant on the O/S card added onto that disk interface.  It could however, also be used from microdrive, provided you owned the [[qlwiki:OScard]] from Quest. The program was primarily designed to be used with the Quest Floppy Disk Drive, as it was reliant on the O/S card added onto that disk interface.  It could however, also be used from microdrive, provided you owned the [[qlwiki:OScard]] from Quest.
- 
  
 CP/M 68K Operating System was a full implementation of the CP/M operating system, with an added 68000 assembler, C compiler and comprehensive manual. CP/M 68K Operating System was a full implementation of the CP/M operating system, with an added 68000 assembler, C compiler and comprehensive manual.
- 
  
 CP/M 68K also provided the means of controlling the [[qlwiki:Quest Winchester Hard disk system]]. CP/M 68K also provided the means of controlling the [[qlwiki:Quest Winchester Hard disk system]].
 +
 +Tim Benham wrote the BIOS i/o code for the original microdrive based version and he recalls:
 +
 +>The interface card contained 1KB RAM that is bank switchable by writing to an I/O port(memory mapped?). No settings are stored in it. The problem was/is (as mentioned here) that the QL interrupt table is in ROM so the 1KB RAM is used to hold a copy of the interrupt table, with suitable adjustments made for when CP/M has control. Basically at start-up I copied the ROM Interrupt table to the RAM. Then made the adjustments (in the RAM) for where I needed the Interrupts to go. When CP/M booted it of course made it's own adjustments.
 +
 +>When switching the RAM out it retained its contents so i could flip-flop between RAM/ROM as much as needed. Also The 68000 made "context switching" quite simple by taking advantage of the alternate registers and stack pointer (much like a z80 could do).
 +
 +>As suspected here the O/S ran on top of QDos much like Windows 3.x on MS-DOS for certain operations, especially microdrive reading/writing, screen control, colour display - which was supported via ANSI - and some other things I can't remember! So a lot of the BIOS code was actually creating wrappers around QDos calls and mimicking a floppy drive within a QDos file.
 +
 +>At initial boot of the QL the user had to load and run a small Basic Program IIRC (or it auto ran) . This (again IIRC) changed the memory allocation for basic/QDos, loaded a specialised CP/M IPL/Bootloader into RAM from microdrive and simply jumped to it's start address.
 +
 +>Why did I get the job? Because at that time I was writing all their hard disk interface code for various machines both MS-DOS and CP/M (I also did Concurrent-CP/M for the Apricot). So I was considered the closest person they had to a BIOS writer.
 +
 +>Final note. The RAM Disk: The rush was to get the product to a show (of course) and it was terminally slow to do things using microdrives so the day before the show someone said "we need a RAM Disk" So I set about including one. I had it done in 2 or 3 hours, it worked first time. OK ..it was a fixed size but first time no bugs. That had never happened to me before and hasn't since!
  
  
  • qlwiki/cpm_68k_operating_system.1516655633.txt.gz
  • Last modified: 2022/11/05 11:15
  • (external edit)