Added HBIOS patch and binaries
This commit is contained in:
		
							
								
								
									
										20
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								README.md
									
									
									
									
									
								
							@@ -57,6 +57,26 @@ Direct download:
 | 
			
		||||
 | 
			
		||||
The patch file is ```QT-CPM3.Z```.
 | 
			
		||||
 | 
			
		||||
### RomWBW HBIOS patch
 | 
			
		||||
 | 
			
		||||
This patch has been provided by Paul Wrightson.
 | 
			
		||||
 | 
			
		||||
It uses direct RomWBW HBIOS calls for talking to the serial port, so it is also independant of the type of serial chip.
 | 
			
		||||
 | 
			
		||||
The patch ```QT-HB_1.Z``` uses RomWBW device 1 (ie. the second serial port), the patch ```QT-HB_2.Z``` uses device 2 (third serial port).
 | 
			
		||||
So this should be equivalent to the ```QTERM82.COM``` and ```QTERM84.COM``` versions for SIO/2.
 | 
			
		||||
 | 
			
		||||
If another serial device needs to be used, just change the variable ```DEVICE``` at the beginning of the patch file and assemble it as shown below.
 | 
			
		||||
 | 
			
		||||
As this uses the RomWBW drivers, RTS/CTS signals should also be used automatically.
 | 
			
		||||
 | 
			
		||||
Using this QTERM version, it should be possible to use other serial chips than SIO/2 on CP/M 2.2, as long as RomWBW is used.
 | 
			
		||||
 | 
			
		||||
Direct download:
 | 
			
		||||
 | 
			
		||||
* [QTERMH1.COM](qtermh1.com) - RomWBW device 1
 | 
			
		||||
* [QTERMH2.COM](qtermh2.com) - RomWBW device 2
 | 
			
		||||
 | 
			
		||||
## Technical details
 | 
			
		||||
 | 
			
		||||
### Files
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										176
									
								
								qt-hb_1.z
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								qt-hb_1.z
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,176 @@
 | 
			
		||||
; QTROMWBW.Z - QTerm patch for RC2014 and RomWBW with VT 100 terminal
 | 
			
		||||
;
 | 
			
		||||
; July 2020, Paul Wrightson. Convert to use ROMWBW API
 | 
			
		||||
; September 2019, Anna Christina Nass
 | 
			
		||||
; based on IMSAI8080 patch: September 2019, Udo Munk
 | 
			
		||||
;
 | 
			
		||||
 | 
			
		||||
.var	DEVICE	0x01			; HBIOS device to use
 | 
			
		||||
.var    CIOIN   0x00
 | 
			
		||||
.var    CIOOUT 	0x01
 | 
			
		||||
.var    CIOIST  0x02
 | 
			
		||||
.var    CIOOST  0x03
 | 
			
		||||
.var    CIOINIT 0x04
 | 
			
		||||
 | 
			
		||||
.org    0x0110                  ; modem input status
 | 
			
		||||
modist: ld      B,CIOIST        ; HBIOS CIOOUT function
 | 
			
		||||
        ld      HL,device
 | 
			
		||||
        ld      C,(HL)          ; device number (0,1,2,3)
 | 
			
		||||
        rst     8               ; do it, result in A
 | 
			
		||||
        ret
 | 
			
		||||
 | 
			
		||||
.org    0x0120                  ; modem input
 | 
			
		||||
modin:  ld      B,CIOIN         ; HBIOS CIOIN function
 | 
			
		||||
        ld      HL,device
 | 
			
		||||
        ld      C,(HL)          ; device number (0,1,2,3)
 | 
			
		||||
        rst     8               ; do it, result in E, status in A
 | 
			
		||||
        ld      A,E             ; put received char in A
 | 
			
		||||
        ret
 | 
			
		||||
 | 
			
		||||
.org    0x0130                  ; modem output status
 | 
			
		||||
modost: ld      B,CIOOST        ; HBIOS CIOOUT function
 | 
			
		||||
        ld      HL,device
 | 
			
		||||
        ld      C,(HL)          ; device number (0,1,2,3)
 | 
			
		||||
        rst     8               ; do it, result in A
 | 
			
		||||
        ret
 | 
			
		||||
 | 
			
		||||
.org    0x0140                  ; modem output
 | 
			
		||||
