Plot and Draw Routines

Plot and Draw Routines#

from BiboAssembler Toolsdisk 1

Fast 2 color (Graphics 8) plot#


00010 PLOT     LDY OLDY      Zeilen-
00020          LDA TABLO,Y   addresse
00030          STA PNT       als
00040          LDA TABHI,Y   Pointer
00050          STA PNT+1     setzen
00060          LDA OLDX
00070          PHA           X MOD 8
00080          AND #7        nach <X>
00090          TAX
00100          LDA COLOR     Farbe
00110          AND #1        MOD 2
00120          TAY           nach <Y>
00130          LDA COLFILL,Y Farbyte holen
00140          AND EMASK,X   unnoetige Bits
00150          STA HOLD      ausmaskieren
00160          PLA           X/8=
00170          LSR           Byteoffset
00180          LSR
00190          LSR
00200          TAY           in Zeile <Y>
00210          LDA (PNT),Y   Graphicbyte Holen
00220          AND CMASK,X   alten Wert ausmaskieren
00230          ORA HOLD      und durch neuen ersetzen
00240          STA (PNT),Y   speichern
00250          RTS
00260 ;
00270 ------------------------------
00280 *                            *
00290 * Farbwerte und Loeschmasken *
00300 *                            *
00310 ------------------------------
00320 COLFILL  .HX 00FF
00330 EMASK    .HX 8040201008040201
00340 CMASK    .HX 7FBFDFEFF7FBFDFE

Fast 4 Color Plot (Graphics 15)#


00010 PLOT     LDY OLDY      Zeilen-
00020          LDA TABLO,Y   addresse
00030          STA PNT       als
00040          LDA TABHI,Y   Pointer
00050          STA PNT+1     setzen
00060          LDA OLDX
00070          PHA           X MOD 4
00080          AND #3        nach <X>
00090          TAX
00100          LDA COLOR     Farbe
00110          AND #3        MOD 4
00120          TAY           nach <Y>
00130          LDA COLFILL,Y Farbyte holen
00140          AND EMASK,X   unnoetige Bits
00150          STA HOLD      ausmaskieren
00160          PLA           X/4=
00170          LSR           Byteoffset
00180          LSR
00190          TAY           in Zeile <Y>
00200          LDA (PNT),Y   Graphicbyte Holen
00210          AND CMASK,X   alten Wert ausmaskieren
00220          ORA HOLD      und durch neuen ersetzen
00230          STA (PNT),Y   speichern
00240          RTS
00250 ;
00260 ------------------------------
00270 *                            *
00280 * Farbwerte und Loeschmasken *
00290 *                            *
00300 ------------------------------
00310 COLFILL  .HX 0055AAFF
00320 EMASK    .HX C0300C03
00330 CMASK    .HX 3FCFF3FC

Fast Plot for 16 color modes (Graphics 9)#


00010 PLOT     LDY OLDY      Zeilen-
00020          LDA TABLO,Y   addresse
00030          STA PNT       als
00040          LDA TABHI,Y   Pointer
00050          STA PNT+1     setzen
00060          LDA OLDX
00070          PHA           X MOD 2
00080          AND #1        nach <X>
00090          TAX
00100          LDA COLOR     Farbe
00110          AND #$F       MOD 16
00120          TAY           nach <Y>
00130          LDA COLFILL,Y Farbyte holen
00140          AND EMASK,X   unnoetige Bits
00150          STA HOLD      ausmaskieren
00160          PLA           X/2=
00170          LSR           Byteoffset
00180          TAY           in Zeile <Y>
00190          LDA (PNT),Y   Graphicbyte Holen
00200          AND CMASK,X   alten Wert ausmaskieren
00210          ORA HOLD      und durch neuen ersetzen
00220          STA (PNT),Y   speichern
00230          RTS
00240 ;
00250 ------------------------------
00260 *                            *
00270 * Farbwerte und Loeschmasken *
00280 *                            *
00290 ------------------------------
00300 COLFILL  .HX 00112233445566778899AABBCCDDEEFF
00310 EMASK    .HX F00F
00320 CMASK    .HX 0FF0

Fast Draw Routines#


