.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