TSB Tipps

Aus C64-Wiki
Zur Navigation springenZur Suche springen

TSB Vektoren, Befehle und Adressen[Bearbeiten | Quelltext bearbeiten]

TSB wird zur Zeit noch ständig weiterentwickelt. Dadurch ändern sich auch immer wieder Vektoren oder Befehls-Einsprungadressen. Die TSB-Programme in den beiden folgenden Abschnitten zeigen den aktuellen Stand.

Vektoren[Bearbeiten | Quelltext bearbeiten]

Ausgabe der TSB-Vektoren auf dem Bildschirm:

100 PRINT:RETRACE:PRINT:PRINT
110 V=$0300-2: CSET0
120 LOOP
130 : V=V+2
140 : IF V=$030C THEN V=$0314
150 : IF V=$031A THEN V=$0330
160 : PRINT "$"$$V"-$"$$(V+1);": ";
170 : PRINT "$"$$(D!PEEK(V))
190 : EXIT IF V=$0332
200 END LOOP

Beispiel:

AD86
2.21026

$0300-$0301: $9E9F
$0302-$0303: $825B
$0304-$0305: $8233
$0306-$0307: $823F
$0308-$0309: $917C
$030A-$030B: $8C7F
$0314-$0315: $969E
$0316-$0317: $8313
$0318-$0319: $82F9
$0330-$0331: $8BE7
$0332-$0333: $8BF8


Befehle und Adressen[Bearbeiten | Quelltext bearbeiten]

Das folgende Programm gibt die TSB-Schlüsselwörter und ihre Adressen auf dem Bildschirm und dem Drucker aus. Die Werte B (Befehlstabelle) und A (Adressen der Befehle) in Zeile 130 müssen eventuell angepasst werden. Der folgende Code ist für TSB Versionen ab 2.20806 anwendbar.

50 OPEN 4,4: CMD4: RETRACE
60 PRINT#4: PRINT#4: CLOSE4
100 OPEN 4,4
110 PRINT#4,"TSB  BEFEHLSTABELLE "
120 PRINT#4,"--------------------"
130 B=$83DF:A=$86C3
140 SA$=DUP(" ",10):S2$=DUP(" ",2)
150 FOR I=1 TO 127
160 : USE "###  ",I;
170 : USE#4,"###  ",I;
180 : REM BEFEHLE
190 : T$=""
200 : REPEAT
210 :   T=PEEK(B)
220 :   T$=T$+CHR$(T AND 127)
230 :   B=B+1
240 : UNTIL T>127
250 : L=10-LEN(T$):D$=DUP(" ",L)+"$"
260 : PRINT T$;D$;:PRINT#4,T$;D$;
270 : REM STARTADRESSE HEX
280 : AL=PEEK(A):AH=PEEK(A+1)
290 : AD=AH*256+AL+1
300 : PRINT $$AD:PRINT#4,$$AD
310 : A=A+2
320 NEXT
330 PRINT#4:CLOSE4

Beispiel der Druckausgabe:

AD86
2.30117

