10 ;PIO47.M65  8/02/86  K1050V20 ;PIO46.M65  8/01/86  K1050U30 ;PIO44.M65  7/30/86  K1050T40 ;PIO43.M65  7/28/8650 ;PIO42.M65  7/28/8660 ;PIO41.M65  7/28/8670 ;PIO25.M65  7/16/8680 STATUS =  $3090 CHKSUM =  $310100 BUFRLO = $320110 BUFRHI = $330120 BFENLO = $340130 BFENHI = $350140 CDEVIC = $023A0150 CCOMND = $023B0160 CAUX1 = $023C0170 CAUX2 = $023D0180 DDEVIC = $03000190 DUNIT = $03010200 DCOMND = $03020210 DSTATS = $03030220 DBUFLO = $03040230 DBUFHI = $03050240 DBYTLO = $03080250 DBYTHI = $03090260 DAUX1 = $030A0270 DAUX2 = $030B0280 PORTA = $D7000290 PORTB = $D7010300 PACTL = $D7020310 PBCTL = $D7030320 ;End of system equates0330 ;0340     *=  $FCE60350 NEWSIO LDA DDEVIC0360     CMP #$310370     BNE NOTPDEV0380     LDA #$010390     CMP DUNIT0400     BEQ PDEV0410 NOTPDEV JMP $C933 ;NORMAL SIO0420 ;0430 PDEV BIT PORTA  ;CLR IRQA10440     BIT PORTB   ;CLR IRQB10450     CLC 0460     LDA DDEVIC0470     ADC DUNIT0480     ADC #$FF0490     STA CDEVIC0500     LDA DCOMND0510     STA CCOMND0520     LDA DAUX10530     STA CAUX10540     LDA DAUX20550     STA CAUX20560     LDA #$3A0570     STA BUFRLO0580     LDA #$020590     STA BUFRHI0600     LDA #$040610     STA BFENLO0620     LDA #$000630     STA BFENHI0640     LDA #$340650     STA $D303   ;SET CMDOUT0660     JSR SENDAFRM0670     BCS CMPLT   ;SET=ERROR0680 ACK LDA DBUFLO0690     STA BUFRLO0700     LDA DBUFHI0710     STA BUFRHI0720     LDA DBYTLO0730     STA BFENLO0740     LDA DBYTHI0750     STA BFENHI0760     BIT DSTATS0770     BPL READ0780     JSR SENDAFRM0790     BCS CMPLT   ;* SET=ERROR0800 READ JSR GETCMDSTATUS0810     BCS CMPLT   ;* SET=ERROR0820     BIT DSTATS0830     BVC CMPLT   ;* CLR=IMMED.0840     JSR GETAFRM0850 CMPLT LDA STATUS0860     STA DSTATS0870     TAY 0880     RTS 0890 ;0900 ;******************************0910 SENDAFRM LDY #$000920     LDA (BUFRLO),Y0930     STA CHKSUM0940     BIT PORTB   ;CLR IRQB10950     STA PORTB   ;SEND DATA0960 LP3 BIT PBCTL   ;RD PA?0970     BPL LP30980     INY 0990 LPSEND CPY BFENLO1000     BEQ DATASENT1010     LDA (BUFRLO),Y1020     BIT PORTB   ;CLR IRQB11030     STA PORTB   ;SEND DATA1040 LP4 BIT PBCTL   ;RD PA?1050     BPL LP41060     EOR CHKSUM1070     STA CHKSUM1080     INY 1090     JMP LPSEND1100 DATASENT LDA CHKSUM1110     BIT PORTB   ;CLR IRQB11120     STA PORTB   ;SEND DATA1130 LP5 BIT PBCTL   ;RD PA?1140     BPL LP51150     JMP GETCMDSTATUS1160 ;1170 ;******************************1180 GETAFRM LDA #$001190     STA CHKSUM1200     TAY 1210 LPRECV CPY BFENLO1220     BEQ DOCKSUM1230 LP6 BIT PACTL   ;WRT PB?1240     BPL LP61250     LDA PORTA   ;READ DATA1260     STA (BUFRLO),Y1270     EOR CHKSUM1280     STA CHKSUM1290     INY 1300     BNE LPRECV1310 DOCKSUM BIT PACTL ;WRT PB?1320     BPL DOCKSUM1330     LDA PORTA   ;READ DATA1340     CMP CHKSUM1350     BNE CKSUMBAD1360     CLC 1370     RTS 1380 CKSUMBAD LDA #$8F1390     STA STATUS1400     SEC 1410     RTS 1420 ;1430 ;******************************1440 GETCMDSTATUS LDA #$3C1450     STA $D303   ;CLR CMDOUT1460 LP7 BIT PACTL   ;WRT PB?1470     BPL LP71480     LDA PORTA   ;READ DATA1490     CMP #$41    ;* ACK1500     BEQ AORCSTATUS1510     CMP #$43    ;* COMPLETE1520     BEQ AORCSTATUS1530     CMP #$45    ;* 144 ERROR1540     BEQ ERRORSTATUS1550     LDA #$8B    ;* ANYTHING ELSE1560     .BYTE $2C   ;* IS ERROR 1391570 ERRORSTATUS LDA #$901580 SIOERROR STA STATUS1590     SEC 1600     RTS 1610 AORCSTATUS CLC 1620     LDA #$01    ;CLR STATUS1630     STA STATUS1640     RTS 1650 ;1660 ;*******************************1670 ;THIS CODE REPLACES THE NORMAL1680 ;D: DEVICE INIT VECTOR AT $E4501690 DOINIT LDA #$A0 ;* NORMAL INIT1700     STA $02461710     LDA #$801720     STA $02D51730     LDA #$001740     STA $02D61750     LDA PACTL   ;CHK FOR INIT1760     AND #$3F1770     BNE NOINIT1780     LDA #$001790     STA PACTL   ;* ENABLE DIR1800     STA PBCTL1810     STA PORTA   ;* A IS INPUT1820     LDA #$FF1830     STA PORTB   ;B IS OUTPUT1840     LDA #$24    ;RESTORE CTL1850     STA PACTL1860     LDA #$2C1870     STA PBCTL1880 NOINIT RTS 1890     *=  $E4501900     JMP DOINIT1910     *=  $E4591920     JMP NEWSIO1930     *=  $E440   ;DISABLE C HNDLR1940     .BYTE $E4,$FC,$E4,$FC1950     .BYTE $E4,$FC,$E4,$FC1960     .BYTE $E4,$FC,$E4,$FC1970 ;1980     .END 