ATN-bearbeiten ($e85b; bei der 1571: $80ce) Vorbereitung ABCF: 78 SEI ABD0: A5 9D LDA $9D Cache-Verzoegerungszaehler initialisieren ABD2: 85 9C STA $9C ABD4: A5 76 LDA $76 LISTEN & TALK loeschen ABD6: 29 3E AND #$3E b0: Flag 'ATN aufgetreten' loeschen ABD8: 85 76 STA $76 ABDA: A6 4F LDX $4F Stack initialisieren ABDC: 9A TXS ABDD: 20 BB AC JSR $ACBB FSM-Bus auf Eingabe stellen ABE0: A9 80 LDA #$80 EOI-Flag loeschen ABE2: 85 51 STA $51 Bus im ATN-Modus bedienen ABE4: A5 76 LDA $76 b1=1: ATN-Modus aktivieren ABE6: 09 02 ORA #$02 ABE8: 85 76 STA $76 ABEA: 20 03 AD JSR $AD03 CLOCK OUT auf Lo ABED: 20 F1 AC JSR $ACF1 DATA OUT auf Hi ABF0: AD 01 40 LDA $4001 automatische ATN-Beantwortung ausschalten, ABF3: 29 EF AND #$EF damit die Software den Bus im ATN-Modus ABF5: 8D 01 40 STA $4001 bedienen kann - Kommando-Byte vom Computer einlesen Einsprung von $ABFF: ABF8: AD 01 40 LDA $4001 liegt kein ATN mehr an ? ABFB: 10 5D BPL $AC5A ja, ==> ABFD: 29 04 AND #$04 Warten bis CLOCK IN = Lo wird ABFF: D0 F7 BNE $ABF8 (zeigt an, dass Daten kommen) Einsprung von $AC58: AC01: 20 42 AE JSR $AE42 Byte vom seriellen Bus holen - UNLISTEN AC04: C9 3F CMP #$3F UNLISTEN AC06: D0 09 BNE $AC11 nein, ==> AC08: A5 76 LDA $76 Busbetrieb auf AC0A: 29 9F AND #$9F b5: seriell, langsam AC0C: 85 76 STA $76 b6: kein LISTEN AC0E: 4C 1B AC JMP $AC1B ATN Ende abwarten - UNTALK Einsprung von $AC06: AC11: C9 5F CMP #$5F UNTALK ? AC13: D0 09 BNE $AC1E nein, ==> AC15: A5 76 LDA $76 Busbetrieb auf AC17: 29 5F AND #$5F b5: seriell,langsam AC19: 85 76 STA $76 b7: kein TALK Einsprung von $AC0E: AC1B: 4C 96 AC JMP $AC96 ATN Ende abwarten - TALK Einsprung von $AC13: AC1E: C5 78 CMP $78 TALK ? AC20: D0 0A BNE $AC2C nein, ==> AC22: A5 76 LDA $76 ja, AC24: 09 80 ORA #$80 b7: Flag fuer TALK setzen AC26: 29 BF AND #$BF b6: Flag fuer LISTEN loeschen AC28: 85 76 STA $76 AC2A: D0 29 BNE $AC55 ==> - LISTEN Einsprung von $AC20: AC2C: C5 77 CMP $77 LISTEN ? AC2E: D0 0A BNE $AC3A nein, ==> AC30: A5 76 LDA $76 ja, AC32: 09 40 ORA #$40 b6: Flag fuer LISTEN setzen AC34: 29 7F AND #$7F b7: Flag fuer TALK loeschen AC36: 85 76 STA $76 AC38: D0 1B BNE $AC55 - Sekundaeradresse einlesen Einsprung von $AC2E: AC3A: AA TAX AC3B: 29 60 AND #$60 Sekundaeradresse (b65=11) ? AC3D: C9 60 CMP #$60 AC3F: D0 50 BNE $AC91 nein, (anderes Geraet war gemeint) ==> AC41: 8A TXA Sekundaeradresse vom Computer AC42: 85 53 STA $53 mit Kommandobits merken AC44: 29 0F AND #$0F AC46: 85 52 STA $52 SA pur merken - CLOSE AC48: A5 53 LDA $53 Kommando vom Computer AC4A: 29 F0 AND #$F0 AC4C: C9 E0 CMP #$E0 = 'schliessen' ? AC4E: D0 46 BNE $AC96 nein, (Datenmodus aktivieren) ==> AC50: 58 CLI AC51: 20 5C 99 JSR $995C aktuellen Kanal schliessen AC54: 78 SEI Einsprung von $AC2A, $AC38: AC55: 2C 01 40 BIT $4001 ATN testen AC58: 30 A7 BMI $AC01 gesetzt, ==> Bus im Datenmodus bedienen Einsprung von $ABFB, $AC99, $AD2C: AC5A: A5 76 LDA $76 b1=0: ATN-Modus loeschen AC5C: 29 FD AND #$FD Datenmodus aktivieren AC5E: 85 76 STA $76 AC60: AD 01 40 LDA $4001 Automatische ATN-Beantwortung einschalten AC63: 09 10 ORA #$10 AC65: 8D 01 40 STA $4001 - LISTEN bearbeiten AC68: 24 76 BIT $76 LISTEN ? AC6A: 50 0F BVC $AC7B nein ==> AC6C: A9 20 LDA #$20 FSM-Betrieb ? AC6E: 24 76 BIT $76 AC70: F0 03 BEQ $AC75 nein, ==> AC72: 20 9D AC JSR $AC9D ja, schnellen Bus-Modus anfordern Einsprung von $AC70: AC75: 20 36 FF JSR $FF36 LISTEN behandeln AC78: 4C E4 AE JMP $AEE4 FSM abschliessen, Ende - TALK bearbeiten Einsprung von $AC6A: AC7B: 24 76 BIT $76 TALK ? AC7D: 10 0F BPL $AC8E nein, ==> AC7F: 20 E8 AC JSR $ACE8 DATA OUT auf Lo AC82: 20 FA AC JSR $ACFA CLOCK OUT auf Hi AC85: 20 2F AD JSR $AD2F kurze Zeit warten AC88: 20 33 FF JSR $FF33 TALK behandeln AC8B: 20 2F AD JSR $AD2F kurze Zeit warten Einsprung von $AC7D: AC8E: 4C DF AE JMP $AEDF FSM auf Eingabe schalten, Ende - ATN-Modus abwarten, wenn z.B. ein anderes Geraet angesprochen wird Einsprung von $AC3F: AC91: A9 00 LDA #$00 Alle Ausgaenge Lo (Laufwerk passiv halten) AC93: 8D 01 40 STA $4001 Einsprung von $AC1B, $AC4E, $AC9B: AC96: 2C 01 40 BIT $4001 Ist ATN noch gesetzt ? AC99: 10 BF BPL $AC5A nein, ==> AC9B: 30 F9 BMI $AC96 Warten bis ATN geloescht ist Previous Page / Next Page |