0100 ; FILL ROUTINE USING CIO›0110 ;›0120 ; CIO EQUATES USED›0130 ;›0140 CIO = $E456›0150 ICCOM = $0342›0160 ICBLEN = $0348›0170 CGBINR = $07 ; GET BINARY RECORD›0180 CPBINR = $0B ; PUT BINARY RECORD›0190 ;›0200 BUFA = $CB ; ADRESSES FOR IND,Y›0210 BUFB = $CD ; ADDRESSING FOR›0220 BUFC = $CF ; PIXEL COORDINATE›0230 BUFD = $D4 ; STORAGE›0240 ;›0250 XPOS = $55 ; X COORDINATE see OS›0260 YPOS = $54 ; Y COORDINATE " "›0270 ;›0280 COLOR = $D1 ; COLOR TO PLOT›0290 ;›0300 ; THE FOLLOWING LOCATIONS CAN ONLY›0310 ; BE USED TEMPORARILY, BECAUSE THEY›0320 ; ARE RESERVED FOR THE FLOATING POINT›0330 ; ROUTINES.›0340 ;›0350 COLOVER = $E6 ; COLOR TO COVER›0360 COUNTNEW = $E7 ; # NEW PIXELS›0370 COUNTOLD = $E8 ; # PIXELS TO TEST›0380 ; AROUND›0390 XPSTOR = $E9 ; STORE ORIGINAL XPOS›0400 YPSTOR = $EA›0410 XP = $D6 ; X COORDINATE›0420 YP = $D7 ; Y COORDINATE›0430 TEM = $EB ; TO STORE Y INDEX›0440 ;›0450 ; THE FILL ROUTINE USES PAGE 6›0460 ;›0470 *= $0600›0480 ;›0490 PLA ›0500 PLA ›0510 PLA ; THE COLOR TO PLOT›0520 STA COLOR›0530 LDA $06FE ; BUFD ADDRESS STORED›0540 STA BUFD ; HERE BECAUSE OF THE›0550 LDA $06FF ; LIMITED FREE SPACE›0560 STA BUFD+1 ; IN PAGE 0›0570 ;›0580 LDA #0›0590 STA COUNTNEW ; INITIALIZATION›0600 LDY #1 ; ONE PIXEL FIRST TIME›0610 LDA XPOS ; FROM O.S.›0620 STA (BUFA),Y›0630 STA XPSTOR›0640 STA XP ; FOR THE FIRST LOCATE›0650 LDA YPOS ; FROM O.S.›0660 STA (BUFB),Y›0670 STA YPSTOR›0680 STA YP ; FOR THE FIRST LOCATE›0690 STY COUNTOLD ; ONE PIXEL›0700 JSR LOCATE ; GET COLOR TO COVER›0710 STA COLOVER›0720 CMP COLOR ; ITSELF ?›0730 BNE PRELOOP›0740 RTS ; IF ITSELF QUIT OR GET›0750 ; INFINITE LOOP !›0760 ;›0770 PRELOOP JSR PLOT›0780 LOOP LDA (BUFA),Y›0790 STA XP ; X FOR CURRENT PIXEL›0800 LDA (BUFB),Y›0810 STA YP ; Y FOR CURRENT PIXEL›0820 ;›0830 LOOP0 INC XP ; TEST TO RIGHT›0840 LDA XP›0850 CMP #80 ; RHS LIMIT TO SCREEN›0860 BCS LOOP1›0870 JSR LOCATE ; IF WITHIN SCREEN›0880 ; THEN SEE IF THE PIXEL›0890 ; CONTAINS THE COLOR TO›0900 ; BE OVERWRITTEN. THE›0910 ; LOCATE ROUTINE›0920 ; CONTAINS THE COMPARE.›0930 ;›0940 BNE LOOP1›0950 JSR KEEP ; PLOT IT AND MARK IT›0960 ; FOR ITS OWN TEST›0970 ; NEXT TIME THROUGH THE›0980 ; LIST OF LOCATIONS.›0990 ;›1000 LOOP1 DEC XP›1010 DEC XP›1020 LDA XP›1030 CMP #255 ; CHECK SCREEN LHS›1040 BEQ LOOP2›1050 JSR LOCATE›1060 BNE LOOP2›1070 JSR KEEP›1080 ;›1090 LOOP2 INC XP›1100 INC YP ; TEST BELOW›1110 LDA YP›1120 CMP #80 ; BOTTOM OF SCREEN›1130 BCS LOOP3›1140 JSR LOCATE›1150 BNE LOOP3›1160 JSR KEEP›1170 ;›1180 LOOP3 DEC YP›1190 DEC YP›1200 LDA YP›1210 CMP #255›1220 BEQ LOOP4›1230 JSR LOCATE›1240 BNE LOOP4›1250 JSR KEEP›1260 ;›1270 LOOP4 DEC COUNTOLD›1280 BEQ DONELOOP ; ALL POINTS DONE›1290 INY ; ELSE DO NEXT POINT›1300 JMP LOOP›1310 ;›1320 DONELOOP LDY COUNTNEW›1330 BEQ RETURN0 ; IF NO NEW POINTS›1340 ; IN THE COLOR TO›1350 ; COVER REMAIN›1360 ;›1370 STY COUNTOLD ; THIS BECOMES THE›1380 ; NEW # PIXELS TO›1390 ; PLOT AND TEST›1400 ;›1410 TRANSFER LDA (BUFD),Y›1420 STA (BUFB),Y›1430 LDA (BUFC),Y›1440 STA (BUFA),Y›1450 DEY ›1460 BNE TRANSFER ; MOVE BUFFERS›1470 LDY #1›1480 LDA #0›1490 STA COUNTNEW ; INITIALIZE›1500 JMP LOOP ; BEGIN AGAIN›1510 ;›1520 ; THE SUBROUTINES›1530 ;›1540 KEEP JSR PLOT ; Y REG. IN TEM›1550 INC COUNTNEW›1560 BEQ RETURN2 ; BUFFER OVERFLOWS›1570 LDY COUNTNEW›1580 LDA XP ; STORE THE COORD.›1590 STA (BUFC),Y ; OF THIS PIXEL›1600 LDA YP ; FOR PLOTTING AND›1610 STA (BUFD),Y ; TESTING.›1620 LDY TEM ; RECOVER Y REG.›1630 RTS ›1640 ;›1650 LOCATE JSR POS›1660 LDA #CGBINR›1670 STA ICCOM,X›1680 JSR CIO ; CIO LOCATE›1690 LDY TEM›1700 CMP COLOVER ; PIXEL IN A REG.›1710 RTS ›1720 ;›1730 POS STY TEM›1740 LDA XP›1750 STA XPOS ; POSITION X›1760 LDA YP›1770 STA YPOS ; AND Y›1780 LDX #$60 ; TO USE IN LOCATE›1790 LDA #0 ; AND IN PLOT›1800 STA ICBLEN,X ; ONE PIXEL AS›1810 STA ICBLEN+1,X ; IN ACCUM.›1820 RTS ›1830 ;›1840 PLOT JSR POS›1850 LDA #CPBINR›1860 STA ICCOM,X›1870 LDA COLOR ; THE ONE TO PLOT›1880 JSR CIO›1890 LDY TEM›1900 RTS ›1910 ;›1920 RETURN0 LDA YPSTOR›1930 STA YPOS›1940 LDA XPSTOR›1950 STA XPOS›1960 RTS ›1970 ;›1980 RETURN2 JSR RETURN0›1990 PLA ; WE EXITED A SUBROUTINE›2000 PLA ; SO POP RETURN ADDRESS›2010 RTS ; TO BASIC›2020 ;›2030 ; TO USE FOR ANY GRAPHICS›2040 ; MODE OTHER THAN 8, FIX›2050 ; THE SCREEN LIMIT TESTS.›