modout: ld      B,CIOOUT        ; HBIOS CIOOUT function
 | 
			
		||||
        ld      HL,device
 | 
			
		||||
        ld      C,(HL)          ; device number (0,1,2,3)
 | 
			
		||||
		ld      E,A             ; put char in E
 | 
			
		||||
        rst     8               ; do it, result in A
 | 
			
		||||
        ret
 | 
			
		||||
 | 
			
		||||
.org    0x0150                  ; start break
 | 
			
		||||
sbreak: ret
 | 
			
		||||
 | 
			
		||||
.org    0x0160                  ; stop break
 | 
			
		||||
ebreak: ret
 | 
			
		||||
 | 
			
		||||
.org    0x0170                  ; drop DTR
 | 
			
		||||
dtroff: ret
 | 
			
		||||
        db      0x0c            ;length of modem hang up string
 | 
			
		||||
        db      0xfe,0xfe       ;two delays
 | 
			
		||||
        db      0x2b,0x2b,0x2b  ;+++
 | 
			
		||||
        db      0xfe,0xfe       ;two delays
 | 
			
		||||
        db      'ATH0',0x0d     ;ATH0 <return>
 | 
			
		||||
 | 
			
		||||
.org    0x0180                  ; restore DTR
 | 
			
		||||
dtron:  ret
 | 
			
		||||
 | 
			
		||||
.org    0x0190                  ; set baud rate
 | 
			
		||||
setbd:  ret
 | 
			
		||||
 | 
			
		||||
.org    0x01a0                  ; baud rate table
 | 
			
		||||
baudtb:
 | 
			
		||||
        db      0,0,0,0,0,0,0,0
 | 
			
		||||
        db      0,0,0,0,0,0,0,0
 | 
			
		||||
 | 
			
		||||
.org    0x01b0                  ; set communication mode
 | 
			
		||||
setmod: ret
 | 
			
		||||
 | 
			
		||||
.org    0x01c0                  ; communication mode table
 | 
			
		||||
modetb:
 | 
			
		||||
        db      0,0,0,0,0,0,0,0
 | 
			
		||||
        db      0,0,0,0
 | 
			
		||||
 | 
			
		||||
.org    0x01cc
 | 
			
		||||
resrvd: db      0               ; reserved for later use
 | 
			
		||||
 | 
			
		||||
.org    0x01cd                  ; protocol transfer size
 | 
			
		||||
xfersz: db      8
 | 
			
		||||
 | 
			
		||||
.org    0x01ce                  ; processor speed
 | 
			
		||||
speed:  db      8               ; cpu speed in Mhz;
 | 
			
		||||
 | 
			
		||||
.org    0x01cf                  ; escape character
 | 
			
		||||
escape: db      0x19            ; 0x19: ^Y
 | 
			
		||||
 | 
			
		||||
.org    0x01d0                  ; signon message
 | 
			
		||||
signon: db      'RomWBW HBIOS - VT100\0'
 | 
			
		||||
 | 
			
		||||
.org    0x01f0                  ; clear screen
 | 
			
		||||
clrs:   db      '\e[2J'
 | 
			
		||||
        db      '\e[1;1H\0'
 | 
			
		||||
 | 
			
		||||
.var    scrout  0x0109          ; print character in C
 | 
			
		||||
.var    decout  0x010c          ; print string of value in HL
 | 
			
		||||
 | 
			
		||||
.org    0x0200                  ; moveto routine
 | 
			
		||||
moveto: push    HL
 | 
			
		||||
        ld      C,'\e'
 | 
			
		||||
        call    scrout
 | 
			
		||||
        ld      C,'['
 | 
			
		||||
        call    scrout
 | 
			
		||||
        pop     HL
 | 
			
		||||
        push    HL
 | 
			
		||||
        ld      L,H
 | 
			
		||||
        ld      H,00
 | 
			
		||||
        inc     L
 | 
			
		||||
        call    decout
 | 
			
		||||
        ld      C,';'
 | 
			
		||||
        call    scrout
 | 
			
		||||
        pop     HL
 | 
			
		||||
        ld      H,00
 | 
			
		||||
        inc     L
 | 
			
		||||
        call    decout
 | 
			
		||||
        ld      C,'H'
 | 
			
		||||
        jp      scrout
 | 
			
		||||
 | 
			
		||||
