*********************************** * LISTING 2: * * BIT-MAP-GRAPHIK * IN MASCHINENSPRACHE * * UMSETZUNG DES BASIC LISTINGS 1 * ASSEMBLER ATMAS-II - PETER FINZEL *********************************** * IOCB-STRUKTUR ICCOM EQU $342 ICSTA EQU $343 ICBAL EQU $344 ICBAH EQU $345 ICBLL EQU $348 ICBLH EQU $349 ICAX1 EQU $34A ICAX2 EQU $34B CIOV EQU $E456 CIO-VEKTOR * CIO-BEFEHLE COPEN EQU 3 CCLSE EQU 12 CPBIN EQU 11 HIER: PLOT CDRAW EQU $11 DRAWTO CFILL EQU $12 XIO 16 * ATARI GRAPHIK-VARIABLE ATACHR EQU $2FB FARBE F. DRAW FILLDAT EQU $2FD FARBE FUER FILL ROWCRS EQU $54 CURSOR- COLCRS EQU $55 POSITION RTCLK EQU $12 FRAME-ZAEHLER VCOUNT EQU $D40B RASTER-ZEILE WSYNC EQU $D40A SYNCHRONISIERUNG COLPF0 EQU $D016 FARBREGITTER * KONSTANTE DES DEMO-PROGRAMMES MX EQU 79 MITTELPUNKT X MY EQU 47 MITTELPUNKT Y SCHRITT EQU 5 SCHRITTWEITE ORG $A800 STARTADRESSE DES PROGRAMMES *********************************** * MANDALA * * DEMO-PROGRAMM ZEICHNET EINEN * * HYPERBEL-KOERPER * *********************************** * * GRAPHICS 7+16 * START LDA #7+16 GRAPHICS 7 JSR GRAPHICS OHNE TEXTFENSTER * * COLOR 3:PLOT 126,95 * LDA #3 STA ATACHR COLOR 3 LDX #126 RECHTECK AUDFUELLEN LDY #95 IN DAS DIE JSR PLOT FIGUR GEZEICHNET WIRD * * DRAWTO 126,0:DRAWTO 32,0 * LDX #126 LDY #0 JSR DRAW LDX #32 LDY #0 JSR DRAW * * POKE 765,3:POSITION 32,95:XIO 18,#6,0,0,"S:" * (WIRD DURCH FILL ETWAS ELEGANTER) * LDA ATACHR FARBE WIE DRAW LDX #32 LDY #95 JSR FILL * * COLOR 1:FOR LAUF=MY TO ... * LDA #1 COLOR 1 STA ATACHR LDA #MY SCHLEIFE STA LAUF VORBEREITEN * * PLOT MX-LAUF,MY * FORNXT LDA #MX BEGINN DER SEC SCHLEIFE SBC LAUF TAX LDY #MY JSR PLOT * * DRAWTO MX,LAUF * LDX #MX LDY LAUF JSR DRAW * * DRAWTO MX+LAUF,MY * LDY #MY LDA #MX CLC ADC LAUF TAX JSR DRAW * * DRAWTO MX,MY+MY-LAUF * LDA #MY ASL ;STATT MY+MY SEC SBC LAUF TAY LDX #MX JSR DRAW * * DRAWTO MX-LAUF,MY * LDA #MX SEC SBC LAUF TAX LDY #MY JSR DRAW * * ... TO 0 STEP -SCHRITT:NEXT LAUF * BEENDEN FOR-NEXT SCHLEIFE * LDA LAUF LAUFVARIABLE SEC SBC #SCHRITT SCHRITT STA LAUF ABZIEHEN BCS FORNXT NOCH NICHT FERTIG-> * * ZUR ABRUNDUNG DER GRAPHIK NOCH EINEN * REGENBOGEN IM HINTERGRUND * (IM BASIC PROGRAMM NICHT ENTHALTEN) * REGBOG LDA VCOUNT RASTERZEILE CLC PLUS ADC RTCLK+2 FRAMEZHLER STA WSYNC IN STA COLPF0+4 FARBREGISTER JMP REGBOG LAUF DFB 0 LAUFVARIABLE * AB HIER DIE GRAFIK-UNTERPROGRAMME * *********************************** * GRAPHICS-BEFEHL * * AUFRUF: JSR GRAPHICS * PARAMETER: * 0 BIS 15 (XLS) * 0 BIS 11 (400/800) *********************************** GRAPHICS PHA LDX #$60 LDA #CCLSE ZUERST KANAL 6 STA ICCOM,X SCHLIESSEN JSR CIOV PLA STA ICAX2,X STUFE ANWAEHLEN AND #$F0 EOR #$10 ORA #$0C STA ICAX1,X LDA #COPEN BEFEHL ZUM OEFFNEN STA ICCOM,X DES SCREENS LDA #SDEVICE STA ICBAL,X LDA #SDEVICE/256 STA ICBAH,X JSR CIOV RTS SDEVICE ASC "S:" DISPLAY-HANDLER *********************************** * POSITIONIERUNG DES CURSORS * * AUFRUF: JSR POSITION * PARAMETER: * , JE NACH GRAPHIKMODUS *********************************** POSITION STX COLCRS PARAMETER IN STY ROWCRS DATABASE DES LDA #0 DISPLAY-HANDLERS STA COLCRS+1 EINTRAGEN (ACHTUNG: RTS X NUR BIS 255) *********************************** * GRAPHIK-PUNKTE SETZEN * * AUFRUF: JSR PLOT * PARAMETER: * , JE NACH GRAPHIKMODUS *********************************** PLOT JSR POSITION LDX #$60 KANAL 6 LDA #CPBIN PLOT GEHT WIE STA ICCOM,X PUT CHAR LDA #0 NUR EIN STA ICBLL,X DATUM STA ICBLH,X LDA ATACHR AKTUELLE FARBE JSR CIOV RTS *********************************** * GRAPHIK-LINIEN ZEICHNEN * * AUFRUF: JSR DRAW * PARAMETER: * , JE NACH GRAPHIKMODUS *********************************** DRAW JSR POSITION LDX #$60 KANAL 6 LDA #CDRAW DRAW-BEFEHL STA ICCOM,X IN IOCB JSR CIOV RTS *********************************** * FILL ZUM FUELLEN VON FLAECHEN * * AUFRUF: JSR FILL * PARAMETER: FARBE * , JE NACH GRAPHIKMODUS *********************************** FILL STA FILLDAT FARBE FUER FILL JSR POSITION LDX #$60 SCREEN-IOCB LDA #CFILL FILL BEFEHL STA ICCOM,X JSR CIOV RTS