TSB  BEFEHLSTABELLE 
--------------------
  1  HIRES     $9208
  2  PLOT      $9265
  3  LINE      $934C
  4  BLOCK     $BBCE
  5  FCHR      $AC5F
  6  FCOL      $AC5F
  7  FILL      $AC5F
  8  REC       $BAF8
  9  ROT       $A160
 10  DRAW      $A059
 11  CHAR      $A192
 12  HI COL    $A272
 13  INV       $AC5F
 14  FRAC      $9E9D
 15  MOVE      $AC5F
 16  PLACE     $CCD1
 17  UPB       $AC5F
 18  UPW       $AC5F
 19  LEFTW     $AC5F
 20  LEFTB     $AC5F
 21  DOWNB     $AC5F
 22  DOWNW     $AC5F
 23  RIGHTB    $AC5F
 24  RIGHTW    $AC5F
 25  MULTI     $94EE
 26  COLOUR    $952F
 27  MMOB      $95CD
 28  BFLASH    $966C
 29  MOB SET   $96DE
 30  MUSIC     $975F
 31  FLASH     $978E
 32  REPEAT    $9AF8
 33  PLAY      $9905
 34  DO        $B573
 35  CENTRE    $9945
 36  ENVELOPE  $9981
 37  CGOTO     $99D2
 38  WAVE      $99E1
 39  FETCH     $B007
 40  AT(       $B8B4
 41  UNTIL     $9B19
 42  >         $9E9D
 43  >         $9E9D
 44  USE       $820B
 45  >         $9E9D
 46  GLOBAL    $A343
 47  >         $9E9D
 48  RESET     $9C03
 49  PROC      $9E38
 50  CALL      $9C66
 51  EXEC      $9C36
 52  END PROC  $9D13
 53  EXIT      $9D31
 54  END LOOP  $C96F
 55  ON KEY    $9D77
 56  DISABLE   $9D6F
 57  RESUME    $9DFC
 58  LOOP      $9E5A
 59  DELAY     $C938
 60  CLS       $81C0
 61  >         $9E9D
 62  >         $9E9D
 63  >         $9E9D
 64  SECURE    $C941
 65  DISAPA    $9759
 66  CIRCLE    $9492
 67  ON ERROR  $9E76
 68  NO ERROR  $9E98
 69  LOCAL     $A301
 70  RCOMP     $9F21
 71  ELSE      $A2C8
 72  RETRACE   $9B47
 73  TRACE     $9B59
 74  DIR       $9546
 75  PAGE      $98EB
 76  DUMP      $9F50
 77  FIND      $A59D
 78  OPTION    $9B62
 79  AUTO      $9BD4
 80  OLD       $9EDC
 81  JOY       $9E9D
 82  MOD       $BFE3
 83  DIV       $81C0
 84  D!        $B8EA
 85  DUP       $B7B8
 86  INKEY     $9E9D
 87  INST      $CA09
 88  TEST      $9E9D
 89  LIN       $C83C
 90  EXOR      $9E9D
 91  INSERT    $AF44
 92  POT       $9E9D
 93  PENX      $9E9D
 94  >         $9E9D
 95  PENY      $9E9D
 96  SOUND     $864D
 97  GRAPHICS  $8BCF
 98  DESIGN    $A634
 99  RLOCMOB   $A764
100  CMOB      $A79D
101  BCKGNDS   $A7AC
102  PAUSE     $A7DC
103  NRM       $A82C
104  MOB       $A851
105  OFF       $A876
106  ANGL      $AB16
107  ARC       $A88C
108  COLD      $8147
109  SCRSV     $B1A5
110  SCRLD     $B191
111  TEXT      $B22A
112  CSET      $B321
113  VOL       $B34F
114  DISK      $B358
115  HRDCPY    $B4D3
116  KEY       $B586
117  PAINT     $B605
118  LOW COL   $93DE
119  COPY      $BA03
120  MERGE     $8337
121  RENUMBER  $8371
122  MEM       $BDA6
123  DETECT    $BDEF
124  CHECK     $A27A
125  DISPLAY   $BDFE
126  ERR       $BFBA
127  OUT       $9ED3

Die zusätzlichen Befehle des TSB[Bearbeiten | Quelltext bearbeiten]

TSB ist eine Verbesserung und Erweiterung von Simon's Basic. Wie war es möglich, in eine komplette BASIC-Erweiterung über 30 neue Befehle und Funktionen einzubauen? Das ist auf verschiedene Weisen realisiert worden:

  • Zusätzlichen Speicherbereich nutzen: $C400-$C4FF, $C750-$CAA8, $CC00-$CFFF
  • Bestehende Programmteile kürzer fassen (optimieren)
  • Bestehende Funktion zusätzlich als Befehl bzw. Befehl zusätzlich als Funktion (oder auch als weiteren Befehl) nutzen
  • Als Befehl spezielle Token verwenden, die als nicht benutzbar gekennzeichnet waren
  • Neue Befehle bzw. Funktionen durch Zusammensetzen bestehender Befehle/Funktionen generieren

Eine Übersicht der neuen Befehle und Funktionen nach Art ihrer Implementierung:

Token Name Verwendung
Mehfache Nutzung:
$64 $28 AT Funktion + Befehl
$64 $7c CHECK Funktion + Befehl
$64 $7d DISPLAY Befehl+ Systemvariable
$64 $53 DIV Funktion + Befehl
$64 $55 DUP Funktion + Befehl
$64 $61 GRAPHICS Systemkonstante + Befehl
$64 $5B INSERT Funktion + Befehl
$64 $57 INST Funktion + Befehl
$64 $59 LIN Systemvariable + Befehl
$64 $52 MOD Funktion + Befehl
$64 $67 NRM Befehl + Funktion
$64 $10 PLACE Funktion + Befehl
$64 $60 SOUND Systemkonstante + Befehl
$64 $2C USE Befehl + Befehl <const>
Nutzung spezieller Token:
$64 $B3 CLS +Befehl
$64 $54 D! +Befehl
$64 $22 DO +Befehl
$64 $22 DONE +Befehl
$64 $22 DO NULL +Befehl
Zusammengesetzt:
$64 $54 $C2 D!PEEK +Funktion
$64 $7E $B0 ERROR Funktion + Operator
$64 $7A $9A MEMCONT +Befehl
$64 $7A $96 MEMDEF +Befehl
$64 $7A $C3 MEMLEN +Befehl
$64 $7A $93 MEMLOAD +Befehl
$64 $7A $B0 MEMOR +Befehl
$64 $7A $C2 MEMPEEK +Befehl
$64 $7A $B9 MEMPOS +Befehl
$64 $7A $87 MEMREAD +Befehl
$64 $7A $8C MEMRESTORE +Befehl
$64 $7A $94 MEMSAVE +Befehl
$64 $6D $96 SCRSV DEF +Befehl
$64 $6E $96 SCRLD DEF +Befehl
$64 $6D $8C SCRSV RESTORE +Befehl
$64 $6E $8C SCRLD RESTORE +Befehl

Kompatibilität[Bearbeiten | Quelltext bearbeiten]

Dieses Kapitel behandelt die Aufwärtskompatibilität von TSB, gibt also Antworten auf die Frage "Wie muss man ein in Simons' Basic geschriebenes Programm anpassen, damit es in TSB läuft?".

Laufwerk Geräteadresse[Bearbeiten | Quelltext bearbeiten]

Wenn das Simons-Basic-Programm eine andere Geräteadresse (ga) als 8 für ein Laufwerk benutzt, ist bei den entsprechenden Befehle (LOAD, SAVE, OPEN)) eine Anpassung nötig.