.org    0x022f
 | 
			
		||||
tcbits: db      0b11000011      ;terminal capabilities
 | 
			
		||||
 | 
			
		||||
.org    0x0230
 | 
			
		||||
;brites:        db      '\e[1m\0'               ;bright
 | 
			
		||||
brites: db      '\0'            ;bright
 | 
			
		||||
 | 
			
		||||
.org    0x0238
 | 
			
		||||
;dims:  db      '\e[0m\0'               ;dim
 | 
			
		||||
dims:   db      '\0'            ;dim
 | 
			
		||||
 | 
			
		||||
.org    0x0240
 | 
			
		||||
dlstr:  db      '\0'            ;delete line
 | 
			
		||||
 | 
			
		||||
.org    0x0248
 | 
			
		||||
ilstr:  db      '\0'            ;insert line
 | 
			
		||||
 | 
			
		||||
.org    0x0250
 | 
			
		||||
dcstr:  db      '\0'            ;Delete character
 | 
			
		||||
 | 
			
		||||
.org    0x0258
 | 
			
		||||
icstr:  db      '\0'            ;Insert character
 | 
			
		||||
 | 
			
		||||
.org    0x0260
 | 
			
		||||
ceol:   db      '\e[K\0'                ;Clear to end of line
 | 
			
		||||
 | 
			
		||||
.org    0x0268
 | 
			
		||||
ceos:   db      '\e[J\0'                ;Clear to end of screen
 | 
			
		||||
 | 
			
		||||
.org    0x0270  ;entry subroutine
 | 
			
		||||
entry:  jp      init
 | 
			
		||||
 | 
			
		||||
.org    0x0273  ;exit subroutine
 | 
			
		||||
exit:   jp      uninit
 | 
			
		||||
 | 
			
		||||
.org    0x0276  ;user subroutine
 | 
			
		||||
user:   ret
 | 
			
		||||
 | 
			
		||||
.org    0x0279  ;keyboard map subroutine
 | 
			
		||||
kbmap:  ret
 | 
			
		||||
 | 
			
		||||
.org    0x0280  ; user patch area
 | 
			
		||||
; PUT RomWBW UNIT # here
 | 
			
		||||
device: db      DEVICE
 | 
			
		||||
 | 
			
		||||
; INITIALIZE RomWBW SERIAL DEVICE
 | 
			
		||||
init:   ; ret     ; Initialize. fall through to re-initialize.
 | 
			
		||||
 | 
			
		||||
; RE-INITIALIZE RomWBW SERIAL DEVICE
 | 
			
		||||
uninit: ld      B,CIOINIT       ; HBIOS CIOINIT function
 | 
			
		||||
        ld      HL,device
 | 
			
		||||
        ld      C,(HL)          ; device number (0,1,2,3)
 | 
			
		||||
        ld      DE,-1           ; "Reset with current settings"
 | 
			
		||||
        rst     8               ; do it
 | 
			
		||||
        ret                     ; not initialized, so no un-initialize
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										176
									
								
								qt-hb_2.z
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										176
									
								
								qt-hb_2.z
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,176 @@
 | 
			
		||||
; QTROMWBW.Z - QTerm patch for RC2014 and RomWBW with VT 100 terminal
 | 
			
		||||
;
 | 
			
		||||
; July 2020, Paul Wrightson. Convert to use ROMWBW API
 | 
			
		||||
; September 2019, Anna Christina Nass
 | 
			
		||||
; based on IMSAI8080 patch: September 2019, Udo Munk
 | 
			
		||||
;
 | 
			
		||||
 | 
			
		||||
.var	DEVICE	0x02			; HBIOS device to use
 | 
			
		||||
.var    CIOIN   0x00
 | 
			
		||||
.var    CIOOUT 	0x01
 | 
			
		||||
.var    CIOIST  0x02
 | 
			
		||||
.var    CIOOST  0x03
 | 
			
		||||
.var    CIOINIT 0x04
 | 
			
		||||
 | 
			
		||||
.org    0x0110                  ; modem input status
 | 
			
		||||
modist: ld      B,CIOIST        ; HBIOS CIOOUT function
 | 
			
		||||
        ld      HL,device
 | 
			
		||||
        ld      C,(HL)          ; device number (0,1,2,3)
 | 
			
		||||
        rst     8               ; do it, result in A
 | 
			
		||||
        ret
 | 
			
		||||
 | 
			
		||||
