f16
Priskribo de la ĉi-paĝa enhavo
Programo verkita en SuperBASIC por Sinclair QL. Ĝi kreas tekstan dosieron el fontkoda dosiero kiu uzas la blokan formaton originalan de la programlingvo Forth.
Etikedoj:
Fontkodo
1000 REMark f16
1010 :
1020 REMark Copyright (C) 1992, 1994 Marcos Cruz (http://programandala.net)
1025 REMark Permesilo/Licencia/License: http://programandala.net/license
1030 :
1040 REMark Konstruas tekston
1050 REMark el tradicia ekrandosiero
1060 REMark de la lingvo Forth
1070 :
1080 REMark versioj:
1090 REMark 1.00 1992 06 05
1100 REMark 1.01 1994 08
1110 REMark - CLOSE anstataw CLOSE#ef
1120 REMark por finfermi, cxar alie
1130 REMark restis fajlo nefermita
1140 REMark - La fajlnomo de la programo
1150 REMark inkludas la version, kaj
1160 REMark la programo Savu registras
1170 REMark sur la uzatan diskilon, ne
1180 REMark nepre sur flp2_
1190 REMark - Nova awtortitolo
1200 REMark - CLOSE#3 kaj CLOSE#4
1210 REMark post cxiu laborbuklo
1220 REMark - CURSEN kaj CURDIS anstataw
1230 REMark CURSOR_ON kaj CURSOR_OFF
1240 REMark - ef=5 anstataw ef=3
1250 :
1260 versio$="1.01"
1270 nullinio$=" ":REMark 16
1280 nullinio$=nullinio$&nullinio$
1290 nullinio$=nullinio$&nullinio$
1300 ef=5
1310 :
1320 REMark subfenestro:
1330 MODE 4
1340 WINDOW#2,512,256,0,0
1350 PAPER#2,0
1360 BORDER#2
1370 CLS#2
1380 :
1390 REMark listfenestro:
1400 WINDOW 512,150,0,0
1410 PAPER 0
1420 INK 4
1430 BORDER 4,0
1440 :
1450 REMark ordonfenestro:
1460 WINDOW#0,512,70,0,186
1470 PAPER#0,0
1480 INK#0,4
1490 BORDER#0,2,4,7
1500 :
1510 REMark erarkontrolo
1520 :
1530 REPeat cxefbuklo
1540 :
1550 titolo
1560 REPeat malfermu_1
1570 INPUT#0,"Disko kaj nomo de la ekrandosiero de Forth:",a$
1580 IF a$="":EXIT cxefbuklo
1590 stato=FTEST(a$)
1600 SELect ON stato
1610 =-7,-9,-12,-16
1620 REPORT stato
1630 =REMAINDER
1640 OPEN_IN#3,a$
1650 EXIT malfermu_1
1660 END SELect
1670 END REPeat malfermu_1
1680 :
1690 REPeat malfermu_2
1700 INPUT#0,"Disko kaj nomo de la nova tekstdosiero:",,b$
1710 IF b$="":EXIT cxefbuklo
1720 stato=FTEST(b$)
1730 SELect ON stato
1740 =-8,-9,-11,-12,-16,-20
1750 REPORT stato
1760 =REMAINDER
1770 OPEN_NEW#4,b$
1780 EXIT malfermu_2
1790 END SELect
1800 END REPeat malfermu_2
1810 :
1820 PRINT#0,"Mi laboras..."
1830 REPeat buklo
1840 IF EOF(#3):EXIT buklo
1850 linio$=nurteksto$(INPUT$(#3,64))
1860 IF LEN(linio$)
1870 PRINT linio$
1880 PRINT#4,linio$
1890 END IF
1900 END REPeat buklo
1910 CLOSE#3:CLOSE#4
1920 :
1930 END REPeat cxefbuklo
1940 :
1950 fino
1960 :
1970 DEFine PROCedure fino
1980 REMark CLOSE#ef
1990 CLOSE
2000 BORDER#0
2010 WMON
2020 STOP
2030 END DEFine fino
2040 :
2050 DEFine PROCedure titolo
2060 CSIZE#0,1,0
2070 PRINT#0,"F16"!versio$
2080 PRINT#0,"(k) Marcos Cruz, 1992, 1994"
2090 CSIZE#0,0,0
2100 PRINT#0
2110 END DEFine titolo
2120 :
2130 DEFine FuNction nurteksto$(teksto$)
2140 FOR litero=64 TO 1 STEP -1
2150 IF teksto$(litero)<>" "
2160 litero=litero+1
2170 EXIT litero
2180 END IF
2190 END FOR litero
2200 RETurn teksto$(1 TO litero-1)
2210 END DEFine nurteksto$
2220 :
2230 DEFine PROCedure erarkontrolo
2240 WHEN ERRor
2250 OPEN#ef,con_512x25a0x156
2260 BORDER#ef,2,7
2270 CLS#ef
2280 fini=0
2290 reprovi=0
2300 eraro=ERNUM
2310 SELect ON eraro
2320 =-7
2330 REMark ne trovita
2340 PRINT#ef,"dosiero ne trovita"
2350 reprovi=1
2360 =-8
2370 REMark jam ekzistas
2380 PRINT#ef,"tiu dosiero jam ekzistas"
2390 reprovi=1
2400 =-9
2410 REMark uzata
2420 PRINT#ef,"tiu jam uzatas"
2430 reprovi=1
2440 =-11
2450 REMark plena disko
2460 PRINT#ef,"la disko tutplenas"
2470 fini=1
2480 =-12
2490 REMark negxusta nomo
2500 PRINT#ef,"la dosiernomo ne gxustas"
2510 reprovi=1
2520 =-16
2530 REMark difektita storo
2540 PRINT#ef,"la storilo estas difektita"
2550 fini=1
2560 =-20
2570 REMark nur legebla
2580 PRINT#ef,"storilo nur legebla"
2590 reprovi=1
2600 =REMAINDER
2610 REPORT#ef
2620 fini=1
2630 END SELect
2640 IF fini
2650 PRINT#ef,"Premu klavon por fini ";
2660 REMark CURSEN#ef
2670 REMark PAUSE#ef,-1
2680 REMark CURDIS#ef
2685 PAUSE -1
2690 CLOSE
2700 STOP
2710 END IF
2720 IF reprovi
2730 PRINT#ef,"Premu klavon por reprovi ";
2740 REMark CURSEN#ef
2750 REMark PAUSE -1
2760 REMark CURDIS#ef
2765 PAUSE -1
2770 BORDER#ef
2780 CLS#ef
2790 RETRY ERLIN
2800 END IF
2810 END WHEN
2820 END DEFine erarkontrolo
2830 :
2840 DEFine PROCedure savu
2850 SAVE_O "f16_"&versio$&"_bas"
2860 SAVE_O "f16_"&versio$&"_bas!"
2870 END DEFine savu