00010          .LI OFF
00020 ;
00030 OLDX     .EQ $D5
00040 OLDY     .EQ $D4
00050 TOX      .EQ $DB
00060 TOY      .EQ $DA
00070 ADX      .EQ $E0
00080 ADX2     .EQ $E1
00090 ADY      .EQ $E2
00100 ADY2     .EQ $E3
00110 DX       .EQ $E4
00120 DY       .EQ $E5
00130 SL       .EQ $E6
00140 COUNT    .EQ $E8
00150 COLOR    .EQ $E9
00160 HOLD     .EQ $EA
00170 *
00180 PNT      .EQ $D0
00190 ;
00200 SETTABLE LDA $58       Tabelle
00210          STA $00       der
00220          LDA $59       Anfangs-
00230          STA $01       addresse
00240          LDY #0        der
00250 SET      LDA $0        Bild-
00260          STA TABLO,Y   schirm-
00270          LDA $1        zeilen
00280          STA TABHI,Y   erzeugen
00290          CLC           (192 Zeilen)
00300          LDA $0
00310          ADC #40       UNBEDINGT
00320          STA $0        NACH DEM
00330          BCC SS1       GRAPHICAUFRUF
00340          INC $1        UND VOR DER
00350 SS1      INY           BENUTZUNG
00360          CPY #192      DER GRAPHICROUTINEN
00370          BNE SET       AUFRUFEN.
00380          RTS
00390 ;
00400 ;
00410 DRAWLINE LDX #0        Richtungen
00420          STX ADX2      vorbezetzen
00430          STX ADY
00440          STX SL+1
00450          INX
00460          STX COUNT
00470          STX ADY2
00480          STX ADX
00490 ;
00500          LDA TOX       Punktabstand
00510          SEC           berechnen
00520          SBC OLDX
00530          BCS DSKIP1
00540          DEC ADX       gegebenenfalls
00550          DEC ADX       Richtung
00560          LDA OLDX      aendern
00570          SEC
00580          SBC TOX
00590 DSKIP1   STA DX        Delta X
00600 *
00610          LDA TOY       Das gleiche
00620          SEC           fuer die
00630          SBC OLDY      Y-Koor-
00640          BCS DSKIP2    dinate
00650          DEC ADY2
00660          DEC ADY2
00670          LDA OLDY
00680          SEC
00690          SBC TOY
00700 DSKIP2   STA DY
00710          LDA DX        Ist
00720          CMP DY        dy>dx,
00730          BCS DSKIP3
00740          LDX DX        dann
00750          LDA DY        dx und dy
00760          STA DX        vertauschen
00770          STA DX
00780          TXA
00790          STA DY
00800          LDA ADX       auch Richtungen
00810          STA ADX2      fuer X und Y
00820          LDA ADY2      Koordinaten
00830          STA ADY       vertauschen
00840          LDA #0
00850          STA ADX
00860          STA ADY2
00870 DSKIP3   LDA DX        DX/2
00880          LSR           fuer Fehler-
00890          STA SL        groesse setzen
00900          LDA DX        mehr als
00910          BEQ RETURN    1 Punkt setzen?
00920          JSR PLOT      Punkt setzen
00930 ;
00940 MAIN     LDA OLDX      Richtungen
00950          CLC           zu Koor-
00960          ADC ADX       dinaten
00970          STA OLDX      rechnen
00980          LDA OLDY
00990          CLC
01000          ADC ADY
01010          STA OLDY
01020          INC COUNT
01030 *
01040          LDA SL        Fehler-
01050          CLC           groesse
01060          ADC DY        SL+DY
01070          STA SL
01080          BCC .1
01090          INC SL+1
01100 *
01110 .1       LDA SL+1      SL>DX?
01120 *
01130          BNE SUB
01140          LDA DX
01150          CMP SL
01160          BCS DPLOT
01170 *
01180 SUB      LDA SL        SL=SL-DX
01190          SEC
01200          SBC DX
01210          STA SL
01220          BCS .1
01230          DEC SL+1
01240 *
01250 .1       LDA OLDX      Schritt in
01260          CLC           2. Richtung
01270          ADC ADX2      machen
01280          STA OLDX
01290          LDA OLDY
01300          CLC
01310          ADC ADY2
01320          STA OLDY
01330 *
01340 DPLOT    LDA DX        Letzter Punkt
01350          CMP COUNT     erreicht
01360          BCC RETURN    Ja!
01370          JSR PLOT      Sonst Punkt setzen
01380          JMP MAIN      Wiederholen
01390 ;
01400 RETURN   LDA TOY       OLD-Koor.
01410          STA OLDY      =TO-Koor.
01420          LDA TOX
01430          STA OLDX
01440          JMP PLOT      Punkt setzen.
01450 *
01460 OPENS    STA $2B       Graphicstufe setzen
01470          LDA #0        Ohne Textfenster
01480          STA $2A
01490          LDA #$70      Source Code
01500          STA $6A       sichern
01510          JSR OPEN      OS-OPEN
01520          JMP SETTABLE  Tabelle setzen
01530 *
01540 OPEN     LDA $E411     ROM-Jump
01550          PHA           ueber
01560          LDA $E410     Stack
01570          PHA
01580          RTS
01590 ------------------------------
01600 TABLO    .BL 192       Platz fuer
01610 TABHI    .BL 192       Tabellen

