home *** CD-ROM | disk | FTP | other *** search
Wrap
10 REM ********************** 20 REM * COMMAND.CHANGER * 30 REM * DI JAMES PATRIDGE * 40 REM * COPYRIGHT (C) 1988 * 50 REM * BY APPLICANDO & * 60 REM * MICROSPARC, INC * 70 REM ********************** 80 CLEAR : TEXT 90 D$ = CHR$(4) 100 DIM NC$(28),CC$(29),SC$(28),IN(28),CS$(28) 110 GOSUB 920 120 REM : FORMATTA IL DISPLAY 130 HOME 140 D1$ = "<< ATTUALI COMANDI >>" 150 X = LEN(D1$)/2 160 PRINT TAB( 20 -X)D1$ 170 FOR I = 0 TO 39: PRINT "-";: NEXT I 180 PRINT 190 FOR I = 1 TO 28 200 IF I >14 THEN HTAB 25 210 IF I <15 THEN HTAB 5 220 IF IN(I) >0 THEN INVERSE 230 PRINT CC$(I) 240 NORMAL 250 IF I = 14 THEN VTAB 3: PRINT 260 NEXT I 270 PRINT 280 FOR I = 0 TO 39: PRINT "-";: NEXT I 290 VTAB 4 300 FOR I = 1 TO 28 310 IF I >14 THEN HTAB 20 320 IF I <10 THEN HTAB 2 330 PRINT I")" 340 IF I = 14 THEN VTAB 4 350 NEXT I 360 PRINT 370 PRINT 380 PRINT "S= STANDARD";: HTAB 20: PRINT "BYTE LIBERI ="FC 390 PRINT "<M> MENU' ";: HTAB 20: PRINT "<R> RIMPIAZZA" 400 VTAB 23: HTAB 10: CALL -958: INPUT "SCELTA => ";CH$ 410 CH = VAL(CH$) 420 ONERR GOTO 1610 430 IF CH$ = "M" THEN PRINT D$;"RUN DOS.DESIGNER" 440 POKE 216,0 450 IF CH$ = "R" THEN GOTO 1070 460 IF CH$ = "S" THEN GOTO 1020 470 IF CH <1 OR CH >28 THEN VTAB 23: CALL -1052: GOTO 400 480 REM : 490 REM : SCALA DEI BYTE 500 REM : FORMATTAZIONE MODIFICA 510 REM : 520 N1$ = "000000000111111":N2$ = "123456789012345" 530 HOME 540 D1$ = "<< CAMBIA COMANDI DOS >>" 550 PRINT TAB( 20 -X)D1$ 560 PRINT : PRINT 570 D3$ = " CHR$ LIBERI => " 580 FOR I = 0 TO 39: PRINT "%";: NEXT I 590 PRINT 600 INVERSE 610 HTAB 20: PRINT N1$ 620 HTAB 20: PRINT N2$ 630 NORMAL 640 VTAB 22: INVERSE : HTAB 5: PRINT " COMANDO DOS STANDARD => "SC$(CH)" " 650 NORMAL 660 VTAB 8: PRINT "ATTUALE COMANDO => "CC$(CH) 670 PRINT : VTAB 8: HTAB (20 + LEN(CC$(CH))): INVERSE : PRINT "<": NORMAL 680 VTAB 9: HTAB 20: FOR I = 1 TO 15: PRINT "-";: NEXT I 690 VTAB 10: CALL -868: HTAB (20 + LEN(CC$(CH))) +FC: IF LEN(CC$(CH)) +(FC +20) >34 THEN HTAB 35 700 VTAB 10: INVERSE : PRINT "<": NORMAL 710 VTAB 10: HTAB 5: INPUT "NUOVO COMANDO => ";NC$(CH) 720 IF NC$(CH) = "" THEN GOTO 120 730 IF LEN(NC$(CH)) <2 THEN PRINT : PRINT "NUOVO COMANDO DI ALMENO 2 CARATTERI": CALL -1052: FOR I = 1 TO 2000: NEXT I: VTAB 12: CALL -868: GOTO 690 740 IF LEN(NC$(CH)) > LEN(CC$(CH)) +FC THEN PRINT : PRINT "COMANDO DEV'ESSERE =< " LEN(CC$(CH)) +FC" CARATTERI": CALL -1052: FOR I = 1 TO 2000: NEXT I: VTAB 12: CALL -868: GOTO 690 750 IF LEN(NC$(CH)) >15 THEN PRINT : PRINT "LUNGHEZZA MASSIMA COMANDO 15 CARATTERI": CALL -1052: FOR I = 1 TO 2000: NEXT I: VTAB 12: CALL -868: GOTO 690 760 IF LEN(CC$(CH)) > LEN(NC$(CH)) THEN FC = FC +( LEN(CC$(CH)) - LEN(NC$(CH))): GOTO 850 770 REM : 780 REM : RIPRISTINA I BYTE LIBERI 790 REM : 800 FC = FC -( LEN(NC$(CH)) - LEN(CC$(CH))) 810 REM : 820 REM : IMPOSTA IL NUOVO COMANDO SULLA 830 REM : VISUALIZZAZIONE IN INVERSE 840 REM : 850 CC$(CH) = NC$(CH):IN(CH) = 1 860 HOME : GOTO 120 870 REM : 880 REM : IMPOSTA I COMANDI STANDARD 890 REM : LEGGE I COMANDI ATTUALI 900 REM : DALL'IMMAGINE RAM DEL DOS 910 REM : 920 FOR I = 1 TO 28: READ SC$(I): NEXT I 930 FOR I = 1 TO 20:IN(I) = 0: NEXT I 940 I = 1:FC = 0 950 FOR SA = 43140 TO 43271 960 A$ = CHR$( PEEK(SA)) 970 CC$(I) = CC$(I) +A$ 980 IF ASC(A$) >128 THEN I = I +1 990 IF ASC(A$) = 0 THEN FC = FC +1 1000 NEXT SA 1010 RETURN 1020 RESTORE : FOR I = 1 TO 28: READ CC$(I):IN(I) = 0: NEXT I:FC = 0: GOTO 120 1030 REM : 1040 REM : POKE DELLA NUOVA TAVOLA IN 1050 REM : MEMORIA. 1060 REM : 1070 VTAB 22: HTAB 20: FLASH : PRINT "STO RIMPIAZZANDO": NORMAL 1080 FOR I = 1 TO 28 1090 FOR J = 1 TO LEN(CC$(I)) -1 1100 CS$ = CS$ + MID$ (CC$(I),J,1) 1110 NEXT J 1120 X = ASC( RIGHT$(CC$(I),1)) 1130 IF X >128 THEN GOTO 1150 1140 X = X +128 1150 CS$ = CS$ + CHR$(X) 1160 NEXT I 1170 IF LEN(CS$) <133 THEN CS$ = CS$ + CHR$(0): GOTO 1170 1180 FOR I = 1 TO 132 1190 POKE 43139 +I, ASC( MID$ (CS$,I,1)) 1200 NEXT I 1210 CS$ = "" 1220 VTAB 22: CALL -868: PRINT : INPUT "SALVI LE MODIFICHE COME FILE DI TESTO? (S/N) =>";AN$ 1230 IF LEFT$(AN$,1) = "S" THEN GOSUB 1290 1240 VTAB 23: CALL -868: INVERSE : PRINT "ATTENDI,";: NORMAL : PRINT " STO PULENDO LA MEMORIA " 1250 GOTO 80 1260 REM : 1270 REM : SALVA LE MODIFICHE IN UN FILE DI TESTO 1280 REM : 1290 HOME : VTAB 3: PRINT "<< CREA UN FILE DI TESTO DELLE MODIFICHEDEI COMANDI >>" 1300 PRINT : FOR I = 0 TO 39: PRINT "%";: NEXT I 1310 VTAB 10: INPUT "IMMETTI NOME FILE => ";NA$: CALL -958 1320 IF NA$ = "" THEN CALL -1052: PRINT "NOME DI FILE ILLEGALE !": GOTO 1310 1330 IF LEN(NA$) >30 OR ASC( LEFT$(NA$,1)) <65 OR ASC( LEFT$(NA$,1)) >90 THEN CALL -1052: PRINT "NOME DI FILE ILLEGALE !": GOTO 1310 1340 VTAB 12: INPUT "IMMETTI N. LINEA INIZIALE => ";SL$: CALL -958 1350 SL = VAL(SL$) 1360 IF SL <1 OR SL >63999 THEN CALL -1052: PRINT "NUMERO DI LINEA ILLEGALE !": GOTO 1340 1370 VTAB 10: CALL -958: INVERSE : PRINT "ATTUALI PARAMETRI : ": NORMAL 1380 PRINT : PRINT "NOME FILE DI TESTO => ";NA$: PRINT : PRINT "NUMERO DI LINEA INIZIALE => ";SL 1390 PRINT : INPUT "VERIFICHI I PARAMETRI? (S/N) => ";A$ 1400 IF LEFT$(A$,1) < >"S" THEN GOTO 1290 1410 PRINT D$;"MON C,I,O" 1420 PRINT D$;"OPEN"NA$ 1430 PRINT D$;"DELETE"NA$ 1440 PRINT D$;"OPEN"NA$ 1450 PRINT D$;"WRITE"NA$ 1460 FOR SA = 43140 TO 43271 1470 C = C +1 1480 IF C = 10 THEN C = 1 1490 IF C < >1 THEN 1530 1500 PRINT 1510 PRINT SL; 1520 SL = SL +1 1530 PRINT " POKE ";SA;", "; PEEK(SA);" :"; 1540 NEXT SA 1550 PRINT 1560 PRINT D$;"CLOSE"NA$ 1570 PRINT D$;"NOMONC,I,O": VTAB PEEK(37): CALL -868 1580 RETURN 1590 DATA INIT,LOAD,SAVE,RUN,CHAIN,DELETE,LOCK,UNLOCK,CLOSE,READ,EXEC,WRITE,POSITION,OPEN,APPEND 1600 DATA RENAME,CATALOG,MON,NOMON,PR#,IN#,MAXFILES,FP,INT,BSAVE,BLOAD,BRUN,VERIFY 1610 IF PEEK(222) = 6 THEN HOME : VTAB 12: PRINT "INSERISCI IL DISCO DOS.DESIGNER E PREMI UN TASTO": WAIT -16384,128: POKE -16368,0: GOTO 430 1620 HOME : VTAB 12: PRINT "ERRORE N. "; PEEK(222);" A LINEA "; PEEK(218) + PEEK(219) *256