Simons' Basic TSB
SAVE "datei",9 USE 9: SAVE "datei"
LOAD "datei",9 USE 9: LOAD "datei"
OPEN 2,9,2,"datei" USE 9: OPEN 2,ga,2,"datei"

SCRLD und SCRSV[Bearbeiten | Quelltext bearbeiten]

  • Auch bei den Befehlen SCRLD und SCRSV muss die Geräteadresse (ga) mit USE bestimmt werden.
  • Die Sekundäradresse darf nicht größer als 2 sein. Dies würde in TSB bei SCRSV oder SCRLD nicht den Textschirm, sondern die Grafik speichern bzw. laden.
  • Empfehlenswert - wenn auch nicht zwingend notwerndig - ist es, den Dateinamen-Zusatz "P,W" bzw. "P,R" statt "S,W" bzw. "S,R" zu benutzen, weil TSB anders als Simons' Basic die Startadresse speichert.
Simons' Basic TSB
SCRSV 2,9,2,"datei,S,W" USE 9: SCRSV 2,ga,2,"datei,P,W"
SCRSV 3,8,3,"datei,S,W" SCRSV 2,ga,2,"datei,P,W"
SCRLD 2,8,2,"datei,S,R" SCRSV 2,ga,2,"datei,P,R"

KEY[Bearbeiten | Quelltext bearbeiten]

Der Befehl KEY 0 hat eine andere Bedeutung:

  • in Simons' Basic führt KEY 0 zur Anzeige der Funktionstastenbelegung genauso wie DISPLAY.
  • In TSB schaltet KEY 0 die Funktionstastenbelegung ab, genauso wie der neue TSB-Befehl KEY OFF.
Simons' Basic TSB
KEY 0 DISPLAY

MEM[Bearbeiten | Quelltext bearbeiten]

  • Nach MEM kann man in Simons' Basic nicht die beiden Zeichensätze (Groß-Grafik/Groß-Klein) wechseln. Soll ein SB-Programm mit MEM unter TSB laufen, muss nach MEM der Befehl CSET 0 folgen.
Simons' Basic TSB
MEM MEM:CSET 0