Graphics 9 Draw Demo#


00010          .LI OFF
00020          .OR $4000
00030 *
00040 *
00050 *
00060 *
00070 *
00080 *
00090 START    LDA #$90      Source Code
00100          STA $6A       sichern
00110 *
00120          LDA #$0       Graphic 9
00130          STA $2A       aufrufen
00140          LDA #$9
00150          STA $2B
00160          JSR OPEN
00170 *
00180          LDA #79       Werte und
00190          STA X         Cursor
00200          STA $56       vorbereiten
00210          STA $56
00220          STA $5C
00230 *
00240 LOOP     LDA X         Punkt
00250          STA $55       (X,0) in
00260          AND #$F       Farbe
00270          STA COL       X MOD 16
00280          LDA #0        setzen
00290          STA $54
00300          LDX #6
00310          JSR PLOT
00320          DEC $55
00330          LDA #79       Verbindungs-
00340          SEC           linie nach
00350          SBC X         (79-x,191)
00360          STA $5B       ziehen
00370          LDA #191
00380          STA $5A
00390          LDX #$A
00400          JSR DRAW
00410          DEC X         X=X+1
00420          LDA X         Bis X negativ
00430          BPL LOOP
00440 ------------------------------
00450 WAIT     JMP WAIT      endlos
00460 ------------------------------
00470 X        .HX 00
00480 Y        .HX 00
00490 COL      .HX 00
00500 ------------------------------
00510 ------------------------------
00520 OPEN     LDA $E411     Screen
00530          PHA           OPEN
00540          LDA $E410     ueber
00550          PHA           Stack
00560          RTS
00570 ------------------------------
00580 DRAW     LDA #17       Drawkommando
00590          STA $22       setzen
00600 PLOT     LDA $E411,X   Screen PUT
00610          PHA           ueber
00620          LDA $E410,X   Stack
00630          PHA           Jump
00640          LDA COL
00650          RTS

Graphics 9 Demo 2#



