!!!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
* File GR8PACK.INC
{{{
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
}}}
* File GR8PACK2.DEM
{{{
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
}}}