Benutzer:Mstma/svicc
Aus C64-Wiki
Zur Navigation springenZur Suche springen
Das folgende G-Pascal-Programm wandelt Textdateien, die mit SVICC (Small VI Clone for Commodore) erstellt wurden, in ASCII um. Das Dateiende wird mit einem @-Zeichen ($40) markiert. Je nach Betriebssystem, für den der Text umgewandelt wird, kann es noch nötig sein, dass Zeilenende ($0d) zu konvertieren.
Beispiel[Bearbeiten | Quelltext bearbeiten]
Der Text in SVICC:
Ein kurzer Text, der in SVICC erstellt wurde und nach der Umwandlung in ASCII z.B. auf dem Mac verwendbar ist. @
Hexdump der SVICC-Datei:
0000 c5 49 4e 20 4b 55 52 5a 45 52 20 d4 45 58 54 2c |.IN KURZER .EXT,| 0010 20 44 45 52 20 49 4e 20 d3 d6 c9 c3 c3 20 45 52 | DER IN ..... ER| 0020 53 54 45 4c 4c 54 0d 57 55 52 44 45 20 55 4e 44 |STELLT.WURDE UND| 0030 20 4e 41 43 48 20 44 45 52 20 d5 4d 57 41 4e 44 | NACH DER .MWAND| 0040 4c 55 4e 47 20 49 4e 20 c1 d3 c3 c9 c9 0d 5a 2e |LUNG IN ......Z.| 0050 c2 2e 20 41 55 46 20 44 45 4d 20 cd 41 43 20 56 |.. AUF DEM .AC V| 0060 45 52 57 45 4e 44 42 41 52 20 49 53 54 2e 0d 40 |ERWENDBAR IST..@| 0070 0d |.|
Hexdump der umgewandelten Datei:
0000 45 69 6e 20 6b 75 72 7a 65 72 20 54 65 78 74 2c |Ein kurzer Text,| 0010 20 64 65 72 20 69 6e 20 53 56 49 43 43 20 65 72 | der in SVICC er| 0020 73 74 65 6c 6c 74 0d 77 75 72 64 65 20 75 6e 64 |stellt.wurde und| 0030 20 6e 61 63 68 20 64 65 72 20 55 6d 77 61 6e 64 | nach der Umwand| 0040 6c 75 6e 67 20 69 6e 20 41 53 43 49 49 0d 7a 2e |lung in ASCII.z.| 0050 42 2e 20 61 75 66 20 64 65 6d 20 4d 61 63 20 76 |B. auf dem Mac v| 0060 65 72 77 65 6e 64 62 61 72 20 69 73 74 2e 0d |erwendbar ist..|
Quelltext[Bearbeiten | Quelltext bearbeiten]
var in, out: char ; j: integer ; begin open (1,8,0,"kurzertext"); open (2,8,1,"out.txt"); j := 0 ; repeat get (1); read (in); get (0); if in <> 64 then begin (* Grossbuchstaben *) (* $c1...$da - $80 = $41...$5a *) if (in >= 193) and (in <= 218) then out := in - 128 else (* Kleinbuchstaben *) (* $41...$5a + $20 = $61...$7a *) if (in >= 65) and (in <= 90) then out := in + 32 else out := in; put (2); write (chr (out)); put (0); (* Fortschrittsanzeige *) j := j + 1 ; if j mod 10 = 0 then write (".") ; end ; until in = 64; close (1); close (2); writeln ; writeln (j, " Bytes gelesen") ; end .