.org    0x0120                  ; modem input
 | 
			
		||||
modin:  ld      B,CIOIN         ; HBIOS CIOIN function
 | 
			
		||||
        ld      HL,device
 | 
			
		||||
        ld      C,(HL)          ; device number (0,1,2,3)
 | 
			
		||||
        rst     8               ; do it, result in E, status in A
 | 
			
		||||
        ld      A,E             ; put received char in A
 | 
			
		||||
        ret
 | 
			
		||||
 | 
			
		||||
.org    0x0130                  ; modem output status
 | 
			
		||||
modost: ld      B,CIOOST        ; HBIOS CIOOUT function
 | 
			
		||||
        ld      HL,device
 | 
			
		||||
        ld      C,(HL)          ; device number (0,1,2,3)
 | 
			
		||||
        rst     8               ; do it, result in A
 | 
			
		||||
        ret
 | 
			
		||||
 | 
			
		||||
.org    0x0140                  ; modem output
 | 
			
		||||
modout: ld      B,CIOOUT        ; HBIOS CIOOUT function
 | 
			
		||||
        ld      HL,device
 | 
			
		||||
        ld      C,(HL)          ; device number (0,1,2,3)
 | 
			
		||||
		ld      E,A             ; put char in E
 | 
			
		||||
        rst     8               ; do it, result in A
 | 
			
		||||
        ret
 | 
			
		||||
 | 
			
		||||
.org    0x0150                  ; start break
 | 
			
		||||
sbreak: ret
 | 
			
		||||
 | 
			
		||||
.org    0x0160                  ; stop break
 | 
			
		||||
ebreak: ret
 | 
			
		||||
 | 
			
		||||
.org    0x0170                  ; drop DTR
 | 
			
		||||
dtroff: ret
 | 
			
		||||
        db      0x0c            ;length of modem hang up string
 | 
			
		||||
        db      0xfe,0xfe       ;two delays
 | 
			
		||||
        db      0x2b,0x2b,0x2b  ;+++
 | 
			
		||||
        db      0xfe,0xfe       ;two delays
 | 
			
		||||
        db      'ATH0',0x0d     ;ATH0 <return>
 | 
			
		||||
 | 
			
		||||
.org    0x0180                  ; restore DTR
 | 
			
		||||
dtron:  ret
 | 
			
		||||
 | 
			
		||||
.org    0x0190                  ; set baud rate
 | 
			
		||||
setbd:  ret
 | 
			
		||||
 | 
			
		||||
.org    0x01a0                  ; baud rate table
 | 
			
		||||
baudtb:
 | 
			
		||||
        db      0,0,0,0,0,0,0,0
 | 
			
		||||
        db      0,0,0,0,0,0,0,0
 | 
			
		||||
 | 
			
		||||
.org    0x01b0                  ; set communication mode
 | 
			
		||||
setmod: ret
 | 
			
		||||
 | 
			
		||||
.org    0x01c0                  ; communication mode table
 | 
			
		||||
modetb:
 | 
			
		||||
        db      0,0,0,0,0,0,0,0
 | 
			
		||||
        db      0,0,0,0
 | 
			
		||||
 | 
			
		||||
.org    0x01cc
 | 
			
		||||
resrvd: db      0               ; reserved for later use
 | 
			
		||||
 | 
			
		||||
.org    0x01cd                  ; protocol transfer size
 | 
			
		||||
xfersz: db      8
 | 
			
		||||
 | 
			
		||||
.org    0x01ce                  ; processor speed
 | 
			
		||||
speed:  db      8               ; cpu speed in Mhz;
 | 
			
		||||
 | 
			
		||||
.org    0x01cf                  ; escape character
 | 
			
		||||
escape: db      0x19            ; 0x19: ^Y
 | 
			
		||||
 | 
			
		||||
.org    0x01d0                  ; signon message
 | 
			
		||||
signon: db      'RomWBW HBIOS - VT100\0'
 | 
			
		||||
 | 
			
		||||
.org    0x01f0                  ; clear screen
 | 
			
		||||
