• Please review our updated Terms and Rules here

QX-10 Software archive

The GSX driver DDQX10.PRL appears to only work correctly under MML CPM+. TPM or CPM or another CPM+ I put together produce garbage when the graph gets displayed.
I see Roche's disk #18 has QX10DD.DOC as well as GSX.DOC. Was that disk recoverable ? I'm not finding it.

Larry G
 
Out of curiosity for GSX-80 I disassembled the GSX-80 display driver for the Epson QX-10.

The attached ZIP archive contains a crude but correct assembler source file, partially commented for further refinement.
As I don't own a QX-10 I will not continue with this refinement, but maybe the source is interesting for others.

The code uses Z80 syntax and exactly reproduces the original *.PRL driver file.

Martin
 

Attachments

I thought I read someone had done that, maybe it was you. Thanks for posting it. I'll look it over.
In further study I see there was a BDOS call 115 that engages the GSX extensions by way of a GBIOS
so I'm thinking that would be the hardware specific portion, not the DD driver but we'll see or maybe
the driver IS the gbios ...

Larry G
 
The GSX driver DDQX10.PRL appears to only work correctly under MML CPM+. TPM or CPM or another CPM+ I put together produce garbage when the graph gets displayed.
I see Roche's disk #18 has QX10DD.DOC as well as GSX.DOC. Was that disk recoverable ? I'm not finding it.

Larry G
Sadly not, the box with disks 12 to 22 was missing. I do have other random un-dumped disks but I think they're just backup boot disks. I'll let you know if I ever find it
 
Attached is my preliminary disassembly of DDQX10 using Intel mnemonics which is also what was called TDL mnemonics since Roger Amidon used them in his assembler.
He was the architect behind the Epson QX10 firmware and the TPM operating systems (a cp/m clone written for the new Z80) thru his company Technical Design Labs which changed names a few times.
I just found out thru some documents I recently purchased that TPM was released just months after CP/M. It's BDOS api was compatible with CPM 1.4 which places it's beginning
maybe 1977. I did not know it went back that early. TPM is much faster than CPM. Martin - I used your notes to quickly do my own disassembly. Yes I agree you're call table was off by 1.
Function 0 just calls a return so does nothing, last function is 33. So far I only see one hardware specific instruction IN 2Ch in the driver.
Larry G
 

Attachments

Attached is my preliminary disassembly of DDQX10 using Intel mnemonics which is also what was called TDL mnemonics since Roger Amidon used them in his assembler.
He was the architect behind the Epson QX10 firmware and the TPM operating systems (a cp/m clone written for the new Z80) thru his company Technical Design Labs which changed names a few times.
I just found out thru some documents I recently purchased that TPM was released just months after CP/M. It's BDOS api was compatible with CPM 1.4 which places it's beginning
maybe 1977. I did not know it went back that early. TPM is much faster than CPM. Martin - I used your notes to quickly do my own disassembly. Yes I agree you're call table was off by 1.
Function 0 just calls a return so does nothing, last function is 33. So far I only see one hardware specific instruction IN 2Ch in the driver.
Larry G
So MML's CPM+ supports switching to graphics mode and drawing graphics primitives via console escape sequences using ESC G and ESC .. Looking at the disassembled code and some of the escape sequences in the data portions that seems to be what the ddqx10 driver is doing, which is also why it doesn't work correctly on other versions of CP/M.
 
To avoid spreading incorrect information, I corrected my disassembly w.r.t the offset-by-1 error in my opcode numbering.
I also identified a few of the tables (fill and line patterns, ESC opcode jump table) and added a few comments, which might be useful.
 

Attachments

Looking through the CP/M 2.2 manual http://www.bitsavers.org/pdf/epson/..._Epson_QX-10_ERS_256K_Version_B2.26_Dec84.pdf it seems to be possible to replace the escape sequences by calls to the XBIOS.
Appendix B of this manual gives a description of the XBIOS calls including graphics primitives.
So, if someone absolutely needs GSX for CP/M 2.2 on the QX-10, a modification of the display driver might be doable or it might even be simpler to write a completely new driver.
 
I decided to try and do a CP/M 3.1 build from the sources on Emmanuel Roche's disks. It was like trying to put together a jigsaw puzzle. I kept getting label errors, etc.
I had spent most of my Saturday shuffling around the source code and assembling using a simh cpm+ emulation on my pc. Makes me think of pulling a lever on
a slot machine over and over then finally hitting a winner, purely by chance. I used sources from disks 78, 79 but 80 was corrupted so found a similar copy in #75.
All the bootable disks I'd seen were June 01, 1984 and this one ended up November 6, 1985. I was able to create BIOS3.SPR and BNKBIOS3.SPR then use GENCPM.COM to create the CPM3.SYS
using DRI's BDOS SPR's. Yes the graphics portion GRAPH.MAC supports GSX. There is also a MUSIC.MAC portion to play musical notes I have yet to explore. Fun Stuff !!!
MML Build.JPG
 
Here's the contents of the BIOS3.SUB. I patched several together and are on drive letter I: in simh.

