Challenger 4P Emulation With Cassette

Post Reply
User avatar
megardi
Posts: 18
Joined: Sun May 29, 2022 2:57 pm
Location: Waterloo, Ontario, Canada
Contact:

Challenger 4P Emulation With Cassette

Post by megardi »

I am currently working on a Challenger 1P reproduction. For details see my Hackaday Project (https://hackaday.io/project/186956-osi- ... production). I have a 1P emulator written in Python running pretty well. It currently supports a virtual 32x32 (24x24 actual) display, a virtual keyboard and virtual cassette and works with either the SYNMON or CEGMON monitors.

I would also like to emulate a system that had a 540 video card installed so that I can have a 64x32 (actual) video mode (the 24x24 of the C1P is pretty restrictive). So far I have the virtual display working with a SYN600 monitor ROM (c2_cwmhigh.rom found here: https://www.osiweb.org/roms/syn600_images.zip). Also the virtual keyboard is working.
C4P.jpg
C4P.jpg (48.05 KiB) Viewed 1318 times
I can't however get the virtual cassette working. For the C1P it was a simple matter of monitoring the 0xF000 (cassette status) and 0xF001 (read/write) ports and providing the appropriate responses. This is not working for the c2_cwmhigh.rom. Two things I can thing of are:
  • The cassette ACIA is not in the ROM image.
  • The port addresses have changed. (In addition to F000/F001 have tried FC00/FC01 and C010/C011).
I'm relatively new to OSI computers so any help would be appreciated.
Last edited by megardi on Sun Oct 30, 2022 8:25 pm, edited 1 time in total.
About: A retired software developer, living in Waterloo, Ontario, Canada, who appreciates having the time to make whatever the heck he damn well feels like!
Website: https://Mikesmakes.ca
Mark
Posts: 297
Joined: Tue Sep 16, 2008 6:04 am
Location: Madison, WI
Contact:

Re: Challenger 4P Emulation With Cassette

Post by Mark »

The SYN600 supports two different configurations for OSI540 based systems; BASIC in ROM cassette based "C/W/M?", and floppy disk based "H/D/M?".
OSI used a priority encoder to map different parts of the ROM in the address space based on configuration needs.

// SYN600 - OSI multi-board Monitor ROM
// page 000 'H/D/M' maps to $FF00 for a C2/C4 540Vid disk system
// page 100 keypoller maps to $FD00 for a C2/C4 540Vid system
// page 200 monitor maps to $FE00 for a C2/C4 540Vid system
// page 300 'C/W/M' maps to $FF00 for a C2/C4 540Vid tape system
// page 400 disk boot maps to $FC00 for a C1 system
// page 500 keypoller maps to $FD00 for a C1 system
// page 600 monitor maps to $FE00 for a C1 system
// page 700 'D/C/W/M' maps to $FF00 for a C1 system

On these machines, the ACIA is located at $FC00, the keyboard is the same as the C1P $DF00, however all bits are inverted.
The cassette based system relied on the BASIC ROM to initialize the ACIA with code at $BF22
There is a different version of CEGMON for these systems, which requires the CEGMON $FCxx page to be relocated to $F4xx to avoid conflict with the ACIA.

The OSI540 board originally was black & white only with a 6bit ASCII character generator or optional 8-bit OSI graphics character set ROM. It also contained the cassette interface. The 2nd version OSI540B added color, BSR/X-10 ultrasonic AC control, but removed cassette I/O.
The 540 also supported two video output modes, 32x32 and 64x32, and could be changed at any time.
(F.Y.I. OSIC1P 600D supports 32x32 (24x24 visible) or 64x16 (48x16 visible) depending on bit at $D800)

OSI540 Write Register @ $DE00 controls video modes:
bit 0 1=32, 0=64
bit 1 1=tone on (542 keyboard)
bit 2 1=color on
bit 3 1=enable 38-40Khz AC Home control output

OSI540 Read Register @ $DE00
bit 7 = video timing counter bit, 0 for 1/120 second, 1 for 1/120 second, based on video clock (60Hz)

OSI540 Color RAM @ $E000-$E7FF 4 bits

Other hardware for disk based OSI include disk ACIA At $C010 and 6821 PIA at $C000
Find more ROMS images at https://osi.marks-lab.com/software/roms.html

Cheers,
-Mark
User avatar
megardi
Posts: 18
Joined: Sun May 29, 2022 2:57 pm
Location: Waterloo, Ontario, Canada
Contact:

Re: Challenger 4P Emulation With Cassette

Post by megardi »

Thank you Mark. I got the cassette interface going at ports FC00/FC01. Your site is an amazing resource!

Mike
About: A retired software developer, living in Waterloo, Ontario, Canada, who appreciates having the time to make whatever the heck he damn well feels like!
Website: https://Mikesmakes.ca
Post Reply