hi!
i'm disassembling the CP/M 1.15 XBIOS and assigning labels/descriptions to stuff.
I've found what looks like the standalone centronics port driver but there's a function thats writing to the status port at 0x84.
Anyone know what's up with that? I checked John's PCW hardware pdf but it doesn't describe what writing to 0x84 does.
Here's what z80dasm gives me, with relevant bits generated from the sym files I'm writing.
I'd appreciate some info if anyone has any, thanks!
-adrian
;
; Write the given config byte to the standalone centronics printer port.
;
; This writes the byte in A to the standalone centronics
; printer port config port (0x84), rather than the data port
; (0x85.)
;
XBIOS_internal_standalone_cen_config:
out (087h),a ;3dae d3 87 . .
out (084h),a ;3db0 d3 84 . .
out (087h),a ;3db2 d3 87 . .
ret ;3db4 c9 .
;
; Write the given byte to the standalone centronics port.
;
; This will wait until the port is ready, and then
; send the byte in A.
;
; Corrupts: C.
;
XBIOS_internal_standalone_cen_wait_write_byte:
call XBIOS_internal_standalone_cen_is_printer_ready ;3db5 cd c4 3d . . =
jr nc,XBIOS_internal_standalone_cen_wait_write_byte ;3db8 30 fb 0 .
ld a,c ;3dba 79 y
out (087h),a ;3dbb d3 87 . .
di ;3dbd f3 .
out (085h),a ;3dbe d3 85 . .
out (087h),a ;3dc0 d3 87 . .
ei ;3dc2 fb .
ret ;3dc3 c9 .
;
; Check if the standalone printer port is ready.
;
; This returns Z=true if the port is ready, Z=false otherwise.
; Corrupts: A.
;
XBIOS_internal_standalone_cen_is_printer_ready:
in a,(084h) ;3dc4 db 84 . .
and 001h ;3dc6 e6 01 . .
sub 001h ;3dc8 d6 01 . .
ret ;3dca c9 .
(And if anyone would like to help me populate the symbol/block files for the CPM 1.15 xbios, please do say hi :-) )
I think this might need schematics to see what hardware is actually in one of these standalone parallel ports, and how it's hooked up to the PCW.
There's a picture of the Cirtech parallel port at https://www.habisoft.com/pcwwiki/lib/exe/detail.php?id=en%3Ahardware%3Aperifericos%3Aparallel_printer_port&media=hardware:cirtechparallelport_pcb_top.jpg which seems to imply that it's built around a Z80-DART. That's a start, but it's not clear just from looking at the picture what PCW ports map to what registers on the DART.
I wondered if the PcW10 schematics would provide some help, since the PcW10 has a parallel port built-in. But looking at the motherboard picture at https://www.cpcwiki.eu/index.php/File:PcW10_3500-016P-3_PCB_Top.jpg I don't see anything that might be a parallel port controller -- it looks as if it's all included in the main ASIC, which is a different chip from the one in earlier PCWs (their ASICs are all part number 40028, but on the PcW10 it's part number 41530). So it's probably not worth trying to get hold of PcW10 schematics or actual hardware with that aim in mind.