clrs:   db      '\e[2J'
 | 
			
		||||
        db      '\e[1;1H\0'
 | 
			
		||||
 | 
			
		||||
.var    scrout  0x0109          ; print character in C
 | 
			
		||||
.var    decout  0x010c          ; print string of value in HL
 | 
			
		||||
 | 
			
		||||
.org    0x0200                  ; moveto routine
 | 
			
		||||
moveto: push    HL
 | 
			
		||||
        ld      C,'\e'
 | 
			
		||||
        call    scrout
 | 
			
		||||
        ld      C,'['
 | 
			
		||||
        call    scrout
 | 
			
		||||
        pop     HL
 | 
			
		||||
        push    HL
 | 
			
		||||
        ld      L,H
 | 
			
		||||
        ld      H,00
 | 
			
		||||
        inc     L
 | 
			
		||||
        call    decout
 | 
			
		||||
        ld      C,';'
 | 
			
		||||
        call    scrout
 | 
			
		||||
        pop     HL
 | 
			
		||||
        ld      H,00
 | 
			
		||||
        inc     L
 | 
			
		||||
        call    decout
 | 
			
		||||
        ld      C,'H'
 | 
			
		||||
        jp      scrout
 | 
			
		||||
 | 
			
		||||
.org    0x022f
 | 
			
		||||
tcbits: db      0b11000011      ;terminal capabilities
 | 
			
		||||
 | 
			
		||||
.org    0x0230
 | 
			
		||||
;brites:        db      '\e[1m\0'               ;bright
 | 
			
		||||
brites: db      '\0'            ;bright
 | 
			
		||||
 | 
			
		||||
.org    0x0238
 | 
			
		||||
;dims:  db      '\e[0m\0'               ;dim
 | 
			
		||||
dims:   db      '\0'            ;dim
 | 
			
		||||
 | 
			
		||||
.org    0x0240
 | 
			
		||||
dlstr:  db      '\0'            ;delete line
 | 
			
		||||
 | 
			
		||||
.org    0x0248
 | 
			
		||||
ilstr:  db      '\0'            ;insert line
 | 
			
		||||
 | 
			
		||||
.org    0x0250
 | 
			
		||||
dcstr:  db      '\0'            ;Delete character
 | 
			
		||||
 | 
			
		||||
.org    0x0258
 | 
			
		||||
icstr:  db      '\0'            ;Insert character
 | 
			
		||||
 | 
			
		||||
.org    0x0260
 | 
			
		||||
ceol:   db      '\e[K\0'                ;Clear to end of line
 | 
			
		||||
 | 
			
		||||
.org    0x0268
 | 
			
		||||
ceos:   db      '\e[J\0'                ;Clear to end of screen
 | 
			
		||||
 | 
			
		||||
.org    0x0270  ;entry subroutine
 | 
			
		||||
entry:  jp      init
 | 
			
		||||
 | 
			
		||||
.org    0x0273  ;exit subroutine
 | 
			
		||||
exit:   jp      uninit
 | 
			
		||||
 | 
			
		||||
.org    0x0276  ;user subroutine
 | 
			
		||||
user:   ret
 | 
			
		||||
 | 
			
		||||
.org    0x0279  ;keyboard map subroutine
 | 
			
		||||
kbmap:  ret
 | 
			
		||||
 | 
			
		||||
.org    0x0280  ; user patch area
 | 
			
		||||
; PUT RomWBW UNIT # here
 | 
			
		||||
device: db      DEVICE
 | 
			
		||||
 | 
			
		||||
; INITIALIZE RomWBW SERIAL DEVICE
 | 
			
		||||
init:   ; ret     ; Initialize. fall through to re-initialize.
 | 
			
		||||
 | 
			
		||||
; RE-INITIALIZE RomWBW SERIAL DEVICE
 | 
			
		||||
uninit: ld      B,CIOINIT       ; HBIOS CIOINIT function
 | 
			
		||||
        ld      HL,device
 | 
			
		||||
        ld      C,(HL)          ; device number (0,1,2,3)
 | 
			
		||||
        ld      DE,-1           ; "Reset with current settings"
 | 
			
		||||
        rst     8               ; do it
 | 
			
		||||
        ret                     ; not initialized, so no un-initialize
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								qtermh1.com
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								qtermh1.com
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								qtermh2.com
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								qtermh2.com
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user