home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
SB180
/
PMO-SB10.Z80
< prev
next >
Wrap
Text File
|
2000-06-30
|
8KB
|
270 lines
.TITLE 'Poor Mans Network overlay for the SB180'
;
.HD64 ; Hitachi HD64180 opcodes in low-level I/O routines
;
; Assemble with Echelon ZAS
;
; POOR MAN'S NETWORK available from:
; Anderson Techno-Products
; 613-722-0690
;
; PMN is a 2-computer CP/M networking system. It allows the sharing
; of any device DSK:, LST: PUN: etc with connection via the serial port.
;
; Revision History:
;------+---------+----------+---------------------------------------------
; Rev. | Date | Author | Description
;------+---------+----------+---------------------------------------------
; 1.0 |10 May 87| Al | - created for ASCII port 0 of SB180
; | | Heynneman| 70110,611 on CompuServe
; | | | CL0798 on the Source
; | | | HEYNNEMAN on Genie
;------+---------+----------+---------------------------------------------
;
TRUE EQU 0FFH
FALSE EQU 0
CR EQU 13
;
; HD64180 port definitions
;
MODCT1 EQU 00H ;control port
MODOUT EQU 06H ;data port out
MODIN EQU 08H ;data port in
MODSTAT EQU 04H ;status port
BAUDRP EQU 02H ;baud rate port (+ even/odd parity)
;
; HD64180 bit definitions
;
MDRCVB EQU 80H ;receive bit (DAV)
MDRCVR EQU 80H ;receive ready
MDSNDB EQU 02H ;send bit
MDSNDR EQU 02H ;send ready bit
;
;***** HD64180 CPU speed *****
; (Set only ONE of the following to TRUE)
;
CPU12 EQU FALSE ;12.288 MHz clock
CPU9 EQU TRUE ; 9.216 MHz clock
CPU6 EQU FALSE ; 6.144 MHz clock
CPU4 EQU FALSE ; 4.608 MHz clock
CPU3 EQU FALSE ; 3.072 MHz clock
;
;---------------------------------------------------------------------
; PMN Eqautes
NETBIOS EQU 2000H
OFFSET EQU 0F00H
;
ORG 107H
; MODEM COMMANDS (not used in this version)
;
MATTNCDS DB 'A','T',0,0,0,0,0,0,0,0 ;ATTENTION
MINTRCDS DB '+','+','+',0,0,0,0,0,0,0 ;INTERRUPT
MDIALCDS DB 'D',0,0,0,0,0,0,0,0,0 ;DIAL A NO
MHANGCDS DB 'H','0',0,0,0,0,0,0,0,0 ;HANG UP LINE
MINITCDS DB 'E0',CR ;HAYES INITIALIZATION
DB 'F1',CR ;(40 BYTES TOTAL)
DB 'Q0',CR
DB 'V1',CR
DB 'X1',CR
DB 'S0=0',CR
DB 'S7=15',CR
DB 0,0,0,0
DB 0,0,0,0,0,0,0,0,0,0
;
; BAUD RATE TABLE
; baud rate divisors for supported rates
;
BAUDCODE:
;
IF CPU12 ; 12.288 MHz clock
DW 0EH ;300
DW 0DH ;600
DW 06H ;1200
DW 00H ;1800
DW 05H ;2400
DW 00H ;3600
DW 04H ;4800
DW 00H ;7200
DW 03H ;9600
DW 02H ;19200
DW 00H ;38400
ENDIF
;
IF CPU9 ; 9.216 MHz clock
DW 26H ;300
DW 25H ;600
DW 24H ;1200
DW 00H ;1800
DW 23H ;2400
DW 00H ;3600
DW 22H ;4800
DW 00H ;7200
DW 21H ;9600
DW 20H ;19200
DW 00H ;38400
ENDIF
;
IF CPU6 ; 6.144 MHz clock
DW 0DH ;300
DW 06H ;600
DW 05H ;1200
DW 00H ;1800
DW 04H ;2400
DW 00H ;3600
DW 03H ;4800
DW 00H ;7200
DW 02H ;9600
DW 01H ;19200
DW 00H ;38400
ENDIF
;
IF CPU4 ; 4.608 MHz clock
DW 25H ;300
DW 24H ;600
DW 23H ;1200
DW 00H ;1800
DW 22H ;2400
DW 00H ;3600
DW 21H ;4800
DW 00H ;7200
DW 20H ;9600
DW 00H ;19200
DW 00H ;38400
ENDIF
;
IF CPU3 ; 3.072 MHz clock
DW 06H ;300
DW 05H ;600
DW 04H ;1200
DW 00H ;1800
DW 03H ;2400
DW 00H ;3600
DW 02H ;4800
DW 00H ;7200
DW 01H ;9600
DW 80H ;19200
DW 00H ;38400
ENDIF
;
ERRMRK: DB '^' ;PARAMETER ERROR MARKER
COMP: DB 'MicroMint SB180 and ASCI0 port',CR
; .........1.........2.........3 30 BYTES
ORG NETBIOS+31BH
;
SCRSIZ: DB 24 ;LINES ON SCREEN
SCRWID: DB 80 ;WIDTH OF SCREEN
;
CLRLIN: DB 2,27,'T',0,0,0,0,0,0,0 ;CLEAR TO EOL
DIRCUR: DB 2,27,'=',0,0,0,0,0,0,0 ;DIRECT CURSOR ADDR
MIDCUR: DB 0,0,0,0,0,0,0,0,0,0 ;MIDDLE STRING
ENDCUR: DB 0,0,0,0,0,0,0,0,0,0 ;ENDING STRING
VOFF: DB 32 ;CURSOR ADDR OFFSET
CURSTY: DB 0 ;0=Y,X; 1=X,Y
ASCCUR: DB 0 ;ASCII CURSOR ADDR
VDELAY: DB 0 ;CURS ADDR DELAY
REVVID: DB 0,0,0,0,0,0,0,0,0,0 ;REVERSE VIDEO
NORVID: DB 0,0,0,0,0,0,0,0,0,0 ;NORMAL VIDEO
SAVECP: DB 0,0,0,0,0,0,0,0,0,0 ;SAVE CURSR POSN
RSTRCP: DB 0,0,0,0,0,0,0,0,0,0 ;RESTORE CURSR POSN
MSGL: DB 0 ;WHERE TO PUT MESSAGE
;
ORG NETBIOS+61CH
SYSID: DB 9 ;THIS SYSTEM ID, FOR 9MHZ SB180
FCLK: DB TRUE ;4MHZ OR BETTER
MSGKEY: DB 1CH,0,0,0 ;MSG KEY SEQUENCE
RELOC: DW 0 ;WHERE TO PUT NETBIOS
DS 8 ;reserved
;
; USART CONTROL BYTES
;
USART1: DB 0 ;GET USART'S ATTN
USART2: DB 0 ;SOFTWARE RESET
FINBIT: DB 0 ;ENABLE XMIT
FIXED: DB 0 ;USART CONSTANT BITS
PARITY: DB 0 ;NO PARITY
WORD: DB 64H ;REC EN, TRANS EN, 8 BITS, 1 STOP
DB 0 ;
BAUD: DW 21H ;DEFAULT BAUD RATE (9600, 9MHZ)
;
ORG NETBIOS+OFFSET
DRIVER:
ANYEXT: JP DR$ANYEXT ;is a byte at port
INEXT: JP DR$INEXT ;read the data port
EXTRDY: JP DR$EXTRDY ;check if ready to xmit
OUTEXT: JP DR$OUTEXT ;write to the data port
RESET JP DR$INITMOD ;init the port
ACTIV: RET
NOP
NOP
PBUSY: RET
NOP
NOP
; E N D of Fixed Format Area !
;===================================================================
;
; CHECK IF BYTE AT MODEM
; Z set if byte available.
; May use registers A, B, C.
;
DR$ANYEXT:
IN0 A,(MODSTAT)
IN0 A,(MODSTAT) ;DO TWICE FOR VALID DCD
XOR MDRCVR
AND MDRCVB
RET
;...............................
;
; GET BYTE FROM MODEM
; May use registers A, B, C.
;
DR$INEXT:
IN0 A,(MODIN)
RET
;...............................
;
; CHECK IF MODEM PORT READY TO XMIT
; Z set if so.
; May use registers A, B, C.
;
DR$EXTRDY:
IN0 A,(MODSTAT)
IN0 A,(MODSTAT) ;DO TWICE FOR VALID DCD
XOR MDSNDR
AND MDSNDB
RET
;...............................
;
; SEND BYTE TO MODEM
; May use registers A, B, C.
;
DR$OUTEXT:
OUT0 (MODOUT),A
RET
;...............................
;
; RESET/INIT MODEM PORT
;
DR$INITMOD:
LD A,(WORD)
OUT0 (MODCT1),A
LD A,(BAUD)
AND 7FH ;CHANGE 80H TO 00H IF 3.072 MHZ CLOCK
OUT0 (BAUDRP),A
RET
;
;................................
;
END ;PMO-SB10.Z80