10 ;PIO47.M65 8/02/86 K1050V20 ;PIO46.M65 8/01/86 K1050U30 ;PIO44.M65 7/30/86 K1050T40 ;PIO43.M65 7/28/8650 ;PIO42.M65 7/28/8660 ;PIO41.M65 7/28/8670 ;PIO25.M65 7/16/8680 STATUS = $3090 CHKSUM = $310100 BUFRLO = $320110 BUFRHI = $330120 BFENLO = $340130 BFENHI = $350140 CDEVIC = $023A0150 CCOMND = $023B0160 CAUX1 = $023C0170 CAUX2 = $023D0180 DDEVIC = $03000190 DUNIT = $03010200 DCOMND = $03020210 DSTATS = $03030220 DBUFLO = $03040230 DBUFHI = $03050240 DBYTLO = $03080250 DBYTHI = $03090260 DAUX1 = $030A0270 DAUX2 = $030B0280 PORTA = $D7000290 PORTB = $D7010300 PACTL = $D7020310 PBCTL = $D7030320 ;End of system equates0330 ;0340 *= $FCE60350 NEWSIO LDA DDEVIC0360 CMP #$310370 BNE NOTPDEV0380 LDA #$010390 CMP DUNIT0400 BEQ PDEV0410 NOTPDEV JMP $C933 ;NORMAL SIO0420 ;0430 PDEV BIT PORTA ;CLR IRQA10440 BIT PORTB ;CLR IRQB10450 CLC 0460 LDA DDEVIC0470 ADC DUNIT0480 ADC #$FF0490 STA CDEVIC0500 LDA DCOMND0510 STA CCOMND0520 LDA DAUX10530 STA CAUX10540 LDA DAUX20550 STA CAUX20560 LDA #$3A0570 STA BUFRLO0580 LDA #$020590 STA BUFRHI0600 LDA #$040610 STA BFENLO0620 LDA #$000630 STA BFENHI0640 LDA #$340650 STA $D303 ;SET CMDOUT0660 JSR SENDAFRM0670 BCS CMPLT ;SET=ERROR0680 ACK LDA DBUFLO0690 STA BUFRLO0700 LDA DBUFHI0710 STA BUFRHI0720 LDA DBYTLO0730 STA BFENLO0740 LDA DBYTHI0750 STA BFENHI0760 BIT DSTATS0770 BPL READ0780 JSR SENDAFRM0790 BCS CMPLT ;* SET=ERROR0800 READ JSR GETCMDSTATUS0810 BCS CMPLT ;* SET=ERROR0820 BIT DSTATS0830 BVC CMPLT ;* CLR=IMMED.0840 JSR GETAFRM0850 CMPLT LDA STATUS0860 STA DSTATS0870 TAY 0880 RTS 0890 ;0900 ;******************************0910 SENDAFRM LDY #$000920 LDA (BUFRLO),Y0930 STA CHKSUM0940 BIT PORTB ;CLR IRQB10950 STA PORTB ;SEND DATA0960 LP3 BIT PBCTL ;RD PA?0970 BPL LP30980 INY 0990 LPSEND CPY BFENLO1000 BEQ DATASENT1010 LDA (BUFRLO),Y1020 BIT PORTB ;CLR IRQB11030 STA PORTB ;SEND DATA1040 LP4 BIT PBCTL ;RD PA?1050 BPL LP41060 EOR CHKSUM1070 STA CHKSUM1080 INY 1090 JMP LPSEND1100 DATASENT LDA CHKSUM1110 BIT PORTB ;CLR IRQB11120 STA PORTB ;SEND DATA1130 LP5 BIT PBCTL ;RD PA?1140 BPL LP51150 JMP GETCMDSTATUS1160 ;1170 ;******************************1180 GETAFRM LDA #$001190 STA CHKSUM1200 TAY 1210 LPRECV CPY BFENLO1220 BEQ DOCKSUM1230 LP6 BIT PACTL ;WRT PB?1240 BPL LP61250 LDA PORTA ;READ DATA1260 STA (BUFRLO),Y1270 EOR CHKSUM1280 STA CHKSUM1290 INY 1300 BNE LPRECV1310 DOCKSUM BIT PACTL ;WRT PB?1320 BPL DOCKSUM1330 LDA PORTA ;READ DATA1340 CMP CHKSUM1350 BNE CKSUMBAD1360 CLC 1370 RTS 1380 CKSUMBAD LDA #$8F1390 STA STATUS1400 SEC 1410 RTS 1420 ;1430 ;******************************1440 GETCMDSTATUS LDA #$3C1450 STA $D303 ;CLR CMDOUT1460 LP7 BIT PACTL ;WRT PB?1470 BPL LP71480 LDA PORTA ;READ DATA1490 CMP #$41 ;* ACK1500 BEQ AORCSTATUS1510 CMP #$43 ;* COMPLETE1520 BEQ AORCSTATUS1530 CMP #$45 ;* 144 ERROR1540 BEQ ERRORSTATUS1550 LDA #$8B ;* ANYTHING ELSE1560 .BYTE $2C ;* IS ERROR 1391570 ERRORSTATUS LDA #$901580 SIOERROR STA STATUS1590 SEC 1600 RTS 1610 AORCSTATUS CLC 1620 LDA #$01 ;CLR STATUS1630 STA STATUS1640 RTS 1650 ;1660 ;*******************************1670 ;THIS CODE REPLACES THE NORMAL1680 ;D: DEVICE INIT VECTOR AT $E4501690 DOINIT LDA #$A0 ;* NORMAL INIT1700 STA $02461710 LDA #$801720 STA $02D51730 LDA #$001740 STA $02D61750 LDA PACTL ;CHK FOR INIT1760 AND #$3F1770 BNE NOINIT1780 LDA #$001790 STA PACTL ;* ENABLE DIR1800 STA PBCTL1810 STA PORTA ;* A IS INPUT1820 LDA #$FF1830 STA PORTB ;B IS OUTPUT1840 LDA #$24 ;RESTORE CTL1850 STA PACTL1860 LDA #$2C1870 STA PBCTL1880 NOINIT RTS 1890 *= $E4501900 JMP DOINIT1910 *= $E4591920 JMP NEWSIO1930 *= $E440 ;DISABLE C HNDLR1940 .BYTE $E4,$FC,$E4,$FC1950 .BYTE $E4,$FC,$E4,$FC1960 .BYTE $E4,$FC,$E4,$FC1970 ;1980 .END