NomKasxilo
Priskribo de la ĉi-paĝa enhavo
Ilprogramo verkita en SuperBASIC por ĉifri tekstojn en programajn fontojn.
Etikedoj:
Ĉi malnova programo, verkita en SuperBASIC por la komputilo QL, havas ion originala en sia simpleco. Mi ĝin verkis por ĉifri miajn personajn datenojn en la fontkodon de Finen per Imago. Mi elpensis ĉifradon simplan sed sufiĉan: ĉiu leterŝanĝo dependas de la leterpozicio en la teksto; la taskon faras la funkcion fórmula()
.
La fonktkodo estas en la hispana kaj la interfaco estas en Esperanto.
Ekranfotoj
La ĉifrotan tekston oni tajpas en kadro:
Post la ĉifrado, la programo proponas tri manierojn registri la rezulton:
Se la teksto malplenas, la programo finiĝas kun la informo pri la dosiero enhavanta la rezulton:
Fontkodo
1000 REMark NomKasxilo
1010 :
1020 REMark Cifra textos para ocultar los créditos de programas compilados
1030 :
1040 REMark Copyright (C) 1989,1992 Marcos Cruz (http://programandala.net)
1050 REMark Licencia/Permesilo/License:
1060 REMark http://programandala.net/licencia
1070 :
1080 :
1090 REMark 1989-12-20 Versión 0.00
1100 REMark 1992-01-07 Versión 1.00
1110 REMark 2010-08-20 Pequeños cambios cosméticos en la fuente.
1120 :
1130 fichero$="ram1_nomkasxilo_txt"
1140 d%=FOP_OVER(fichero$)
1150 IF d%<0:trata_error(d%)
1160 :
1170 REPeat bucle
1180 :
1190 x%=FOP_OVER(scr_512x256a0x0)
1200 IF x%<0:trata_error(x%)
1210 PAPER#x%,0
1220 CLS#x%
1230 CLOSE#x%
1240 :
1250 f%=FOP_OVER(con_512x256a0x0)
1260 IF f%<0:trata_error(f%)
1270 BORDER#f%,1,7,2
1280 PAPER#f%,2
1290 INK#f%,7
1300 CLS#f%
1310 AT#f%,2,2
1320 CSIZE#f%,2,1
1330 PRINT#f%,"NomKasxilo v1.00"
1340 CSIZE#f%,0,0
1350 AT#f%,2,40
1360 PRINT#f%,"(C) 1989,1992 Marcos Cruz"
1370 AT#f%,3,40
1380 INK#f%,4
1390 PRINT#f%,"http://programandala.net"
1400 INK#f%,7
1410 CSIZE#f%,1,1
1420 AT#f%,3,2
1430 PRINT#f%,"Teksto:"
1440 :
1450 REMark Ventana de entrada:
1460 t%=FOP_OVER(con_347x120a18x85)
1470 IF t%<0:trata_error(t%)
1480 PAPER#t%,4
1490 INK#t%,0
1500 CLS#t%
1510 BORDER#t%,2
1520 CSIZE#t%,1,0
1530 INPUT#t%,texto$
1540 IF NOT LEN(texto$):EXIT bucle
1550 :
1560 REMark Ventana de listado:
1570 l%=FOP_OVER(scr_120x120a372x85)
1580 IF l%<0:trata_error(l%)
1590 PAPER#l%,0
1600 INK#l%,7
1610 CLS#l%
1620 BORDER#l%,1,7
1630 PRINT#l%," CXIFRADO"
1640 CLOSE#l%
1650 l%=FOP_OVER(scr_110x105a381x98)
1660 IF l%<0:trata_error(l%)
1670 PAPER#l%,0
1680 INK#l%,7
1690 CLS#l%
1700 texto_cifrado$=cifrado$(texto$,l%)
1710 INK#t%,7
1720 PRINT#t%,texto_cifrado$
1730 INK#t%,0
1740 PRINT#t%,cifrado$(texto_cifrado$,l%)
1750 :
1760 e%=FOP_OVER(con_477x42a18x210)
1770 IF e%<0:trata_error(e%)
1780 INK#e%,0
1790 PAPER#e%,7
1800 CLS#e%
1810 :
1820 PRINT#e%," 1 = registri kiel linion REMark por enmeti en BASIC-programon"
1830 PRINT#e%," 2 = registri kiel linion DEFM por enmeti en Z80-programon"
1840 PRINT#e%," 3 = registri kiel bajtaron"
1850 opción$=""
1860 REPeat pide_opción
1870 AT#e%,3,1
1880 CLS#e%,4
1890 INPUT#e%,"Elektu:"!opción$
1900 IF LEN(opción$) AND opción$ INSTR "123":EXIT pide_opción
1910 END REPeat pide_opción
1920 opción=opción$
1930 SELect opción
1940 =1
1950 PRINT#d%,"1 REMark "&texto_cifrado$
1960 =2
1970 PRINT#d%," DEFM "&'"'&texto_cifrado$&'"'
1980 =3
1990 PRINT#d%,texto_cifrado$
2000 END SELect
2010 :
2020 END REPeat bucle
2030 :
2040 AT#f%,2,2
2050 CLS#f%,2
2060 CSIZE#f%,2,1
2070 AT#f%,6,18
2080 PRINT#f%,"FINO"
2090 CLOSE#d%
2100 IF FLEN(\fichero$)
2110 CSIZE#f%,1,1
2120 AT#f%,8,4
2130 PRINT#f%,"La rezulto trovigxas en la dosiero"!fichero$
2140 ELSE
2150 DELETE ram1_nomkasxilo_txt
2160 END IF
2170 CLOSE
2180 STOP
2190 :
2200 DEFine FuNction cifrado$(t$,corriente%)
2210 resultado$=""
2220 FOR carácter=1 TO LEN(t$)
2230 carácter_cifrado$=fórmula$(t$(carácter),carácter)
2240 resultado$=resultado$&carácter_cifrado$
2250 PRINT#corriente%,t$(carácter)!"="!CODE(t$(carácter)),"→"!carácter_cifrado$!"="!CODE(carácter_cifrado$)
2260 END FOR carácter
2270 RETurn resultado$
2280 END DEFine cifrado$
2290 :
2300 DEFine FuNction fórmula$(carácter$,posición%)
2310 RETurn CHR$(CODE(carácter$)^^255^^(LEN(texto$)-posición%+1))
2320 END DEFine fórmula$
2330 :
2340 DEFine PROCedure trata_error(n_error%)
2350 REPORT n_error%
2360 CLOSE
2370 STOP
2380 END DEFine trata_error
2390 :
2400 DEFine PROCedure s
2410 SAVE_O NomKasxilo_bas
2420 SAVE_O NomKasxilo_bak
2430 END DEFine s