mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-27 10:24:19 +00:00
Upload
Digital Research
This commit is contained in:
305
CONTRIBUTIONS/z80em86/bios/chario.mac
Normal file
305
CONTRIBUTIONS/z80em86/bios/chario.mac
Normal file
@@ -0,0 +1,305 @@
|
||||
;**************************************************************************
|
||||
;* CP/M 3 BIOS for Z80em86 Z80 CPU emulator *
|
||||
;* *
|
||||
;* Character I/O driver *
|
||||
;* *
|
||||
;* Copyright (C) 1992-2009 Stewart Kay *
|
||||
;**************************************************************************
|
||||
;
|
||||
; ChangeLog (most recent entries are at top)
|
||||
; ------------------------------------------
|
||||
; v1.0.0 - 16 February 2009, S.J.Kay
|
||||
; - Prepare for public release.
|
||||
;
|
||||
; v1.00 - 17 April 1995, S.J.Kay
|
||||
; - Undocumented changes.
|
||||
;
|
||||
; v0.00 - 1992, S.J.Kay
|
||||
; - Initial creation date.
|
||||
|
||||
.z80
|
||||
;
|
||||
maclib MODEBAUD.LIB
|
||||
maclib TPORTS.LIB
|
||||
;
|
||||
public ?cinit, ?cist, ?cost, ?co, ?ci
|
||||
public @ctbl
|
||||
;
|
||||
crt1 equ 0 ;CRT #1 O
|
||||
crt2 equ 1 ;CRT #2 O
|
||||
kbd1 equ 2 ;KBD #1 I
|
||||
kbd2 equ 3 ;KBD #2 I
|
||||
com1 equ 4 ;COM #1 IO
|
||||
com2 equ 5 ;COM #2 IO
|
||||
com3 equ 6 ;COM #3 IO
|
||||
com4 equ 7 ;COM #4 IO
|
||||
lpt1 equ 8 ;LPT #1 O
|
||||
lpt2 equ 9 ;LPT #2 O
|
||||
lpt3 equ 10 ;LPT #3 O
|
||||
;
|
||||
cseg ;common memory
|
||||
;
|
||||
; Initialize character devices
|
||||
?cinit: ld a,c
|
||||
cp crt1
|
||||
jp z,cr1int ;CRT #1 initialize
|
||||
cp crt2
|
||||
jp z,cr2int ;CRT #2 initialize
|
||||
cp kbd1
|
||||
jp z,kb1int ;KBD #1 initialize
|
||||
cp kbd2
|
||||
jp z,kb2int ;KBD #2 initialize
|
||||
cp com1
|
||||
jp z,comint ;COM #1 initialize
|
||||
cp com2
|
||||
jp z,comint ;COM #2 initialize
|
||||
cp com3
|
||||
jp z,comint ;COM #3 initialize
|
||||
cp com4
|
||||
jp z,comint ;COM #4 initialize
|
||||
cp lpt1
|
||||
jp z,lptint ;LPT #1 initialize
|
||||
cp lpt2
|
||||
jp z,lptint ;LPT #2 initialize
|
||||
cp lpt3
|
||||
jp z,lptint ;LPT #3 initialize
|
||||
ret ;return if no device
|
||||
;
|
||||
; Console input status
|
||||
?cist: ld a,b
|
||||
cp kbd1
|
||||
jp z,kb1ist ;KBD #1 input status
|
||||
cp kbd2
|
||||
jp z,kb2ist ;KBD #2 input status
|
||||
cp com1
|
||||
jp z,comips ;COM #1 input status
|
||||
cp com2
|
||||
jp z,comips ;COM #2 input status
|
||||
cp com3
|
||||
jp z,comips ;COM #3 input status
|
||||
cp com4
|
||||
jp z,comips ;COM #4 input status
|
||||
xor a
|
||||
ret ;return if no device
|
||||
;
|
||||
; Console input
|
||||
?ci: ld a,b
|
||||
cp kbd1
|
||||
jp z,kb1ip ;KBD #1 input
|
||||
cp kbd2
|
||||
jp z,kb2ip ;KBD #2 input
|
||||
cp com1
|
||||
jp z,comip ;COM #1 input
|
||||
cp com2
|
||||
jp z,comip ;COM #2 input
|
||||
cp com3
|
||||
jp z,comip ;COM #3 input
|
||||
cp com4
|
||||
jp z,comip ;COM #4 input
|
||||
xor a
|
||||
ret ;return if no device
|
||||
;
|
||||
; Console output status
|
||||
?cost: ld a,b
|
||||
cp crt1
|
||||
jp z,cr1ost ;CRT #1 output status
|
||||
cp crt2
|
||||
jp z,cr2ost ;CRT #2 output status
|
||||
cp com1
|
||||
jp z,comops ;COM #1 output status
|
||||
cp com2
|
||||
jp z,comops ;COM #2 output status
|
||||
cp com3
|
||||
jp z,comops ;COM #3 output status
|
||||
cp com4
|
||||
jp z,comops ;COM #4 output status
|
||||
cp lpt1
|
||||
jp z,lptost ;LPT #1 output status
|
||||
cp lpt2
|
||||
jp z,lptost ;LPT #2 output status
|
||||
cp lpt3
|
||||
jp z,lptost ;LPT #3 output status
|
||||
ld a,0ffh
|
||||
ret ;return if no device
|
||||
;
|
||||
; Console output
|
||||
?co: ld a,b
|
||||
cp crt1
|
||||
jp z,cr1out ;CRT #1 output
|
||||
cp crt2
|
||||
jp z,cr2out ;CRT #2 output
|
||||
cp com1
|
||||
jp z,comop ;COM #1 output
|
||||
cp com2
|
||||
jp z,comop ;COM #2 output
|
||||
cp com3
|
||||
jp z,comop ;COM #3 output
|
||||
cp com4
|
||||
jp z,comop ;COM #4 output
|
||||
cp lpt1
|
||||
jp z,lptop ;LPT #1 output
|
||||
cp lpt2
|
||||
jp z,lptop ;LPT #2 output
|
||||
cp lpt3
|
||||
jp z,lptop ;LPT #3 output
|
||||
ret ;return if no device
|
||||
;
|
||||
kb1int: out (kbd1in),a ;keyboard #1 initialize
|
||||
ret
|
||||
kb1ist: out (kbd1st),a ;keyboard #1 status
|
||||
ret
|
||||
kb1ip: out (kbd1ip),a ;keyboard #1 input
|
||||
ret
|
||||
;
|
||||
kb2int: out (kbd2in),a ;keyboard #2 initialize
|
||||
ret
|
||||
kb2ist: out (kbd2st),a ;keyboard #2 status
|
||||
ret
|
||||
kb2ip: out (kbd2ip),a ;keyboard #2 input
|
||||
ret
|
||||
|
||||
cr1int: out (crt1in),a ;CRT #1 initialize
|
||||
ret
|
||||
cr1ost: out (crt1st),a ;CRT #1 status
|
||||
ret
|
||||
cr1out: out (crt1op),a ;CRT #1 output
|
||||
ret
|
||||
;
|
||||
cr2int: out (crt2in),a ;CRT #2 initialize
|
||||
ret
|
||||
cr2ost: out (crt2st),a ;CRT #2 status
|
||||
ret
|
||||
cr2out: out (crt2op),a ;CRT #2 output
|
||||
ret
|
||||
;
|
||||
comint: ld bc,com1bd
|
||||
cp com2
|
||||
jp c,fndbdr
|
||||
ld bc,com2bd
|
||||
jp z,fndbdr
|
||||
ld bc,com3bd
|
||||
cp com4
|
||||
jp c,fndbdr
|
||||
ld bc,com4bd
|
||||
fndbdr: sub com1
|
||||
ld d,0 ;COM port # to DE (DX in Z80 emulator)
|
||||
ld e,a
|
||||
ld hl,bdrtbl
|
||||
ld a,(bc) ;get CP/M baud rate code from control table
|
||||
push de
|
||||
ld d,0
|
||||
ld e,a
|
||||
add hl,de
|
||||
pop de
|
||||
ld a,(hl) ;get IBM baud rate code from IBM table
|
||||
sla a
|
||||
jr c,badbdr ;baud rate not allowed if C flag set
|
||||
or 00000011b ;parity none, 1 stop bit, 8 data bits
|
||||
out (comini),a ;COM initialize
|
||||
ret
|
||||
badbdr: xor a
|
||||
ld (bc),a ;kill baud rate in table
|
||||
ret
|
||||
|
||||
comops: sub com1
|
||||
ld d,0 ;COM port # to DE (DX in Z80 emulator)
|
||||
ld e,a
|
||||
out (comost),a ;COM output status
|
||||
ret
|
||||
comop: sub com1
|
||||
ld d,0 ;COM port # to DE (DX in Z80 emulator)
|
||||
ld e,a
|
||||
out (comout),a ;COM output
|
||||
ret
|
||||
|
||||
comips: sub com1
|
||||
ld d,0 ;COM port # to DE (DX in Z80 emulator)
|
||||
ld e,a
|
||||
out (comist),a ;COM input status
|
||||
ret
|
||||
comip: sub com1
|
||||
ld d,0 ;COM port # to DE (DX in Z80 emulator)
|
||||
ld e,a
|
||||
out (cominp),a ;COM input
|
||||
ret
|
||||
;
|
||||
lptint: sub lpt1
|
||||
ld d,0 ;LPT port # to DE (DX in Z80 emulator)
|
||||
ld e,a
|
||||
out (lptini),a ;LPT initialize
|
||||
ret
|
||||
lptost: sub lpt1
|
||||
ld d,0 ;LPT port # to DE (DX in Z80 emulator)
|
||||
ld e,a
|
||||
out (lptsta),a ;LPT status
|
||||
ret
|
||||
lptop: sub lpt1
|
||||
ld d,0 ;LPT port # to DE (DX in Z80 emulator)
|
||||
ld e,a
|
||||
out (lptout),a ;LPT output
|
||||
ret
|
||||
;
|
||||
bdrtbl: db 10000000b ;-- no baud rate
|
||||
db 10000000b ;50 baud n/a
|
||||
db 10000000b ;75 baud n/a
|
||||
db 00000000b ;110 baud - IBM
|
||||
db 10000000b ;134 baud n/a
|
||||
db 00010000b ;150 baud - IBM
|
||||
db 00100000b ;300 baud - IBM
|
||||
db 00110000b ;600 baud - IBM
|
||||
db 01000000b ;1200 baud - IBM
|
||||
db 10000000b ;1800 baud n/a
|
||||
db 01010000b ;2400 baud - IBM
|
||||
db 10000000b ;3600 baud n/a
|
||||
db 01100000b ;4800 baud - IBM
|
||||
db 10000000b ;7200 baud n/a
|
||||
db 01110000b ;9600 baud - IBM
|
||||
db 10000000b ;19200 baud n/a
|
||||
;
|
||||
@ctbl: db 'CRT1 ' ;Dev 0, CRT #1 driver
|
||||
db mb$output
|
||||
db baud$none
|
||||
;
|
||||
db 'CRT2 ' ;Dev 1, CRT #2 driver
|
||||
db mb$output
|
||||
db baud$none
|
||||
;
|
||||
db 'KBD1 ' ;Dev 2, KBD #1 Keyboard
|
||||
db mb$input
|
||||
db baud$none
|
||||
;
|
||||
db 'KBD2 ' ;Dev 3, KBD #2 Keyboard
|
||||
db mb$input
|
||||
db baud$none
|
||||
;
|
||||
db 'COM1 ' ;Dev 4, serial via COM #1
|
||||
db mb$input+mb$output+mb$serial+mb$soft$baud
|
||||
com1bd: db baud$9600
|
||||
;
|
||||
db 'COM2 ' ;Dev 5, serial via COM #2
|
||||
db mb$input+mb$output+mb$serial+mb$soft$baud
|
||||
com2bd: db baud$9600
|
||||
;
|
||||
db 'COM3 ' ;Dev 6, serial via COM #3
|
||||
db mb$input+mb$output+mb$serial+mb$soft$baud
|
||||
com3bd: db baud$9600
|
||||
;
|
||||
db 'COM4 ' ;Dev 7, serial via COM #4
|
||||
db mb$input+mb$output+mb$serial+mb$soft$baud
|
||||
com4bd: db baud$9600
|
||||
;
|
||||
db 'LPT1 ' ;Dev 8, Centronics via LPT#1
|
||||
db mb$output
|
||||
db baud$none
|
||||
;
|
||||
db 'LPT2 ' ;Dev 9, Centronics via LPT#2
|
||||
db mb$output
|
||||
db baud$none
|
||||
;
|
||||
db 'LPT3 ' ;Dev 10, Centronics via LPT#3
|
||||
db mb$output
|
||||
db baud$none
|
||||
;
|
||||
db 0 ;marks end of table
|
||||
;
|
||||
end
|
||||
Reference in New Issue
Block a user