Home » Personal collection » Commodore disks » disk32a_commodore_disk_user_3_7.d64 » screen designer
screen designer
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
| Tape/disk: | Home » Personal collection » Commodore disks » disk32a_commodore_disk_user_3_7.d64 |
| Filename: | screen designer |
| Read OK: | ✔ |
| File size: | 192E bytes |
| Load address: | 0801 |
| Exec address: | 0000 |
Duplicates
There is 1 duplicate copy of this file in the archive:
- Arnold website » magazines_cdu » magazines_cdu_cdu307_cdu307.d64 » screen designer
- Personal collection » Commodore disks » disk32a_commodore_disk_user_3_7.d64 » screen designer
File contents
5 REM"<del><del><del><del><del><del><lf><white> SCREEN DESIGNER BY WILLIAM A CHRISTIE <yellow>
10 ON A GOTO 30,40
20 A=1:LOAD"CRUNCH/DECR.MC",8,1
30 A=2:LOAD"GETCHAR.MC",8,1
40 POKE55,190:POKE56,47:CLR:REM END OF BASIC MEMORY=$3000-64
50 V=53248:POKE2040,191:POKE650,128:POKE53280,6:POKE53281,0
55 POKE1022,0:REM RESET SCREEN MEMORY
60 REM POKE788,52:REM DISABLE RUN/STOP
70 BASE=4096*4:A=BA:GOSUB 1510:BH=HB:BL=LB
80 FORN=12224TON+63:POKEN,0:NEXT
90 FORN=12224TON+23:READS:POKEN,S:NEXT
100 DATA 255,0,0,129,0,0,129,0,0,129,0,0,129,0,0,129,0,0,129,0,0,255,0,0
110 POKEV+21,0:PRINT"<clr><cursor down><cursor down>"TAB(12)"<white>SC<light gray>RE<medium gray>EN <white>DE<light gray>SI<medium gray>GN<dark gray>ER"
115 PRINTTAB(12)"<red>▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔"
116 PRINTTAB(10)"<orange>BY WILLIAM CHRISTIE"
120 PRINTTAB(8)"<cursor down>FOR COMMODORE DISK USER"
130 PRINT"<cursor down><cursor down><cursor down><cursor down>"TAB(7)"<light green>F1 <green>:ALTER BACKGROUND COLOUR"
140 PRINTTAB(7)"<light green>F2 <green>:ALTER FOREGROUND COLOUR"
150 PRINTTAB(7)"<light green>F3 <green>:ALTER CHARACTER COLOUR"
160 PRINTTAB(7)"<light green>F5 <green>:SUBSTITUTE CHARACTER"
170 PRINTTAB(7)"<light green>F7 <green>:MAIN MENU<cursor down><cursor down><cursor down>"
180 TX$="<light blue>SCREEN NUMBER (1-255) ?:<cyan>":X=7:Y=17:GOSUB2000
182 SN=S1:SN$=S1$:SL=S2:GOTO280
280 PRINT"<clr>":POKE251,10:POKE252,10:POKE253,0:POKEV+21,1:SP=35:POKE56325,SP
290 CR=32768:DC=33536:REM CRUNCH/DECR
300 CL=51218:REM CLEARMID4LINES
310 RE=51243:REM RETURNMID4LINES
320 GC=50704:REM GETCHAR
330 RC=51699:REM CHARACTER ROM COPY
340 DS=51755:REM DELETE SCREEN
360 LS=52011:REM LIST SCREEN NUMBERS
362 RN=52126:REM RENUMBER
365 AL=52199:REM ALTER SCREEN NUMBER
370 POKEV+21,1:SYS GC:REM GETCHAR
380 POKE781,10:POKE782,1:POKE783,0:SYS65520:POKEV+21,0
390 PRINT"(";RIGHT$(SN$,SL);") ";"<reverse on>W<rev off>IPE <reverse on>C<rev off>RUNCH <reverse on>G<rev off>ET <reverse on>N<rev off>UM <reverse on>L<rev off> <reverse on>S<rev off> <reverse on>R<rev off>EN";
391 PRINT"UM <reverse on>X<rev off>Y"
400 PRINT" <reverse on>V<rev off> <reverse on>D<rev off>EL <reverse on>B<rev off>GN <reverse on>M<rev off>EM R<reverse on>A<rev off>M CO<reverse on>P<rev off>Y AL<reverse on>T<rev off> L<reverse on>I<rev off>ST MC<reverse on>O<rev off>L<reverse on>12<rev off>"
410 GETT$:IFT$=""THEN410
420 IF ASC(T$)=136THEN 410
422 IF T$="R" ANDPEEK(1022)=1THEN2200
424 IF T$="T" ANDPEEK(1022)=1THEN2300
425 IF T$="C" THEN POKEV+21,1:GOTO 850
430 IF T$<>"O" THEN 440
431 GOTO 433
432 GETT$:IFT$=""THEN432
433 IFT$="O"ANDPEEK(53270)<>216 THEN POKE53270,216:SYS RE:GOTO435
434 IFT$="O"ANDPEEK(53270)<>200 THEN POKE53270,200:SYS RE
435 IF T$="1" THEN POKE53282,(PEEK(53282)AND15)+1
436 IF T$="2" THEN POKE53283,(PEEK(53283)AND15)+1
437 IF ASC(T$)<>13THEN432
438 GOTO 370
440 IF T$="W" THEN PRINT"<clr>":GOTO370
450 IF T$="N" THEN 610
460 IF T$="G" AND PEEK(1022)=1 THEN 720
470 IF T$="P" THEN SYS RC:GOTO590
480 IF T$="I" AND PEEK(1022)=1 THEN SYSLS:GOSUB1700:PRINT"<clr>":GOTO370
490 IF T$="S" THEN 970
500 IF T$="B" THEN 1550
510 IF T$="L" THEN 1090
520 IF T$="V" AND PEEK(1022)=1THEN 1250
530 IF T$="M" THEN 1630
550 IF T$="D" AND PEEK(1022)=1THEN 1750
555 IF T$="X" THEN 2400
560 IF T$<>"A" THEN 590
570 IFPEEK(53272)=21 THEN POKE53272,31:GOTO590
580 POKE53272,21
590 SYS RE:REM RETURNMIN4LINES
600 GOTO370
609 REM *****SET SCREEN NUMBER**
610 Y=13:X=7:TX$="ENTER SCREEN NUMBER :":GOSUB2000:POKEV+21,1
620 SN=S1:SN$=S1$:SL=S2:SYSRE:GOTO370
699 REM ********GET SCREEN******
720 TX$="WHICH SCREEN NUMBER ?":X=7:Y=13:GOSUB2000
800 A=S1:GOSUB1510:POKE820,LB:POKE821,HB:SYSRE
810 SYS DC:IF(PEEK(2)AND1)=0THEN 370
820 POKEV+21,0:POKE781,13:POKE782,1:POKE783,0:SYS65520
830 PRINT" SCREEN NOT FOUND! "
840 GOSUB1700:POKEV+21,1:SYSRE:GOTO370
849 REM **********CRUNCH********
850 IF SN=255 THEN PRINT" NEXT SCREEN NUMBER>255 -ALTER NUMBER":GOTO610
855 SYS RE:REM RETURNMIN4LINES
860 A=SN:GOSUB1500:POKE820,LB:POKE821,HB
880 POKEV+23,1:POKEV+29,1
890 SYSCR:IF(PEEK(2)AND128)=0THEN900
895 POKEV+23,0:POKEV+29,0:SYSCL:PRINTTAB(9)"<reverse on>OUT OF CRUNCH MEMORY"
896 POKEV+21,0:GOTO1630
900 SN=SN+1:SN$=STR$(SN):SL=LEN(SN$)-1:POKEV+23,0:POKEV+29,0:GOTO370
950 :
960 REM *** SAVE ****
970 EL=PEEK(BASE)+1
980 EH=PEEK(BASE+1)
990 IF EL=256THENEL=0:EH=EH+1
1000 GOSUB1170:IF F$=""THEN280
1010 SYS57812F$,D,1:POKE193,BL:POKE194,BH:REM$4000=BASE
1020 POKE174,EL:POKE175,EH:REM END
1030 SYS62957:REM SAVE
1040 INPUT"END (Y/N)";E$
1050 IF E$="N"THEN280
1060 END
1070 :
1080 REM **** LOAD *****
1090 GOSUB 1170:IF F$=""THEN280
1091 IF F$="$"THEN1900
1100 POKE147,0:SYS57812F$,D,1:SYS62631
1110 IF T$="T"THEN 1140
1120 OPEN15,8,15:INPUT#15,Z1,Z$,Z2,Z3:CLOSE15
1130 PRINT"<cursor down><cursor left>"Z1;Z$;Z2;Z3:GOSUB1700
1140 POKE1022,1:GOTO280
1150 :
1160 REM ***GET LOAD/SAVE PARAMETERS***
1170 PRINT"<clr><cursor down><cursor down><cursor down><cursor down><cursor down><cursor down><cursor down><reverse on>D<rev off>ISK OR <reverse on>T<rev off>APE :";
1180 GETT$:IFT$=""THEN1180
1185 IF ASC(T$)=13THENRETURN
1190 D=1:IF T$="D"THEN D=8:GOTO1210
1200 IF T$<>"T"THEN 1180
1210 PRINTT$:INPUT"ENTER FILENAME :<cursor left><cursor left>";F$
1220 RETURN
1230 :
1240 REM **VIEW ALL/SELECTED SCREENS**
1250 POKE53280,9:POKE53281,9
1270 PRINT"<clr><cursor down><cursor down><cursor down><cursor down>"TAB(6)"<white>VIEW ALL/SELECTED SCREENS"
1280 PRINTTAB(6)"<light gray>🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂🮂<light green>"
1290 TX$="<white>ENTER START SCREEN<yellow> :":X=8:Y=10:GOSUB2000:S=S1
1300 TX$="<white>ENTER END SCREEN<yellow> :":X=8:Y=11:GOSUB2000:E=S1:PRINT
1320 IF S>ETHEN 1290
1330 PRINTTAB(4);:PRINT"<cursor down><white>PRESS 'RETURN' FOR NEXT SCREEN"
1340 PRINTTAB(10);:PRINT"PRESS 'E' TO EXIT<cursor down><cursor down>"
1350 PRINTTAB(6)"<cursor down><cursor down><white>PRESS 'C' FOR FIRST SCREEN"
1360 PRINTTAB(10)"<white>PRESS 'X' TO CORECT"
1370 GETK$:IFK$=""THEN1370
1380 IF K$="C"THEN1410
1390 IF K$="X"THEN1270
1400 GOTO 1370
1410 A=S:AS=SN:PRINT"<clr>"
1420 GOSUB 1510:POKE820,LB:POKE821,HB
1430 SYS DC:IF A=ETHENSN=AS:GOTO370
1440 IF (PEEK(2)AND1)=1THENA=A+1:GOTO1420
1450 GETT$:IFT$=""THEN1450
1460 IF T$="E"THEN SN=AS:GOTO370
1470 IF T$="C"THEN 1450
1480 A=A+1:GOTO 1420
1490 :
1500 REM ****CONVERT TO 2 BYTE VAL****
1510 HB=INT(A/256):LB=A-(HB*256):RETURN
1520 :
1530 REM **INITIALISE SCREEN POINTER***
1540 REM *****TO START OF MEMORY*******
1550 PRINTTAB(9)"<cursor up><reverse on>ARE YOU SURE (Y/N)<rev off>"
1560 GETY$:IFY$=""THEN1560
1570 IF Y$="N"THEN SYS RE:GOTO370
1580 IF Y$<>"Y"THEN1560
1590 PRINTTAB(16)"O.K."
1600 GOSUB1700:SYS RE:POKE1022,0:GOTO370
1610 :
1620 REM ****PRINT MEMORY USED****
1630 IF PEEK(1022)=0THENL=BA:GOTO1650
1640 L=PEEK(BA)+PEEK(BA+1)*256
1650 PRINTTAB(5)"NEXT SCREEN AT"L"($";
1660 L=L/4096:FORJ=1TO4:L%=L:L$=CHR$(48+L%-(L%>9)*7)
1670 PRINTL$;:L=16*(L-L%):NEXT:PRINT")":GOSUB 1700:SYS RE:GOTO370
1680 :
1690 REM *****WAIT FOR KEYPRESS****
1700 FORT=1TO500:NEXT:POKE198,0
1710 GETR$:IFR$=""THEN1710
1720 RETURN
1730 :
1740 REM *****DELETE SCREEN****
1750 X=3:Y=13:TX$="DELETE WHICH SCREEN(S) :":GOSUB2100
1760 A=VAL(A$):IF A=13 OR A=0 THEN SYSRE:GOTO370
1770 LA=LEN(A$):FORN=1TOLA:IF MID$(A$,N,1)="-"THEN1790
1780 NEXT:N1=A:N2=A:GOTO1820
1790 N1=VAL(MID$(A$,1,N-1))
1800 N2=VAL(MID$(A$,N+1,LEN(A$)-N))
1810 N=LA:IF N2=0THENN2=SN-1:REM "NUM-"
1820 FORN=N1TON2:A=N:GOSUB1510:POKE820,LB:POKE821,HB:SYSDS:NEXT:SYSRE:GOTO370
1828 :
1898 :
1899 REM ****READ DISK DIRECTORY*****
1900 OPEN1,8,0,"$"
1905 GET#1,Z$,Z$
1910 GET#1,Z$,Z$,Z$,Z$
1920 IF ST THEN CLOSE 1:GOSUB1700:GOTO370
1924 GET#1,Z$:IFZ$=""THENPRINT:GOTO1910
1930 IF Z$=CHR$(34)THENQ=NOT Q
1950 IF Q THEN PRINTZ$;
1960 GOTO 1924
1998 :
1999 REM ****GET NUMERIC INPUT*****
2000 POKE781,Y:POKE782,0:POKE783,0:SYS65520:POKEV+21,0:POKE650,0
2010 PRINT" ":TT$=""
2020 POKE781,Y:POKE782,X:POKE783,0:SYS65520:PRINTTX$;:IFF=1THENRETURN
2030 GETT$:IFT$=""THEN2030
2035 IF T$="←"THEN 2000
2040 IF ASC(T$)=13 THEN 2090
2060 IF ASC(T$)<48 OR ASC(T$)>57 THEN2030
2070 IF LEN(TT$)=6 THEN2000
2080 TT$=TT$+T$:PRINTT$;:GOTO2030
2090 S1=VAL(TT$):IF S1>255 OR S1<1 THEN2000
2093 S1$=STR$(S1):S2=LEN(S1$)-1:POKE650,128:RETURN
2098 :
2099 REM *****GET STRING INPUT******
2100 F=1:A$="":GOSUB 2000
2110 GETT$:IFT$=""THEN2110
2115 T=ASC(T$)
2120 IF T$="←" THEN 2100
2130 IF T=13 THEN F=0:POKE650,128:RETURN
2135 IF T>47 AND T<58 OR T$="-" THEN 2150
2140 GOTO2110
2150 A$=A$+T$:IFLEN(A$)<12THENPRINTT$;:GOTO2110
2160 GOTO2100
2198 :
2199 REM *****RENUMBER*****
2200 TX$="RENUMBER INCREMENT :":X=7:Y=13:GOSUB2000
2210 POKE695,S1:SYSRN:SYSRE:GOTO370
2298 :
2299 REM ****ALTER SCREEN NUMBER***
2300 TX$="TARGET SCREEN NUMBER :":X=5:Y=12:GOSUB2000:A=S1:GOSUB1510
2310 POKE 820,LB:POKE821,HB
2320 TX$="NEW SCREEN NUMBER :":X=5:Y=13:GOSUB2000:A=S1:GOSUB1510
2330 POKE 695,LB:POKE696,HB
2340 SYS AL:IF(PEEK(2)AND1)=0THENSYSRE:GOTO370
2350 SYSRE:GOTO820
2390 :
2391 REM ****PRINT CRSR CO-ORDS***
2400 A=1024+PEEK($02B2)+40*PEEK($02B3):GOSUB1510
2405 F=1:TX$="HB=":X=12:Y=12:GOSUB2000:PRINTHB;"LB=";LB
2410 GOSUB1700:SYSRE:F=0:GOTO370
: �"� SCREEN DESIGNER BY WILLIAM A CHRISTIE � J � A � 30,40 h A�1:�"CRUNCH/DECR.MC",8,1 � A�2:�"GETCHAR.MC",8,1 �( �55,190:�56,47:�:� END OF BASIC MEMORY=$3000-64 �2 V�53248:�2040,191:�650,128:�53280,6:�53281,0 7 �1022,0:� RESET SCREEN MEMORY / <