MERGE[Bearbeiten | Quelltext bearbeiten]

  • In Simons' Basic lädt MERGE ein BASIC-Programm hinter ein bereits im Speicher vorhandenes.
  • In TSB lädt MERGE ein BASIC-Programm zu einem bereits im Speicher vorhandenen hinzu und integriert es anhand der Zeilennummern. Das neue wird also in das alte hineingemischt.

PAUSE[Bearbeiten | Quelltext bearbeiten]

Beim Befehl PAUSE werden der nachfolgende Zeilenvorschub und die Syntax der Zeitangabe unterschiedlich gehandhabt.

  • Simons' Basic:
    • bei einem PAUSE ohne Ausgabestring wird kein Zeilenvorschub angehängt.
    • die Zeitangabe kann ein beliebiger numerischer Ausdruck sein, auch eine Variable
  • TSB:
    • hinter PAUSE wird immer ein Zeilenvorschub angehängt, es sei denn, er wird mit einem abschließenden Trennzeichen (z.B. einem Semicolon) unterdrückt.
    • der Ausdruck für die Zeitangabe muss immer mit einer Ziffer beginnen, andernfalls wird die Fehlermeldung TYPE MISMATCH ERROR ausgegeben, weshalb man dieses vermeidet, indem man PAUSE 0+<ausdruck> eingibt.

Beispiele:

Simons' Basic TSB
PAUSE "bitte warten", 1 PAUSE "bitte warten", 1;
A=2: PAUSE "bitte warten", A A=2: PAUSE "bitte warten", 0+A;
PAUSE "bitte warten", .9 PAUSE "bitte warten", 1;

Im letzten Fall hätte man als TSB-Wert auch 0+.9 oder einfacher 0.9 schreiben können. Da sowohl in Simons' BASIC als auch in TSB der Wert für die Zeitangabe auf einen Ganzzahlwert abgerundet wird, ist das aber nicht sinnvoll.

RETRACE[Bearbeiten | Quelltext bearbeiten]

Der Befehl RETRACE hat eine völlig andere Bedeutung.

  • in Simons' Basic zeigt RETRACE das letzte vom Befehl TRACE erzeugte Beobachtungsfenster am Bildschirm rechts oben, falls der TRACE-Modus aktiv ist.
  • In TSB zeigt RETRACE die Initialen des Autors, das Jahr und die aktuelle Versionsnummer an.

USE[Bearbeiten | Quelltext bearbeiten]

Der Befehl USE besitzt in TSB eine andere Syntax und muss in jedem Fall angepasst werden.

  • Simons' Basic Syntax: USE <formatstring>,<zahlstring>
  • TSB Syntax: USE <formatstring>,<zahl>

Beispiel:

Simons' Basic TSB
USE "##.##",STR$(22.89) USE "##.##",22.89

CHECK[Bearbeiten | Quelltext bearbeiten]

CHECK als Befehl hat eine völlig andere Bedeutung:

  • in Simons' Basic hat CHECK als Befehl die gleiche Syntax und Wirkung wie DETECT und ist daher überflüssig.
  • In TSB legt CHECK eine Liste der Prozeduren an, sodass alle folgenden Aufrufe beschleunigt werden.

Wird CHECK in Simon's Basic als Befehl verwendet, so muss es für TSB durch DETECT ersetzt werden.
Beispiel:

Simons' Basic TSB
CHECK 0: k=CHECK(0,1) DETECT 0: k=CHECK(0,1)

TSB Boot[Bearbeiten | Quelltext bearbeiten]

Mit dem BASIC-Programm "TSB.PRG" wird TSB geladen und gestartet:

100 POKE53280,11:POKE53281,12
110 PRINT"SnhP":IFATHEN 200
120 A$="BOOTING TSB ...":A=LEN(A$)
130 FORI=0TOA:PRINT:NEXT
140 PRINTTAB(20-A/2)A$:A=PEEK(186)
150 LOAD"TSB.OBJ",A,1
200 POKE 190,A:POKE 56,128:SYS 33139

