home *** CD-ROM | disk | FTP | other *** search
- ; PCPIPM11.Z80
- ;
- ; Driver for Poor Man's Network and PCPI Applicard w/SuperSerial Card
- ;
- ; 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.1 |08 May 87| Al | - made ZAS assembler compatible
- ; | |Heynneman | - setup for SOROC terminal codes
- ; | | | - default 9600 baud, cause Super Serial
- ; | | | won't run consistently at 19200
- ;------+---------+----------+---------------------------------------------
- ; 1.0 |13 Apr 87| Jim Lill | - created original adapting SSERIAL.ASM
- ; | | | and using code from MXH-AP53.ASM
- ;------+---------+----------+---------------------------------------------
-
- TRUE EQU 0FFH
- FALSE EQU 0
- CR EQU 13
- ;...............................
- ;
- ; Apple Super Serial Card equates
- ; -------------------------------
- ;
- SSCSLOT EQU 2 ;Slot of Super Serial Card
- MODDATP EQU 0C088H + [SSCSLOT*10H] ;data port of ACIA
- MODSTAP EQU 0C089H + [SSCSLOT*10H] ;status port of ACIA
- MODCTLP EQU 0C08BH + [SSCSLOT*10H] ;control port of ACIA
- MODCMDP EQU 0C08AH + [SSCSLOT*10H] ;command port of ACIA
- ;
- ;
- RDBYTE EQU 0FFE0H ;Read a Byte from Apple (A = BYTE)
- WRBYTE EQU 0FFE3H ;Write a Byte to Apple (C = BYTE)
- RDWORD EQU 0FFE6H ;Read 2 Bytes from Apple (DE = BYTES)
- WRWORD EQU 0FFE9H ;Write 2 Bytes to Apple (DE = BYTES)
- ;
- PEEK1BYTE EQU 6 ;Command to Peek 1 Byte in the Apple
- POKE1BYTE EQU 7 ;Command to Poke 1 Byte to the Apple
-
- ; Status bit equates for SSC serial port
- ;
- MDSNDB EQU 10H
- MDSNDR EQU 10H
- MDRCVB EQU 08H
- MDRCVR EQU 08H
-
- ;---------------------------------------------------------------------
- ; 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 for Apple Super Serial Card
- ;
- BAUDCODE:
- DW 06H ;300
- DW 07H ;600
- DW 08H ;1200
- DW 09H ;1800
- DW 0AH ;2400
- DW 0BH ;3600
- DW 0CH ;4800
- DW 0DH ;7200
- DW 0EH ;9600
- DW 0FH ;19200
- DW 0 ;38400
- ;
- ERRMRK: DB '^' ;PARAMETER ERROR MARKER
- COMP: DB 'Apple ][/Applicard/SuperSerial',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 8 ;THIS SYSTEM ID, FOR 8MHZ APPLE
- ;SYSID: DB 6 ;THIS SYSTEM ID, FOR 6MHZ APPLE
- 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 0BH ;NO PARITY
- WORD: DB 010H ;8 Bits, 1 Stop
- DB 0 ;
- BAUD: DW 0EH ;DEFAULT BAUD RATE (9600)
- ;
- ORG NETBIOS+OFFSET
-
- DRIVER: ;FOR APPLE SUPER SERIAL CARD w/Applicard
-
- 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 SETSSC ;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:
- CALL RD$MODSTAP ;returns with status in Accum.
- XOR MDRCVR
- AND MDRCVR
- RET
- ;...............................
- ;
- ; CHECK IF MODEM PORT READY TO XMIT
- ; Z set if so.
- ; May use registers A, B, C.
- ;
- DR$EXTRDY:
- CALL RD$MODSTAP ;returns with status in Accum.
- XOR MDSNDR
- AND MDSNDR
- RET
- ;...............................
- ;
- ; set baud, parity, and stop bit parameters of acia.
- ;
- setssc: ld a,(parity) ;get current parity byte
- or 0bh ;enable dtr, recv irq, and rts
- call wr$modcmdp ;send to command port
- push hl
- ld hl,baud ;get address of current baud byte
- ld a,(word) ;get current word length byte
- or (hl) ;put 'em together
- pop hl
- call wr$modctlp ;now send to control port
- ret
- ;...............................
- ;
- ; Write to the Command Port of ACIA
- ;
- WR$MODCMDP: PUSH DE
- LD DE,MODCMDP
- JP POKE
- ;
- ; Write to the Control Port of the ACIA
- ;
- WR$MODCTLP: PUSH DE
- LD DE,MODCTLP
- JP POKE
-
- ; Read the Status Port of the ACIA
- ;
- RD$MODSTAP: PUSH DE
- LD DE,MODSTAP
- JP PEEK
- ;
- ; Read Data Port of ACIA
- ;
- DR$INEXT: PUSH DE
- LD DE,MODDATP
- JP PEEK
- ;
- ; Write to the Serial Data Port of the ACIA
- ;
- DR$OUTEXT: PUSH DE
- LD DE,MODDATP
- JP POKE
- ;................................
- ;
- ; Peek at 1 byte from Apple 6502 address space
- ; ENTRY: DE = Address in Apple
- ; EXIT: A = Data
- ;
- PEEK: PUSH BC
- LD C,PEEK1BYTE
- CALL WRBYTE
- CALL WRWORD
- CALL RDBYTE
- POP BC
- POP DE
- RET
- ;..............................
- ;
- ; Poke 1 byte to Apple 6502 address space
- ; ENTRY: DE = Address in Apple
- ; EXIT: A = Data
-
- POKE: PUSH BC
- LD B,A
- LD C,POKE1BYTE
- CALL WRBYTE
- CALL WRWORD
- LD C,B
- CALL WRBYTE
- POP BC
- POP DE
- RET
- ;................................
- ;
- END ;PCPISSPM.Z80