Verschiedenes
Suche
Index
FAQ
Kontakt
Zurück

10. Verschiedenes
        Dieses Kapitel beschreibt einige Programme, die sich nicht eindeutig einem der
        uebrigen Kapitel zuordnen lassen. Es sind dies : Abfrage der STOP-Taste, Sprung zum
        READY-Mode, RESET des Computers, Blockverschiebung, setzen des Standard-Interruptvektors.

        Die verwendeten ROM-Routinen und Speicherplaetze sind :

        Name      2001       3001      8001         Beschreibung
        -------------------------------------------------------------------
        BSOUT     $FFD2      $FFD2     $FFD2        Zeichen zum Schirm
        GRAPHIC    ----       ----     $E01B        Graphic-mode einschalten
        MOVBLK    $C2E1      $C2DF     $B357        Speicherblock verschieben
        PCR       $E84C      $E84C     $E84C        Peripheral Control Register
        PIEP       ----       ----     $E02A        Piepton erzeugen
        READY     $C38B      $C389     $B3FF        Rueckkehr in den READY-mode
        RESET     $FD38      $FCD1     $FD16        RESET-Routine durchlaufen
        SETVEC    $FD1B      $FC9B     $FCE0        Interrupt-Vektor setzen
        STOPEQ    $F32A      $F301     $F335        Z-Flag gesetzt bei STOP-Taste
        STOPR     $FFE1      $FFE1     $FFE1        READY-mode bei STOP-Taste
        STRMOD    $E349      $E33F     $E16A        setzt String-mode-Flag
        TEXT       ----       ----     $E018        Text-mode einschalten

        CINV      $0219      $90-91    $90-91       Interrupt-Vektor
        MOVPT1    $A7-A8     $55-56    $55-56       Blockzeiger #1
        MOVPT2    $A9-AA     $57-58    $57-58       Blockzeiger #2
        MOVPT3    $AE-AF     $5C-5D    $5C-5D       Blockzeiger #3
        NMINV      -----     $94-95    $94-95       Vektor fuer NMI
        STRFLG    $EA        $CD       $CD          String-mode Flag


10.1 READY-Mode
        Rueckkehr in den "Ready-mode" (beim 3001/8001 durch standardmaessigen NMI-Vektor
        in NMINV):

        JMP READY

10.2 STOP-Taste
         Es empfiehlt sich, in Assembler-Programme Abfragen auf die STOP-Taste einzubauen,
         da diese Abfrage waehrend der Ausfuehrung eines Maschinenprogramms standardmaessig
         nicht durchgefuehrt wird.

         a) Diese Routine testet die STOP-Taste. Ist sie gedrueckt, erfolgt ein Ruecksprung
            in den READY-mode.

                  JSR STOPR

         b) Von der folgenden Routine wird das Ergebnis des Tests im Status-Register geliefert:
            Z-Flag gesetzt: gedrueckt, Z-Flag geloescht: nicht gedrueckt.

                  JSR STOPEQ
                  BEQ STOP

10.3 Reset
        Aufruf der Routine, die bei jedem Einschaltvorgang durchlaufen wird (Speichertest,
        Ausdruck: "COMMODORE BASIC..."):

        JMP RESET


10.4 String-mode
        Diese Routine setzt das String-Mode-Flag STRFLG. Das laufende Zeichen wird im
        A-Register uebergeben. Das Flag wird fuer jeden Stringbegrenzer CHR$(34)
        "umgeschaltet":

                  LDA CHR
                  JSR STRMOD

10.5 Graphik /Text (Umschaltung Zeichengenerator)
        Diese Umschaltung (von BASIC her bekannt durch: POKE 59468,12 bzw. 14) wird
        hier analog durchgefuehrt:

	          LDA #$0C    ;Graphik
                  STA PCR

	          LDA #$8E    ;Text
                  STA PCR

10.6 Graphik/Text (Umschaltung Bildschirmcontroller)
        Zusaetzlich zur Umschaltung des Zeichengenerators (s.Kap. 18.5) bietet der
        8001-Computer noch eine Umschaltmoeglichkeit zwischen zwei Bildschirmformaten.
        Im Graphik-mode werden die Text-Zeilen (wie beim 2001/3001-Computer) nahtlos
        aneinander gesetzt. Im Text-mode werden zwischen je zwei Text-Zeilen zur
        besseren Lesbarkeit zwei Strahl-Zeilen eingeschoben. Die jeweilige Umschaltung
        beinhaltet gleichzeitig die Umschaltung des Zeichengenerators.
        Durch entsprechende Kombination der beiden Umschalt-Moeglichkeiten koennen aber
        alle vier moeglichen Darstellungen erreicht werden.

                  JSR GRAPHIC ;Graphik

                  JSR TEXT    ;Text

10.7 Verschieben eines Speicherblocks
        Die Pointer MOVPT1, MOVPT2 und MOVPT3 muessen gesetzt werden.

        MOVPT1 = Endadresse+1 des Zielbereiches         ($55/56)
        MOVPT2 = Endadresse+1 des Ausgangsbereiches     ($57/58)
        MOVPT3 = Anfangsadresse des Ausgangsbereiches   ($5C/5D)

                  JSR MOVBLK


10.8 Standard lnterrupt-Vektor setzen
        Der "normale" Interrupt-Vektor in CINV kann mit folgender Routine gesetzt
        werden:

                  LDX #12
                  JSR SETVEC


10.9 Pieptonerzeugung
        Ansprechen des beim 8001-Computer eingebauten Piepers ist auf zwei Arten
        moeglich:

        a) durch Ausgabe des Kontrollcodes "rvs g":

                  LDA #7        ;CONTROL-CODE g
                  JSR BSOIJT    ; AUSGEBEN

        b) direkter Ansprung der Piep-Routine:

                  JSR PIEP      ;PIEPTON ERZEUGEN

        Durch Einbau eines Lautsprechers (ueber Verstaerker an USER-PORT Pin M (CB2))
        kann auch beim 2001 und 3001-Computer eine Tonerzeugung erfolgen. Wird dabei
        eine Tonfolge wie die beim 8001-Computer gewuenscht (Folge von sieben Toenen),
        so kann dies mit der folgenden Routine geschehen:

         PIEP  LDY #xx       ;PIEPDAUER
               BEQ RETURN
               LDA #$10            ;SHIFT-REGISTER AUF
               STA $E84B           ; FREE RUNNING SETZEN
               LDA #$0F            ;SERIELLES AUSGABEBYTE
               STA $E84A           ; IN SHIFT-REGISTER
               LDX #$07            ;ANZAHL DER TOENE
         LOOP2 LDA TAB,X           ;TONTABELLE
               STA $E848           ;VIA-TIMER SETZEN
	       LDA #xx             ;PIEPDAUER
         LOOP1 DEV
               BNE LOOP1
               SEC
               SBC #$01            ; A-REGISTER DEKREMENTIEREN
               BNE LOOP1
               DEX
               BNE LOOP2
               STX $E84A           ;SHIFTĂ„REGISTER 6
               STX$E848            ;FREE-RUNNING-MODE ABSCHALTEN
        RETURN RTS

               TAB .BY $0E $1E $3E $7E $3E $1E $0E

 

Letzte Änderung: 2019-01-04 10:06:41
  Rubrik:  CBM PET
Rubriken-Übersicht
 9 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!