Erklärung:

  • Programmablauf: Da die Variable A zu Beginn den Wert 0 hat, werden zunächst die Zeilen bis 150 ausgeführt. Nach dem LOAD startet das Programm dann von vorn. Inzwischen hat A einen Wert <> 0 zugewiesen bekommen (in Zeile 140), so dass nun von Zeile 110 in Zeile 200 gesprungen wird.
  • Notwendig sind nur das Laden von "TSB.OBJ" und Zeile 200:
    • In Speicherstellle 190 ($BE) wird die in TSB mit USE änderbare Gerätenummer gespeichert. Es ist sinnvoll, ihr den Wert PEEK(186) zu geben, weil damit die Nummer des Laufwerks, von dem geladen wurde, übernommen wird. Der vorgegebne Wert in TSB.OBJ ist 8.
    • Mit POKE 56,128 wird das Speicherende des BASIC-Bereichs in TSB auf $8000 (original $A000) gesetzt, sodass der Code nicht durch Zeichenketten überschrieben werden kann.
    • Mit dem SYS wird TSB gestartet.
  • Die vier Steuerzeichen in Zeile 110 sind {CLR}{LOWER CASE}{UP/LO LOCK ON}{BLACK}.
  • Farben: Rahmen- und Hintergrundfarbe werden in Zeile 100, die Zeichenfarbe in Zeile 110 mit dem vierten Steuerzeichen geändert. Dies ist dann für den Ladervorgang gültig, wird allerdings in TSB bei einem Reset oder nach COLD wieder auf die Standardwerte zurückgesetzt.


Die folgenden Abschnitte zeigen Versionen des Boot-Programms für spezielle Zwecke.

Eigenes TSB-Programm automatisch starten[Bearbeiten | Quelltext bearbeiten]

Quelle: Thema: Simon's Basic/TSB: Farben, Zeichensätze, Sprites & Co. auf Forum64.de: Ladeprogramm für den Zeichensatzeditor "ZeichenEd".

Das folgende Programm bootet TSB von einem beliebigen Laufwerk und startet darin automatisch das Programm, dessen Name mit den Zeichen "ze" ("zeichened") beginnt.

5 POKE53280,0:POKE53281,0
6 PRINTCHR$(147)CHR$(30)"LOADING..."CHR$(144);
10 IF A=0 THEN A=PEEK(186):LOAD"TSB.OBJ",A,1
20 POKE190,A:POKE56,128
30 FOR P=631 TO 640:READ V:POKE P,V:NEXT
40 POKE 198,10:SYS 33139
60 DATA 76,79,193,34,90,69,42,34,58,131
  • Farben alle Schwarz: Bildschirmausgabe beim Booten unsichtbar
  • 631-640: Tastaturpuffer, 198: Zeichenanzahl im Tastaturpuffer
  • Daten: loA"ze*":{run}

Eigene Funktionstastenbelegung beim Start laden[Bearbeiten | Quelltext bearbeiten]

Da TSB den Speicherbereich für die Funktionstasten nicht beim Start löscht, ist es bei der Diskettenversion möglich, eine eigene Belegung abweichend von der in TSB vorgegebenen mit zu laden.

  1. Mit TSB eine F-Tastenbelegung nach eigenen Vorstellungen erstellen.
  2. Mit einem Maschinensprachemonitor den Bereich $C64D-$C74C mit Startadresse in eine Datei auf die TSB Diskette sichern, z.B. mit Vice "save" oder mittels SMON per "s"-Kommando in die Datei "KEYS.C64D".
  3. Das TSB Bootprogramm laden, wie folgt ändern und dann als alternatives Programm - z.B. "TSB+.PRG" - speichern:
100 POKE53280,11:POKE53281,12
110 PRINT"SnhP":IFB=2 GOTO 200
115 IF B=1 GOTO 151
120 A$="BOOTING TSB ...":A=LEN(A$)
130 FORI=0TOA:PRINT:NEXT
140 PRINTTAB(20-A/2)A$:G=PEEK(186)
150 IF B=0 THEN B=1:LOAD"TSB.OBJ",G,1
151 IF B=1 THEN B=2:LOAD"KEYS.C64D",G,1
200 POKE 190,G:POKE 56,128:SYS 33139

Startet man nun TSB mit "TSB+.PRG", stehen die selbst definierten F-Tasten zur Verfügung.

  • Variable G enthält die aktuelle Gerätenummer

TSB und Schnelllader[Bearbeiten | Quelltext bearbeiten]