00010          .LI OFF
00020          .OR $4000
00030 *
00040 S        LDA #$90      HiMem
00050          STA $6A       runtersetzen
00060 *
00070          LDA #$0       Graphic 9
00080          STA $2A       aufrufen
00090          LDA #$9
00100          STA $2B
00110          JSR OPEN
00120 *
00130          LDA #0        Cursor-
00140          STA X         sitionen
00150          STA $56       setzen
00160          STA $5C
00170 *
00180 LOOP     LDA X         Von-Ko-
00190          STA $55       ordinate
00200          EOR #$F       und Farbe
00210          STA COL       setzen
00220          LDA #0
00230          STA $54
00240 *
00250          LDX #6        Punkt
00260          JSR PLOT      setzen
00270 *
00280          DEC $55
00290 *
00300          LDA #79       Linie
00310          STA $5B       nach
00320          LDA #191      79,191
00330          STA $5A       ziehen
00340          LDX #$A
00350          JSR DRAW
00360 *
00370          LDA #0        Punkt
00380          STA $54       0,0
00390          STA $55       setzen
00400          LDX #6
00410          JSR PLOT
00420          DEC $55
00430 *
00440          LDA #79       und mit
00450          SEC           Punkt
00460          SBC X         79-X,191
00470          STA $5B       durch
00480          LDA #191      Linie
00490          STA $5A       verbinden
00500          LDX #$A
00510          JSR DRAW
00520 *
00530          INC X         X=X+1
00540          LDA X         Wiederholen
00550          CMP #80       bis X=80
00560          BNE LOOP
00570 ------------------------------
00580 WAIT     JMP WAIT      Endlos
00590 ------------------------------
00600 X        .HX 00
00610 Y        .HX 00
00620 COL      .HX 00
00630 ------------------------------
00640 ------------------------------
00650 OPEN     LDA $E411     Screen
00660          PHA           OPEN
00670          LDA $E410     ueber
00680          PHA           Stack
00690          RTS           Jump
00700 ------------------------------
00710 DRAW     LDA #17       Draw-Kommando
00720          STA $22       setzen
00730 PLOT     LDA $E411,X   Point-PUT
00740          PHA           Vector
00750          LDA $E410,X   auf Stack
00760          PHA           legen
00770          LDA COL       Farbe nach <A>
00780          RTS           Jump

Graphic 8 Demo#

