Tape Save — Maschinenprogramme einfach gespeichert
Der Save-Befehl des C 64 erlaubt es leider nicht, bestimmte Speicherbereiche und damit Maschinenprogramme abzuspeichern. Mit »Tape Save« können Sie dies sogar im Dialogverfahren und sowohl auf Diskette als auch auf Datasette.
Wer kennt das Problem nicht: Man hat einen DATA-Lader für ein Maschinenprogramm und kann das Programm wegen eines fehlenden Monitors nicht direkt abspeichern! Hier setzt nun unser Programm »Tape Save« ein, das es auch Anfängern ermöglicht, im Dialogverfahren Maschinenprogramme auf Kassette oder Diskette zu speichern.
»Tape Save« (siehe Listing) tippen Sie bitte mit dem MSE ab. Es kann dann mit »LOAD ”TAPE SAVE” ,1,1« beziehungsweise »..,8,1« geladen werden. Gestartet wird »Tape Save« mit SYS 49152. Vor dem Start müssen Sie noch NEW eingeben, um keinen »OUT OF MEMORY ERROR« zu erhalten.
Bedienungshinweise
Als erstes wird nach dem Namen des zu speichernden Programms gefragt. Der Computer akzeptiert höchstens 16 Zeichen, verlangt aber mindestens ein Zeichen, sonst wird die Eingabe abgelehnt. Danach gibt man Start- und Endadresse in hexadezimaler Form ein. Dabei erscheint allerdings kein Cursor, die eingetippten Werte werden aber angezeigt. Nach Eingabe der beiden vierstelligen Zahlen fährt das Programm mit der Frage nach der Nummer des Peripheriegerätes fort. Auch hier wird nur eine gültige Eingabe akzeptiert, wobei »1«für Datasette und »8« für das Diskettenlaufwerk einzugeben ist. Danach startet »Tape Save« den Speichervorgang. Nach dem Speichern ermöglicht es dann dem Benutzer, mittels der Funktionstasten den weiteren Programmablauf zu gestalten. Man kann den Speichervorgang wiederholen, das Programm abbrechen oder aber nochmals beginnen, um ein weiteres Programm zu speichern.
Hier noch einige wichtige Bedienungshinweise:
Diskettenbenutzer müssen aufpassen, wenn sie mit der Funktionstaste »F3« nochmals ohne Parameteränderung speichern wollen. Wurde die Diskette nicht gewechselt, erhält man einen »FILE EXISTS ERROR«, weil auch der Filename nicht geändert wird.
Der wichtigste Nachteil von »Tape Save« ist seine Lage im Speicher: Es liegt von $c000 bis $c369. Das bedeutet, daß Programme, die im $c-Bereich liegen, auch nichtvon »Tape Save« gespeichert werden können. Ebenso können keine Maschinensprache-Programme, die sich im Kassettenpuffer befinden, auf Kassette gespeichert werden. Hier ist nur die Speicherung auf Diskette möglich.
(Johannes Rest/bs)PROGRAMM : TAPE SAVE C000 C36A ----------------------------------- C000 : 4C C9 C0 54 41 50 45 20 D7 C008 : 53 41 56 45 20 56 31 2E 10 C010 : 30 28 43 29 20 42 59 20 04 C018 : 4A 4F 48 41 4E 4E 45 53 57 C020 : 20 52 45 53 54 46 49 4C 5A C028 : 45 4E 41 4D 45 3A 53 54 AA C030 : 41 52 54 41 44 52 45 53 6A C038 : 53 45 3A 45 4E 44 41 44 FA C040 : 52 45 53 53 45 3A 55 45 7A C048 : 42 45 52 54 52 41 47 55 43 C050 : 4E 47 20 42 45 45 4E 44 D2 C058 : 45 54 2E 47 45 52 41 45 B2 C060 : 54 45 41 44 52 45 53 53 73 C068 : 45 3A 46 31 20 2D 20 45 F9 C070 : 4E 44 45 46 33 20 2D 20 24 C078 : 43 4F 50 59 20 53 41 4D DE C080 : 45 20 46 49 4C 45 49 4E 41 C088 : 53 45 52 54 20 4E 45 57 D5 C090 : 20 44 49 53 4B 20 49 46 F7 C098 : 20 4E 45 43 45 53 53 41 58 C0A0 : 52 59 2E 46 35 20 2D 20 3D C0A8 : 43 4F 50 59 20 41 4E 4F B6 C0B0 : 54 48 45 52 20 46 49 4C B6 C0B8 : 45 12 3E 3E 3E 20 D2 45 18 C0C0 : 54 55 52 4E 20 3C 3C 3C 6B C0C8 : 92 20 44 E5 A9 0E 20 D2 69 C0D0 : FF A2 00 BD 03 C0 9D 00 85 C0D8 : 04 E0 0D F0 04 E8 4C D3 0E C0E0 : C0 A2 00 BD 11 C0 9D 28 87 C0E8 : 04 E0 13 F0 04 E8 4C E3 C0 C0F0 : C0 A2 00 BD 25 C0 9D A0 C9 C0F8 : 04 E0 08 F0 04 E8 4C F3 2D C100 : C0 A9 0A 85 D3 A9 04 85 6E C108 : D6 20 10 E5 A9 00 85 FB 58 C110 : 20 CF FF A6 FB C9 0D F0 11 C118 : 0D 9D D0 CF E0 0F F0 0D 86 C120 : E8 86 FB 4C 10 C1 E0 01 68 C128 : B0 03 4C 19 C1 86 B7 A2 05 C130 : 00 BD 2E C0 9D F0 04 E0 E6 C138 : 0C F0 04 E8 4C 31 C1 A9 83 C140 : 06 85 D6 A9 0E 85 D3 20 90 C148 : 10 E5 20 68 C1 A2 00 BD 0D C150 : 77 02 C9 00 F0 F9 C9 0D 5B C158 : F0 F0 9D FE 04 9D E4 CF 68 C160 : E8 E0 04 F0 6B 4C 4F C1 B1 C168 : A2 00 A9 00 9D 77 02 E8 E4 C170 : E0 05 D0 F8 85 C6 60 A9 89 C178 : 20 A2 00 9D FE 04 E8 E0 13 C180 : 05 D0 F8 60 C0 01 F0 05 19 C188 : A0 00 A2 01 60 A0 00 A2 41 C190 : 02 60 4C 67 C2 A2 00 BD 7F C198 : E4 CF C9 41 B0 0E C9 30 01 C1A0 : B0 03 4C 84 C1 C9 3A 90 EA C1A8 : 0A 4C A2 C1 C9 47 90 10 F2 C1B0 : 4C A2 C1 38 E9 30 95 FB 33 C1B8 : E0 03 F0 10 E8 4C 97 C1 2B C1C0 : C9 00 F0 EC 38 E9 37 95 3E C1C8 : FB 4C B8 C1 60 4C 4A C1 65 C1D0 : 20 68 C1 20 95 C1 E0 03 8A C1D8 : B0 04 E0 01 F0 EF A5 FB 00 C1E0 : 20 30 C2 18 65 FC 8D F8 32 C1E8 : CF A5 FD 20 30 C2 18 65 51 C1F0 : FE 8D F9 CF 4C F7 C1 A9 0C C1F8 : 06 85 D3 A9 07 85 D6 20 23 C200 : 10 E5 A2 00 BD 3B C0 9D 9F C208 : 18 05 E0 0A F0 04 E8 4C 88 C210 : 04 C2 20 68 C1 A2 00 BD 37 C218 : 77 02 C9 00 F0 F9 C9 0D 23 C220 : F0 F0 9D 24 05 9D E4 CF E5 C228 : E8 E0 04 F0 08 4C 17 C2 64 C230 : 0A 0A 0A 0A 60 20 68 C1 2F C238 : A0 01 20 95 C1 E0 02 F0 21 C240 : B6 A5 FB 20 30 C2 18 65 10 C248 : FC 8D FA CF A5 FD 20 30 EE C250 : C2 18 65 FE 8D FB CF A2 95 C258 : 00 BD 5B C0 9D 68 05 E0 19 C260 : 0E F0 04 E8 4C 59 C2 A2 E4 C268 : 00 86 FB A9 09 85 D6 A9 4B C270 : 10 85 D3 20 10 E5 20 CF 8C C278 : FF 85 FC A6 FB E0 01 F0 FA C280 : 05 E6 FB 4C 76 C2 AD 78 A6 C288 : 05 C9 31 F0 07 C9 38 F0 5E C290 : 03 4C 92 C1 38 E9 30 8D 45 C298 : FC CF A9 0E 85 D6 A9 00 5E C2A0 : 85 D3 20 10 E5 AE FC CF 80 C2A8 : 20 BA FF A2 D0 A0 CF A5 16 C2B0 : B7 20 BD FF AE F9 CF AC 3A C2B8 : F8 CF 86 FB 84 FC A9 FB 88 C2C0 : AE FB CF AC FA CF 20 D8 56 C2C8 : FF 20 44 E5 A2 00 BD 46 53 C2D0 : C0 9D 00 04 E8 E0 15 F0 AB C2D8 : 03 4C CE C2 A2 00 BD 6A 03 C2E0 : C0 9D 50 04 E8 E0 09 F0 9F C2E8 : 03 4C DE C2 A2 00 BD 73 29 C2F0 : C0 9D 78 04 E8 E0 13 F0 E1 C2F8 : 03 4C EE C2 A2 00 BD A3 9E C300 : C0 9D A0 04 E8 E0 16 F0 07 C308 : 03 4C FE C2 20 87 EA A5 7E C310 : CB C9 04 F0 0B C9 05 F0 D4 C318 : 0B C9 06 F0 0D 4C 0C C3 92 C320 : 20 44 E5 60 AD FC CF 4C 82 C328 : 2D C3 4C C9 C0 A2 00 C9 38 C330 : 01 F0 31 BD 86 C0 9D 18 C2 C338 : 05 E8 E0 1D F0 03 4C 33 4C C340 : C3 A9 0A 85 D6 20 10 E5 86 C348 : A2 00 BD B9 C0 20 D2 FF E9 C350 : E8 E0 10 F0 03 4C 4A C3 0E C358 : 20 87 EA A5 CB C9 01 F0 9C C360 : 03 4C 58 C3 A2 00 4C 9A A8 C368 : C2 C3 35