Will man in TSB einen Schnelllader benutzen, gibt es grundsätzlich die Auswahl zwischen Software- und Hardware-Schnelllader. Da eine Software-Lösung immer zusätzlichen Speicherplatz benötigt, ist eine Cartridge oder ein verändertes Betriebssystem eine attraktive Alternative. Hier muss man allerdings die Kompatibilität zu TSB beachten, das ja nicht nur eine eigene Funktionstastenbelegung mitbringt, sondern auch diverse Betriebssystem-Vektoren geändert hat, darunter die von LOAD- und SAVE. Mit dem Retro-Replay-Modul zum Beispiel gibt es deshalb Probleme. Die folgenden Unterkapitel behandeln einige gut nutzbare Speeder (getestet im Emulator Vice).

Ladezeiten von "tsb.obj" (VD=Virtual Device, TDE=True Drive Emulation):

Vice VD 	 	02,2 sec
Vice TDE DolphinDOS	02.9 sec
Vice TDE SpeedDOS	06,6 sec
Vice TDE JiffyDOS	09,8 sec
Vice TDE Ultraload+	10,1 sec
Vice TDE	 	53,3 sec

Ultraload Plus[Bearbeiten | Quelltext bearbeiten]

Als Software-Variante ist Ultraload Plus zu empfehlen, weil man bei diesem Programm selbst festlegen kann, welchen Speicher es belegen soll. Im Thema: TSB Info - Post #104 auf Forum64.de ist beschreiben, wie man das tun kann.

SpeedDOS plus[Bearbeiten | Quelltext bearbeiten]

Sehr gut arbeitet SpeedDOS plus mit TSB zusammen, weil es zwar die Floppy-Geschwindigkeit erhöht und seine erweiterten Features einbringt, sich aber ansonsten nicht störend bemerkbar macht. Mit einem kleinen Zusatz im Boot-Programm kann man sogar seine DOS-Wedge-ähnlichen Befehle in TSB aktivieren:

TSB mit SpeedDOS plus
100 poke53280,11:poke53281,12
110 print"SnhP":ifathen 200
120 a$="booting tsb ...":a=len(a$)
130 fori=0toa:print:next
140 printtab(20-a/2)a$:a=peek(186)
150 load"tsb.obj",a,1
200 poke 33341,0:poke 33342,240
210 poke 190,a:poke 56,128:sys 33139

In der zusätzlichen Zeile 200 wird in TSB auf den SpeedDOS-Tokenizer bei $F000 weitergeleitet. Die POKE-Adressen können sich allerdings in einer neuen TSB-Version ändern. Die passende Adresse (hier 33341 für TSB v2.20908) lässt sich mit PRINT D!PEEK($0304)+10 ermitteln.

JiffyDOS[Bearbeiten | Quelltext bearbeiten]

TSB mit JiffyDOS

Der Schnelllader JiffyDOS ist inzwischen am weitesten verbreitet. Er arbeitet mit ein paar Einschränkungen auch mit TSB zusammen:

  • Die JiffyDOS-Befehlserweiterung ist nicht aktiv.
  • Die Funktionstastenbelegung von JiffyDOS sollte ausgeschaltet sein, da sie sonst mit der von TSB kollidiert. Bei der TSB-Diskettenversion kann man dafür wie bei SpeedDOS ein spezielles Laderprogramm erstellen, hier mit der Zeile 200 @f. Wird TSB von einer CRT gestartet, müssen die F-Tasten von JiffyDOS nachträglich deaktiviert werden. Dies ist mit SYS $E4C2 möglich.

Die weiteren Tastenbelegungen von JiffyDOS stehen auch in TSB zur Verfügung.

Dolphin DOS[Bearbeiten | Quelltext bearbeiten]

TSB mit Dolphin DOS

Will man einen Hardware-Schnelllader mit höherer Geschwindigkeit, dann ist Dolphin DOS eine gute Wahl. Eigenschaften in TSB:

In Vice lässt sich TSB als CRT unter Dolphin DOS bequem mit Hilfe einer eigenen Konfigurationsdatei hinter dem Befehlsparameter "-config" starten. Dazu kopiert man seine "vice.ini" in die neue Konfigurationsdatei - etwa "dolphindos-tsb.cfg" - und ändert/ergänzt darin die folgenden Zeilen ($ROMpath und $CRTpath dem eigenen System entsprechend einsetzen):

