Bitwise AND, OR, XOR and NOT for BASIC (USR Call)#



00010          .LI OFF
00020 *
00030 *****************************
00040 *                           *
00050 *Algebr. AND, OR, EOR u. NOT*
00060 *                           *
00070 *****************************
00080 *
00090 *
00100 WERT1    .EQ $CD
00110 WERT2    .EQ $CE
00120 COM      .EQ $CF
00130 *
00140 *
00150 *
00160 *
00170 *
00180 *
00190 *
00200 *
00210 START    LDA #0      Rueckgabe-
00220          STA $D4     register
00230          STA $D5     loeschen
00240 *
00250          PLA         Parameterzahl
00260 *
00270          PLA         Commando
00280          PLA         holen
00290          STA COM
00300 *
00310          PLA         Wert holen
00320          PLA
00330          STA WERT1
00340 *
00350          LDA COM     NOT
00360          CMP #'N     Funktion
00370          BEQ NOT     ja
00380 *
00390          PLA         2. Wert
00400          PLA         holen
00410          STA WERT2
00420 *
00430          LDA COM     EOR
00440          CMP #'E     Funktion
00450          BEQ EOR     ja
00460 *
00470          CMP #'O     OR Funtion
00480          BEQ OR      ja
00490 *
00500 AND      LDA WERT1   And Funtion
00510          AND WERT2
00520          CLC         unbedingter
00530          BCC STORE   Sprung
00540 ------------------------------
00550 OR       LDA WERT1   Or Funktion
00560          ORA WERT2
00570          CLC         Ohne
00580          BCC STORE   Bedingung
00590 ------------------------------
00600 EOR      LDA WERT1   Eor Funk-
00610          EOR WERT2   tion
00620          CLC
00630          BCC STORE   s.o.
00640 ------------------------------
00650 NOT      LDA WERT1   2er Kom-
00660          EOR #$FF    plement
00670          CLC         bilden
00680          ADC #1
00690 ------------------------------
00700 STORE    STA $D4     In Uebergabe
00710          RTS         Register