'============================================================================ ' PCIOTX.BAS - PARALLEL FILE TRANSFER ' ' (c)Copyright Sealevel Systems Incorporated, 1993 - 1995 ' ' TRANSMITS A FILE UP TO 65535 BYTES LONG ' BOARD BASE ADDRESS = 378 HEX ' CONSULT THE READ.ME FILE FOR A CABLE WIRING DIAGRAM '============================================================================ DEFINT B PORTA = &H378 'DATA PORT = BASE ADDRESS PORTB = &H379 'STATUS PORT = BASE+1 PORTC = &H37A 'CONTROL PORT = BASE+2 NODATA = 0 'PORTC BIT D2 = DATA READY BIT DATAREADY = 4 RXREADY = &H40 'PORTB BIT D6 = RX READY BIT OPEN "PCIOTX.BAS" FOR BINARY AS #1 'FILE TO TRANSMIT '============================================================================ ' READ IN THE ENTIRE FILE '============================================================================ CLS PRINT "Reading the file..." FSIZE = LOF(1) 'GET THE FILESIZE DIM BUFFER(FSIZE) FOR X = 1 TO FSIZE 'READ IN THE FILE GET #1, X, BUFFER(X) NEXT X 'LOOP UNTIL DONE '============================================================================ ' SEND THE FILESIZE '============================================================================ PRINT "Transmitting file PCIOTX.BAS" PRINT "Filesize (bytes) = "; FSIZE PRINT "Sending byte # " BYTE = FSIZE \ 256 GOSUB SENDBYTE 'SEND MSB OF FILESIZE BYTE = FSIZE AND 255 GOSUB SENDBYTE 'SEND LSB OF FILESIZE FOR X = 1 TO FSIZE 'TRANSMIT THE FILE BYTE = BUFFER(X) GOSUB SENDBYTE 'SEND A BYTE LOCATE 4, 16: PRINT X 'PRINT BYTE COUNT NEXT X 'LOOP UNTIL DONE END '============================================================================ ' EXIT THE PROGRAM '============================================================================ XIT: OUT PORTC, NODATA 'LOWER DATA READY BIT CLOSE #1 END '============================================================================ ' SENDBYTE SUBROUTINE - WAITS FOR RECEIVER READY BEFORE STROBING OUT DATA '============================================================================ SENDBYTE: OUT PORTC, NODATA 'LOWER DATA READY BIT '============================================================================ ' WAIT FOR RECEIVER READY '============================================================================ FOR TIMEOUT = 1 TO 50000 IF (INP(PORTB) AND RXREADY) = RXREADY THEN GOTO ACK NEXT TIMEOUT PRINT COLOR 0, 7 PRINT "TIMEOUT WAITING FOR RECEIVER - TRANSFER ABORTED" COLOR 7, 0 GOTO XIT '============================================================================ ' RECEIVER READY - SEND DATA '============================================================================ ACK: OUT PORTA, BYTE 'SET DATA TO PORT A D0 - D7 OUT PORTC, DATAREADY 'RAISE DATA READY BIT FOR DLY = 1 TO 100: NEXT DLY 'DELAY TO CREATE A STROBE OUT PORTC, NODATA 'LOWER DATA READY BIT RETURN