'============================================================================ ' PCIORX.BAS - PARALLEL FILE TRANSFER ' ' (c)Copyright Sealevel Systems Incorporated, 1993 - 1995 ' ' RECEIVES A FILE UP TO 65535 BYTES LONG ' BOARD BASE ADDRESS = 378 HEX ' CONSULT THE READ.ME FILE FOR A CABLE WIRING DIAGRAM '============================================================================ CLS DEFINT B, I PORTA = &H378 'DATA PORT = BASE ADDRESS PORTB = &H379 'STATUS PORT = BASE+1 PORTC = &H37A 'CONTROL PORT = BASE+2 OUT PORTC, &H20 'SET PORTA = INPUT MODE RXREADY = &H24 'PORTC BIT D2 = RX READY BIT RXBUSY = &H20 DATAVALID = &H40 'PORTB BIT D6 = DATA READY BIT '============================================================================ ' RECEIVE THE FILE SIZE '============================================================================ PRINT "Filename = RECEIVED.DAT" PRINT "Filesize (bytes) = " PRINT "Receiving byte # " GOSUB READBYTE 'GET MSB OF FILESIZE FSIZE = BYTE * 256 GOSUB READBYTE 'GET LSB OF FILESIZE FSIZE = FSIZE + BYTE LOCATE 2, 20: PRINT FSIZE DIM BUFFER(FSIZE) 'SET UP A BUFFER FOR X = 1 TO FSIZE 'READ THE FILE GOSUB READBYTE LOCATE 3, 18: PRINT X 'PRINT BYTE COUNT BUFFER(X) = BYTE NEXT X 'LOOP UNTIL DONE PRINT "Writing file to disk..." OPEN "RECEIVED.DAT" FOR BINARY AS #1 FOR X = 1 TO FSIZE PUT #1, X, BUFFER(X) NEXT X CLOSE #1 END READBYTE: '============================================================================ ' SET RECEIVER READY '============================================================================ OUT PORTC, RXREADY 'SET RX READY BIT HIGH '============================================================================ ' WAIT FOR DATA VALID '============================================================================ DO 'WAIT FOR DATA READY LOOP WHILE (INP(PORTB) AND DATAVALID) <> DATAVALID '============================================================================ ' DATA AVAILABLE - SET RECEIVER BUSY '============================================================================ OUT PORTC, RXBUSY 'SET RX READY BIT LOW '============================================================================ ' WAIT FOR DATA VALID TO GO LOW (WAITS FOR DATA STROBE TO FINISH) '============================================================================ DO LOOP WHILE (INP(PORTB) AND DATAVALID) = DATAVALID '============================================================================ ' READ DATA '============================================================================ BYTE = INP(PORTA) 'READ THE DATA PORT RETURN