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
/
PMNETWRK
/
PCPIPM11.ZZ0
/
PCPIPM11.Z80
Wrap
Text File
|
2000-06-30
|
7KB
|
253 lines
; 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