; my final that builds the bios3 spr's = LAG 1/11/24
;
; MICROSOFT assembly
i:m80 7201,=7201
i:m80 keytable,=keytable
i:m80 pfntable,=pfntable
i:m80 cmos,=cmos
i:m80 8255,=8255
i:m80 lpen,=lpen
; concatenate character driver rel files
i:lib cbios3a2=7201,keytable,pfntable,cmos,8255,lpen
;-------------------------------------
m80 cbios3a3,=cbios3a3
m80 =conout
m80 =hardcopy
m80 =translat
m80 =grahooks
m80 =graph
m80 =list
m80 =font
m80 =fonta
m80 =music
; concatenate console driver rel files
lib cbios3a3=cbios3a3(bios3a),conout,grahooks,graph,font,fonta,list,hardcopy,translat,music
;---------------------------------
i:m80 cbios3a5,=cbios3a5
i:m80 nec765,=nec765
i:m80 mdisk,=mdisk
; lib disc driver modules
i:lib cbios3a5=cbios3a5(bios3a),nec765,mdisk
;-----------------------------
i:m80 scb, =scb
i:m80 cbios, =cbios
i:m80 cbios3a0,=cbios3a0
i:m80 cbios3a1,=cbios3a1
i:m80 cbios3a4,=cbios3a4
i:m80 cbios3a6,=cbios3a6
i:m80 cbios3a8,=cbios3a8
i:m80 cbios3a9,=cbios3a9
; ---- must have CP/M 3 disc in drive i: ----
; link unbanked cbios3 modules
era i:bios3.spr
i:link i:bios3[os]=cbios,cbios3a0,cbios3a1,cbios3a2,cbios3a3,cbios3a4,cbios3a5,cbios3a6,cbios3a8,cbios3a9,scb
; link banked cbios3 modules
era i:bnkbios3.spr
i:link i:bnkbios3 =cbios,cbios3a0,cbios3a1,cbios3a2,cbios3a3,cbios3a4,cbios3a5,cbios3a6,cbios3a8,cbios3a9,scb
; bios3.spr made ready for GENCPM
; bnkbios3.spr made ready for GENCPM
 
Last edited:
I developed an EPS7 definition for 22DISK to read the 5x1024 CPM+ MML disks so now it's easier to get files in/out of real floppies.
Disks 32, 36, 38 seem to contain a 1986 rev C build. Disk 43 is a bootable rev C.

BEGIN EPS7 Epson QX-10 MML CPM+ DSDD 1024 bytes/sector
DENSITY MFM , LOW
CYLINDERS 40 SIDES 2 SECTORS 5,1024
SIDE1 0 1,2,3,4,5
SIDE2 1 1,2,3,4,5
ORDER SIDES
BSH 4 BLM 15 EXM 1 DSM 199 DRM 127 AL0 0C0H AL1 0 OFS 0
END

BTW - my QX-10 with a newer MML CPM+ build can read/write MSDOS 2.1 disks now but can't run because I don't have a QX-PC card (yet).

Larry G
 
I used your Definition to conjure up the cpmtools, libdsk, Flashfloppy/GOTEK definitions.

Code:
#
#alt     SIDES specifies that first one side then the other is written/read
#              before the cylinder number is advanced.
#
#outback CYLINDERS specifies that all tracks on the first side are recorded
#              then all tracks on second side.  Tracks on side 0 are written
#              from 0 up and side 1 down to 0.
#
#outout  EAGLE same as CYLINDERS except both sides start at zero or outermost
#              track.
#
#        COLUMBIA same as CYLINDERS except tracks are sequential from side
#              0 to side 1 ie. 0 - 79 for a 40 track disk.
#
#        EVEN-ODD means side 0 contains even-numbered tracks and side 1
#              contains odd-numbered tracks.
#
#        SKIP means skip the first Single Density Track
#

# 22DISK
BEGIN EPS7 Epson QX-10 MML CPM+ - DSDD 48 tpi 5.25" - 1024 x 5
DENSITY MFM, LOW
CYLINDERS 40 SIDES 2 SECTORS 5,1024
SIDE1 0 1,2,3,4,5
SIDE2 1 1,2,3,4,5
ORDER SIDES
BSH 4 BLM 15 EXM 1 DSM 199 DRM 127 AL0 0C0H AL1 0 OFS 0
END

# cpmtools
# EPS7 Epson QX-10 MML CPM+ - DSDD 48 tpi 5.25" - 1024 x 5
diskdef eps7
  seclen 1024
  tracks 80
  sectrk 5
  blocksize 2048
  maxdir 128
  skew 1
  boottrk 0
  os 2.2
end

# libdsk
[eps7]
description = EPS7 Epson QX-10 MML CPM+ - DSDD 48 tpi 5.25" - 1024 x 5
sides = alt
cylinders = 80
heads = 2
secsize = 1024
sectors = 5
secbase = 1
datarate = DD

# Flashfloppy/GOTEK
[esp7]
cyls = 80
heads = 2
secs = 5
interleave = 1
bps = 1024
id = 1
#rpm = 360
rpm = 300
rate = 250
mode = mfm
iam = no

Get directory of 06_straight_reldis_hfe.raw
Code:
$ cpmls -f eps7 -D 06_straight_reldis_hfe.raw
     Name    Bytes   Recs  Attr     update             create
------------ ------ ------ ---- -----------------  -----------------
REL     .DOC     2K      9   
RELDEL  .ASM    12K     96   
RELDEL  .COM     4K     18   
RELDIS  .BAK    38K    293   
RELDIS  .COM     6K     35   
RELDIS  .MAC    38K    294   
RELDIS  .OLD    30K    239   
RELDIS  .REL     8K     51   
RELDIS  .SYM     2K     10   
RELDUMP .ASM    30K    239   
RELDUMP .COM     4K     28   
RELDUMP .MAC    30K    234   
RELDUMP .SYM     2K     10   
RELDUMP1.COM     2K     14   
RELERR  .        2K      2   
RELMAP  .ASM    14K     98   
RELMAP  .COM     2K     14   
RELUND  .ASM    18K    130   
RELUND  .COM     2K     15   
RMAC    .COM    14K    106   
   20 Files occupying    260K,     136K Free.

Initially, I had forgot to include the BOOTTRK 0 command.


Larry
 
Last edited:
Back
Top