[C64SC]
KernalName="$ROMpath\dolphindos\kernal-20-3.rom"
DosName1541="$ROMpath\dolphindos\c1541-20-x.rom"
CartridgeType=0
CartridgeFile="$CRTpath\tsb_md.crt"
Drive8ExtendImagePolicy=2
Drive8Type=1541
Drive8RAM8000=1
Drive8ParallelCable=1
Drive8TrueEmulation=1
VirtualDevice8=0

CRT, REU und die Nachladeprogramme[Bearbeiten | Quelltext bearbeiten]

Dieses Kapitel enthält Informatinen zu den CRT-Versionen von TSB und zu den Nachladeprogrammen und deren Behandlung in einer CRT und/oder einer REU.

Nachladeprogramme[Bearbeiten | Quelltext bearbeiten]

Auf der TSB-Diskette findet man neben der Systemdatei "tsb.obj" die folgenden Nachladeprogramme:

  • tsb.mem enthält den Speicherbereich $CC00-$CFFF aus "tsb.obj". Wenn dieser Speicher mit MEM überschrieben worden ist, wird er mit NRM wieder aus dieser Datei geladen.
  • tsb.ext enthält die DOS-Wedge, die mit INST geladen und in TSB als Erweiterung implemenitert werden kann.
  • tsb.hsg enthält die "High-Speed-Grafik"-Erweiterung, die mit GRAPHICS in TSB implementiert werden kann und zusaätzlich den Speicherbereich $7000-$7C74 belegt.

TSB auf CRT[Bearbeiten | Quelltext bearbeiten]

Seit März 2021 gibt es TSB auch als CRT-Datei. Die Entstehungsgeschichte dazu kann man im Thema: TSB Info - ab Post #6 auf Forum64.de lesen. Es gibt zwei unterschiedliche CRT-Versionen:

Beim Start wird TSB ins RAM bei $8000-$CFFF geladen und danach die Cartridge ausgeschaltet. Für die Nachladeprogramme ist eine Diskette nötig. Die Cartridge kann (zumindest im virtuellen Betrieb) zusammen mit einer REU benutzt werden, da die Register für die Steuerung - $DE00 für MAGIC DESK, $DF00 für REU - verschieden sind.
Beim Start werden folgende Daten aus der Cartridge ins RAM geladen:
  1. TSB.HSG: Die High-Speed Grafikerweiterung liegt im üblichen Bereich $7000-$7C74. Will man sie benutzen, muss sie mit SYS$7000 aktiviert werden.
  2. Die Nachlade-Routine: Sie belegt den Bereich $7F80-$7FFF. Mit ihr kann man aus der Cartridge bestimmte Versionen des Speicherbereichs $CC00-$CFFF nachladen, so dass keine Diskette mit "tsb.mem" und "tsb.ext" nötig ist.
  3. TSB: $8000-$CFFF
Folgende Bereiche werden bei Bedarf aus der Cartridge nachgeladen:
  1. Der "TSB.MEM"-Bereich aus TSB, den MEM überschreibt, wird mit NRM wieder geladen.
  2. Der "TSB.EXT"-Bereich mit der DOS-Wedge sollte eigentlich mit dem Befehl INST geladen werden. Bis zur aktuellen Uniprom-CRT TSB Version 2.20903 ist das automatische Laden dieses Programms aus der CRT leider noch nicht implementiert, so dass nach INST bei nicht eingelegter Diskette die Meldung "File not found" erscheint. Es ist aber möglich, "TSB-EXT" mit der Nachlade-Routine aufzurufen: POKE 782,$CC: SYS$7F86: SYS$CC00
Die Uniprom-CRT kann nicht zusammen mit einer REU benutzt werden, da beide auf das gleiche Steuerungsregister zugreifen.

Nachladen von REU[Bearbeiten | Quelltext bearbeiten]

Bei der Nutzung der TSB-Diskettenversion wäre ein Nachladen der "tsb.mem"-Datei von der REU praktisch. Mit dem TSB-Hack TSB REUMEM von Petrus, der diese Option in TSB einrichtet und damit das Laden von Diskette überflüssig macht, ist dies möglich. Diese TSB-Variante könnte allerdings mit künftigen TSB-Versionen nicht mehr kompatibel sein.