00010 XO       .EQ $D0
00020 YO       .EQ $D2
00030 XT       .EQ $D3
00040 YT       .EQ $D5
00050 AX       .EQ $D6
00060 AX2      .EQ $D8
00070 AY       .EQ $DA
00080 AY2      .EQ $DB
00090 DX       .EQ $DC
00100 DY       .EQ $DE
00110 SL       .EQ $DF
00120 C        .EQ $E1
00130 *
00140 OFF1     .EQ $E3
00150 OFF2     .EQ $E4
00160 BIT1     .EQ $E5
00170 BIT2     .EQ $E6
00180 *
00190 PNT      .EQ $E7
00200 *
00210 BX1      .EQ $E9
00220 BY1      .EQ $EB
00230 BX2      .EQ $EC
00240 BY2      .EQ $EE
00250 *
00260 SAVMSC   .EQ $58
00270 *
00280 *
00290 *
00300 *
00310 *
00320 *
00330 *
00340 OPENGR8  LDA #0        Graphic
00350          STA $2A       8 Bild-
00360          LDA #8        schirm
00370          STA $2B       oeffen
00380          LDA #$70
00390          STA $6A
00400          JSR SOPEN
00410 *
00420          LDA SAVMSC
00430          STA PNT
00440          LDA SAVMSC+1
00450          STA PNT+1
00460          LDY #0
00470 *
00480 .1       LDA PNT       Zeilen-
00490          STA LOTAB,Y   addressen
00500          LDA PNT+1     tabelle
00510          STA HITAB,Y   erzeugen
00520          CLC
00530          LDA PNT
00540          ADC #40
00550          STA PNT
00560          BCC .2
00570          INC PNT+1
00580 .2       INY
00590          CPY #192
00600          BCC .1
00610 *
00620          LDX #0        Tabelle
00630 .3       TXA           mit
00640          LSR           Offset/8
00650          LSR
00660          LSR           erzeugen
00670          STA RSH8,X
00680          INX
00690          BNE .3
00700          RTS
00710 ------------------------------
00720 SOPEN    LDA $E411     Rom
00730          PHA           jump
00740          LDA $E410     fuer
00750          PHA           OPEN
00760          RTS
00770 ------------------------------
00780 PLOT     LDX YO        Zeilenaddresse
00790          LDA LOTAB,X   nach
00800          STA PNT       pointer
00810          LDA HITAB,X
00820          STA PNT+1
00830 *
00840          LDY XO+1      Byte-
00850          LDX XO        offset
00860          LDA HI,Y      aus X-
00870          ORA RSH8,X    Koordinate
00880          TAY           berechnen
00890 *
00900          TXA           Bit innerhalb
00910          AND #7        Byte
00920 *
00930 MO       ORA #0        +0 oder +8 je nach Modus
00940          TAX
00950          LDA (PNT),Y   Byte laden
00960 CM       ORA MASK,X    Manipulieren
00970          STA (PNT),Y   Speichern
00980          RTS
00990 *
01000 MASK     .HX 80402010080402017FBFDFEFF7FBFDFE
01010 HI       .HX 0020
01020 *
01030 CMD      .HX 1D3D5D  Opcodes fuer ORA, AND, EOR
01040 OFF      .HX 000800  Maskenoffset
01050 ------------------------------
01060 SETMODE  LDA CMD,X   Opcode
01070          STA CM      setzen
01080          STA CM1
01090          AND #$F3    auf indiziert Y-Opcode umrechnen
01100          STA CM2
01110          LDA OFF,X   Maskenoffset
01120          STA MO+1    setzen
01130          STA MO1+1
01140          RTS
01150 ------------------------------
01160 HLINE    LDX XO+1    Byte und
01170          LDA HI,X    Bit Pos-
01180          LDX XO      itionen
01190          ORA RSH8,X  der Start
01200          STA OFF1    X-Koor-
01210          TXA         dinate
01220          AND #7      berechnen
01230          STA BIT1
01240 *
01250          LDX XT+1    Das selbe
01260          STX XO+1    mit der
01270          LDA HI,X    Ziel
01280          LDX XT      X-Koor-
01290          STX XO      dinate
01300          ORA RSH8,X  und
01310          STA OFF2    Start=Ziel
01320          TXA         Koordinate
01330          AND #7
01340          STA BIT2
01350 *
01360          LDA OFF1    Subtraktion
01370          SEC         der Bytepositionen
01380          SBC OFF2    Wenn Ergebnis
01390          STA DX      >=0 dann vertauschen
01400          BCS EXOFF
01410 *
01420 HOTHER   LDA OFF2    Absulutwert
01430          SEC         der Bytepositionen
01440          SBC OFF1
01450          STA DX
01460          JMP HSETRD  weiter
01470 *
01480 EXOFF    LDX OFF2    Byte und
01490          LDA OFF1    Bit Posi-
01500          STA OFF2    tionen
01510          STX OFF1    vertau-
01520          LDX BIT1    schen
01530          LDA BIT2
01540          STA BIT1
01550          STX BIT2
01560 *
01570 HSETRD   LDX YO      Addresse
01580          LDA LOTAB,X des Zei-
01590          STA PNT     lenanfangs
01600          LDA HITAB,X in Pointer
01610          STA PNT+1   Register
01620 *
01630          LDA DX      Start und Ziel Koordinate
01640          BNE HLINE2  im selben Byte? Nein
01650 *
01660          LDX BIT1    Balkenwert
01670          LDY BIT2    berechnen
01680          LDA HMASK1,Y
01690          AND HMASK2,X
01700          STA SETBY+1 und ein-
01710          LDY OFF1    setzen
01720          JMP SETBY
01730 *
01740 HLINE2   CMP #2      Start und Ziel Koordinate in
01750          BCC SETBORD 2 nebeneinanderliegenden Byte? Ja
01760 *
01770          LDY OFF1    Bytes zwischen
01780          LDA #$FF    OFF1+1 und
01790          STA SETBY+1 OFF2-1
01800          INY         mit #$FF
01810 HLL1     JSR SETBY   fuellen
01820          INY
01830          CPY OFF2
01840          BCC HLL1
01850 *
01860 SETBORD  LDY OFF1      Werte
01870          LDX BIT1      fuer
01880          LDA HMASK1,X  Randbytes
01890          STA SETBY+1   einsetzen
01900          JSR SETBY
01910          LDY OFF2
01920          LDX BIT2
01930          LDA HMASK2,X
01940          STA SETBY+1
01950 *
01960 SETBY    LDA #$FF
01970 CM2      ORA (PNT),Y
01980          STA (PNT),Y
01990          RTS
02000 *
02010 HMASK1   .HX FF7F3F1F0F070301
02020 HMASK2   .HX 80C0E0F0F8FCFEFF
02030 ------------------------------
02040 VLINE    LDX XO+1      Byteposition
02050          LDA HI,X      bestimmen
02060          LDX XO
02070          ORA RSH8,X
02080          TAY
02090 *
02100          LDA YO        Anzahl
02110          SEC           der
02120          SBC YT        Zeilen
02130          BCC OTHER     bestimmen
02140          LDX YT        <X> haelt
02150          STA DY        die kleinere
02160          JMP VSETRD    der beiden
02170 *                      Y-Koordinaten
02180 OTHER    LDA YT
02190          SEC
02200          SBC YO
02210          STA DY
02220          LDX YO
02230 *
02240 VSETRD   INC DY
02250          LDA LOTAB,X   Zeilenaddresse
02260          STA PNT       holen
02270          LDA HITAB,X
02280          STA PNT+1
02290          LDA XO        Bitposition
02300          AND #7        bestimmen
02310 MO1      ORA #0        + Modusoffset
02320          TAX
02330 VLL      LDA (PNT),Y   Byte manipulieren
02340 CM1      ORA MASK,X
02350          STA (PNT),Y
02360          CLC           Pointer
02370          LDA PNT       +40
02380          ADC #40       Fuer
02390          STA PNT       naechste
02400          BCC VLSK      Bildzeile
02410          INC PNT+1
02420 VLSK     DEC DY        Wiederholen
02430          BNE VLL
02440          LDA YT        Koordinaten-
02450          STA YO        anpassung
02460          RTS
02470 *
02480 DRAWLINE LDX #0        Erklaerung
02490          STX C         siehe
02500          STX C+1       im
02510          STX AX2       DRAW.INC
02520          STX AX2+1     File
02530          STX AY
02540          STX SL+1
02550          STX AX+1
02560          INX
02570          STX AX
02580          STX AY2
02590          LDA XO
02600          EOR XT
02610          BNE TST2
02620          EOR XO+1
02630          EOR XT+1
02640          BNE TST2
02650          JMP VLINE
02660 *
02670 TST2     LDA YO
02680          EOR YT
02690          BNE NORMDRAW
02700          JMP HLINE
02710 *
02720 NORMDRAW JSR PLOT
02730 *
02740          SEC
02750          LDA XT
02760          SBC XO
02770          STA DX
02780          LDA XT+1
02790          SBC XO+1
02800          BPL D1OK
02810 *
02820          LDA #$FF
02830          STA AX
02840          STA AX+1
02850          SEC
02860          LDA XO
02870          SBC XT
02880          STA DX
02890          LDA XO+1
02900          SBC XT+1
02910 *
02920 D1OK     STA DX+1
02930          SEC
02940          LDA YT
02950          SBC YO
02960          BCS D2OK
02970 *
02980          LDA #$FF
02990          STA AY2
03000          SEC
03010          LDA YO
03020          SBC YT
03030 *
03040 D2OK     STA DY
03050 *
03060          LDA DX+1
03070          BNE MAIN1
03080          LDA DY
03090          CMP DX
03100          BEQ SWITCH
03110          BCC MAIN1
03120 *
03130 SWITCH   LDA DX
03140          PHA
03150          LDA DY
03160          STA DX
03170          PLA
03180          STA DY
03190          LDA AX
03200          STA AX2
03210          LDA AX+1
03220          STA AX2+1
03230          LDA AY2
03240          STA AY
03250          LDA #0
03260          STA AX
03270          STA AX+1
03280          STA AY2
03290 *
03300 MAIN1    LDA DX+1
03310          LSR
03320          LDA DX
03330          ROR
03340          STA SL
03350          LDA DX
03360          ORA DX+1
03370          BNE DRAWM
03380          JMP PLOT
03390 *
03400 DRAWM    LDA XO
03410          CLC
03420          ADC AX
03430          STA XO
03440          LDA XO+1
03450          ADC AX+1
03460          STA XO+1
03470          CLC
03480          LDA YO
03490          ADC AY
03500          STA YO
03510          INC C
03520          BNE DS1
03530          INC C+1
03540 *
03550 DS1      LDA SL
03560          CLC
03570          ADC DY
03580          STA SL
03590          BCC DS2
03600          INC SL+1
03610 *
03620 DS2      LDA DX+1
03630          CMP SL+1
03640          BEQ TST
03650          BCS OUTP
03660          BCC ADDJ
03670 TST      LDA DX
03680          CMP SL
03690          BEQ ADDJ
03700          BCS OUTP
03710 *
03720 ADDJ     CLC
03730          LDA XO
03740          ADC AX2
03750          STA XO
03760          LDA XO+1
03770          ADC AX2+1
03780          STA XO+1
03790 *
03800          LDA YO
03810          CLC
03820          ADC AY2
03830          STA YO
03840 *
03850          SEC
03860          LDA SL
03870          SBC DX
03880          STA SL
03890          LDA SL+1
03900          SBC DX+1
03910          STA SL+1
03920 *
03930 OUTP     LDA DX+1
03940          CMP C+1
03950          BNE OUTP1
03960          LDA DX
03970          CMP C
03980          BNE OUTP1
03990          JMP PLOT
04000 *
04010 OUTP1    JSR PLOT
04020          JMP DRAWM
04030 ------------------------------
04040 LOTAB    .BL 192
04050 HITAB    .BL 192
04060 RSH8     .BL 256
04070 ------------------------------
04080 *
04090 BOX      LDA BX1
04100          STA XO        Zeichnet
04110          LDA BX1+1     einen
04120          STA XO+1      Rahmen
04130          LDA BY1       mit
04140          STA YO        den
04150          STA YT        beiden
04160          LDA BX2       gegen-
04170          STA XT        ueber-
04180          LDA BX2+1     liegen-
04190          STA XT+1      den Eck-
04200          JSR DRAWLINE  Punktko-
04210          LDA BY2       ordi-
04220          STA YT        naten
04230          JSR DRAWLINE  aus
04240          LDA BX1       BX1,BY1
04250          STA XT        und
04260          LDA BX1+1     BX2,BY2
04270          STA XT+1
04280          JSR DRAWLINE
04290          LDA BY1
04300          STA YT
04310          JMP DRAWLINE


