; DISPLAY MASTER›; BY DAVE OBLAD›; (c) 1985, ANTIC PUBLISHING ›; (NOTE:COMPILE DIRECTLY FROM DISK!)› ›BYTE A=$680,B=$681,X=$682,Y=$683›BYTE B0=$684,B1=$685,B2=$686,B3=$687›BYTE C1=$688,C2=$689,C3=$68A,C4=$68B›BYTE D1=$68C,D2=$68D,D3=$68E,D4=$68F›BYTE KEY=$D01F,MASK=$D20A,NOW=$685›CARD SCREEN=$690,DLIST=$692›CARD PNTR=$694,LINE=$696,HOLD=$698›CARD R=$69A,L=$69C›BYTE ARRAY RAM,ORG,REV,STP,FILE›CARD ARRAY DL,SL››PROC FIND()› GRAPHICS(24)› DLIST=PEEKC(560)› SCREEN=PEEKC(DLIST+4)› RAM=SCREEN› ORG=RAM-8000› DL=ORG-400› SL=DL-400› REV=SL-300› STP=REV-300› FILE=STP-40 › LINE=SCREEN› FOR X=0 TO 191› DO› SL(X)=LINE:LINE==+40› OD› DLIST=FILE-1400:DLIST=DLIST&$FC00› X=0› DO› B3=X&$03:B3=B3 LSH 6› B2=X&$0C:B2=B2 LSH 2› B1=X&$30:B1=B1 RSH 2› B0=X&$C0:B0=B0 RSH 6› B3=B3%B2:B3=B3%B1:B3=B3%B0› REV(X)=B3› X==+1:IF X=0 THEN EXIT:FI› OD› D1=PEEK(712)› D2=PEEK(708)› D3=PEEK(709)› D4=PEEK(710)›RETURN››PROC MAKE()› GRAPHICS(24)› FOR X=0 TO 191› DO› DL(X)=SL(X)› OD› POKE(DLIST,112)› POKE(DLIST+1,112)› POKE(DLIST+2,112)› LINE=DLIST+3› FOR A=0 TO 191› DO› POKE(LINE,$4E)› POKEC(LINE+1,DL(A))› LINE==+3› OD › POKEC(560,DLIST):POKEC(54274,DLIST)› POKEC(88,SCREEN)› POKE(LINE,$41)› POKEC(LINE+1,DLIST)›RETURN››PROC SHOW()› LINE=DLIST+3› FOR A=0 TO 191› DO › POKEC(LINE+1,DL(A))› LINE==+3› OD›RETURN››PROC RESTORE()› FOR X=0 TO 191› DO› DL(X)=SL(X)› OD› FOR PNTR=0 TO 7679› DO› RAM(PNTR)=ORG(PNTR)› IF KEY<7 THEN EXIT:FI› OD› SHOW()›RETURN››PROC FADE()› POKE(712,C1)› POKE(708,C2)› POKE(709,C3)› POKE(710,C4)› FOR X=0 TO 100› DO› PNTR=0› DO › PNTR==+RAND(60)› IF PNTR>7679 THEN EXIT:FI› RAM(PNTR)=ORG(PNTR)&MASK%RAM(PNTR)› IF KEY<7 THEN EXIT:FI› OD› OD› RESTORE()›RETURN››PROC REVERSE()› L=0› FOR Y=0 TO 191› DO› R=L+39› FOR X=0 TO 19› DO› A=RAM(L):B=RAM(R)› RAM(L)=REV(B)› RAM(R)=REV(A)› L==+1:R==-1› OD› L==+20› OD›RETURN››PROC MIRROR()› FOR X=0 TO 95› DO› HOLD=DL(X)› DL(X)=DL(191-X)› DL(191-X)=HOLD› OD› SHOW()›RETURN››PROC SHIFT()› PNTR=0› FOR Y=0 TO 191› DO› FOR X=0 TO 19› DO› A=RAM(PNTR)› RAM(PNTR)=RAM(PNTR+20)› RAM(PNTR+20)=A› PNTR==+1› OD› PNTR==+20› OD›RETURN› ›PROC DOUBLE()› FOR X=0 TO 95› DO› DL(X)=DL(X*2)› OD› FOR X=0 TO 95› DO› DL(X+96)=DL(X)› OD› SHOW()›RETURN› ›PROC UNFOLD()› X=192› DO› X==-1:A=X› DO› HOLD=DL(A)› DL(A)=DL(A-1)› DL(A-1)=HOLD› A==-2› IF A=0 THEN EXIT:FI› IF A>250 THEN EXIT:FI› OD› SHOW()› IF X=1 THEN EXIT:FI› IF KEY<7 THEN EXIT:FI› OD›RETURN››PROC FOLD()› X=0 › DO› A=X› DO› HOLD=DL(A)› DL(A)=DL(A+1)› DL(A+1)=HOLD› A==-2› IF A>250 THEN EXIT:FI› OD› SHOW()› X==+1› IF X=191 THEN EXIT:FI› IF KEY<6 THEN EXIT:FI› OD›RETURN››PROC ROLL()› FOR X=0 TO 95› DO› LINE=DL(191):Y=191› FOR A=0 TO 94› DO› HOLD=DL(Y)› DL(Y)=DL(Y-2)› DL(Y-2)=HOLD› Y==-2› OD› HOLD=DL(1)› DL(1)=DL(0)› DL(0)=HOLD › Y=0› FOR A=0 TO 94› DO› HOLD=DL(Y)› DL(Y)=DL(Y+2)› DL(Y+2)=HOLD› Y==+2› OD› DL(190)=LINE› SHOW()› IF KEY<7 THEN EXIT:FI› OD›RETURN››PROC WAIT()› FOR PNTR=0 TO 60000› DO› IF KEY<7 THEN EXIT:FI› OD›RETURN››PROC MOIRE()› MAKE()› POKE(712,D1)› POKE(708,D2)› POKE(709,D3)› POKE(710,D4)› DO:IF KEY>6 THEN EXIT:FI:OD› COLOR=1› Y=RAND(9)+2:X=RAND(9)+2› Y=Y&$FE:X=X&$FE› FOR PNTR=0 TO 191› DO› PLOT(160,96):DRAWTO(0,PNTR)› PLOT(159,96):DRAWTO(319,PNTR)› PNTR==+Y› IF KEY<7 THEN EXIT:FI› OD› FOR PNTR=0 TO 319› DO› PLOT(160,96):DRAWTO(PNTR,0)› PLOT(160,95):DRAWTO(PNTR,191)› PNTR==+X› IF KEY<7 THEN EXIT:FI› OD› FOR PNTR=0 TO 7679› DO› ORG(PNTR)=RAM(PNTR)› IF KEY<7 THEN EXIT:FI› OD›RETURN››PROC FETCH()› MAKE()› CLOSE(1)› OPEN(1,FILE,4,0)› FOR PNTR=0 TO 7679› DO› A=GETD(1):ORG(PNTR)=A› OD› C1=GETD(1)› C2=GETD(1)› C3=GETD(1)› C4=GETD(1)› CLOSE(1)› FADE()›RETURN››PROC GETFILE()› GRAPHICS(0)› PRINTE(›"PUT DISK WITH PICTURE FILES IN DRIVE1")› PRINTE("PUSH ÒÅÔÕÒÎ KEY WHEN DONE!")› INPUTS(FILE)› CLOSE(2)› OPEN(2,"D:*.?IC",6,0)› DO› INPUTSD(2,FILE)› PRINTE(FILE)› IF FILE(2)#$20 THEN EXIT:FI› OD› CLOSE(2)› PRINTE("")› PRINTE("ENTER 'D:FILENAME.EXT'")› PRINTE("OR JUST HIT ÒÅÔÕÒÎ TO EXIT.")› PRINT("?"):INPUTS(FILE)›RETURN››PROC DISPLAY()› POSITION(1,18):PRINT(">")› POSITION(2,17)› NOW==-1› FOR X=1 TO 3› DO› PRINT("STEP ")› PRINTB(NOW)› PRINT(" IS OPT ")› POSITION(18,16+X)› IF STP(NOW)>47 AND STP(NOW)<58› THEN PRINTB(STP(NOW)-48):FI› IF STP(NOW)=80 OR STP(NOW)=76› THEN PRINT(FILE):FI› IF STP(NOW)=77› THEN PRINT("MOIRE"):FI› IF STP(NOW)=0› THEN PRINT("STOP"):FI› PRINTE("")› NOW==+1› OD› NOW==-2›RETURN››PROC SETUP()› GRAPHICS(0):POKE(752,1)› POKE(763,255):POKE(764,255)› CLOSE(1)› OPEN(1,"K:",4,0)› PRINTE›("Display Master, by Dave Oblad")› PUTE() › PRINTE ("Antic Magazine, 8/85")› PUTE() PUTE() PUTE()› PRINTE›("TO MANIPULATE A ÐICTURE FILE PUSH 'P'")› PRINTE›("TO MANIPULATE A ÌOADED PICT. PUSH 'L'")› PRINTE›("TO MANIPULATE A ÍOIRE SCREEN PUSH 'M'")› PRINTE›("TO SEE A ÄEMO OF THIS PROGRAM PUSH 'D'")› PRINT›("PUSH 'P' OR 'L' OR 'M' OR 'D' !")› POKE(702,64)› A=GETD(1)› IF A#76 THEN› IF A=80 THEN STP(0)=A:GETFILE() › ELSE FILE(1)=0› FI› ELSE STP(0)=A› FI› IF FILE(1)#68 THEN STP(0)=77:FI› IF A#80 AND A#77 AND A#76 THEN› STP(0)=77› RETURN› FI› GRAPHICS(0):POKE(752,1)› PRINTE("")› PRINTE("1 = RESTORE DISPLAY")› PRINTE("2 = INVERT DISPLAY")› PRINTE("3 = MIRROR DISPLAY")› PRINTE("4 = SHIFT DISPLAY")› PRINTE("5 = DOUBLE DISPLAY")› PRINTE("6 = FOLD DISPLAY")› PRINTE("7 = UNFOLD DISPLAY")› PRINTE("8 = ROLL DISPLAY 50%")› PRINTE("9 = WAIT 2 SECONDS")› PRINTE("0 = REPEAT FROM STEP 1")› PRINTE("")› PRINTE("- = BACK 1 INSTRUCTION")› PRINTE("+ = SKIP TO NEXT INSTRUCTION")› PRINTE("* = DELETE THIS INSTRUCTION")› PRINTE("= = BEGIN EXECUTION")› NOW=1 › DO› DISPLAY()› POSITION(2,22)› PRINT("CHOOSE AN OPTION:")› A=GETD(1):PUT(A)› IF A=45 AND NOW>1 THEN NOW==-1:FI› IF A=43 AND NOW<250 THEN NOW==+1:FI› IF A>47 AND A<58 THEN › X=253› DO› STP(X)=STP(X-1):X==-1› IF X=NOW THEN STP(X)=A:EXIT:FI› OD› NOW==+1› FI› IF A=42 THEN X=NOW› DO› STP(X)=STP(X+1):X==+1› IF X=254 THEN EXIT:FI› OD› FI› IF A=61 THEN EXIT:FI› OD› CLOSE(1)› GRAPHICS(0):POKE(752,1):PRINTE("")› PRINTE›("ÈÏÌÄ DOWN ÓÔÁÒÔ KEY WHEN TONE SOUNDS") › PRINTE›("OR WHEN YOU WANT OPTIONS AGAIN.")› PRINTE›("")› PRINTE›(" PUSH ÓÔÁÒÔ KEY NOW TO BEGIN TASKS!")› DO:IF KEY<7 THEN EXIT:FI:OD›RETURN››PROC MAIN()› FIND()› FOR X=0 TO 254› DO› STP(X)=0› OD› SCOPY(STP,"88766777666878868740")› DO› NOW=1:SETUP()› IF STP(0)#76 THEN› IF STP(0)=80 THEN FETCH()› ELSE MOIRE()› FI› ELSE› MAKE()› POKE(712,C1)› POKE(708,C2)› POKE(709,C3)› POKE(710,C4)› RESTORE()› FI› NOW=1› DO› IF STP(NOW)=48 THEN NOW=1:FI› IF STP(NOW)=49 THEN RESTORE():FI› IF STP(NOW)=50 THEN MIRROR():FI› IF STP(NOW)=51 THEN REVERSE():FI› IF STP(NOW)=52 THEN SHIFT():FI› IF STP(NOW)=53 THEN DOUBLE():FI› IF STP(NOW)=54 THEN FOLD():FI› IF STP(NOW)=55 THEN UNFOLD():FI› IF STP(NOW)=56 THEN ROLL():FI› IF STP(NOW)=57 THEN WAIT():FI› IF STP(NOW)=0 THEN EXIT:FI› IF KEY<7 THEN EXIT:FI› NOW==+1› POKE(77,1)› OD› DO› A=PEEK(20):B=A RSH 5:B=B&1 › IF B=0 THEN SOUND(0,40,10,8):FI› IF B=1 THEN SOUND(0,80,10,4):FI› IF KEY<7 THEN EXIT:FI› OD› SNDRST()› OD›RETURN››