00010          .LI OFF
00020          .OR $4000
00030 *
00040 *
00050 *
00060 *
00070 *
00080 *
00090 *
00100 *
00110 ------------------------------
00120          .IN "D:GR8PACK.INC"
00130 ------------------------------
00140 *
00150 DEMO     JSR OPENGR8
00160          LDX #2
00170          JSR SETMODE
00180          LDA #0
00190          STA WERT
00200 *
00210 LL1      LDA #191
00220          SEC
00230          SBC WERT
00240          STA WERT2
00250          STA YO
00260          LDA #0
00270          STA $2C6
00280          STA XO
00290          STA XO+1
00300          LDA #319
00310          STA XT
00320          LDA /319
00330          STA XT+1
00340          LDA WERT
00350          STA YT
00360          JSR DRAWLINE
00370          LDA WERT
00380          STA YO
00390          LDA #0
00400          STA XO
00410          STA XO+1
00420          LDA WERT2
00430          STA YT
00440          JSR DRAWLINE
00450          LDA WERT
00460          CLC
00470          ADC #7
00480          CMP #192
00490          BCC .1
00500          SEC
00510          SBC #192
00520 .1       STA WERT
00530          LDA #$FF
00540          CMP 764
00550          BEQ LL1
00560          STA 764
00570          JSR OPENGR8
00580 *
00590 DM2      LDA WERT
00600          STA BX1
00610          STA BY1
00620          LDA #0
00630          STA BX1+1
00640          LDA #191
00650          SEC
00660          SBC WERT
00670          STA BY2
00680          LDA #319
00690          LDX /319
00700          SEC
00710          SBC WERT
00720          STA BX2
00730          BCS .1
00740          DEX
00750 .1       STX BX2+1
00760          JSR BOX
00770          LDA WERT
00780          CLC
00790          ADC #115
00800          CMP #192
00810          BCC .2
00820          SEC
00830          SBC #192
00840 .2       STA WERT
00850          LDA #$FF
00860          CMP 764
00870          BEQ DM2
00880          STA 764
00890          JMP DEMO
00900 *
00910 WERT     .HX 00
00920 WERT2    .HX 00