GER

Sharp PC-1350 / PC-1360 Basicerweiterung

ENG
Basicerweiterung
  • Einleitung
    Zur Darstellung von mehr wie die 24x4 Zeichen auf dem Display habe ich eine Basic-Erweiterung entwickelt, welche u.A. eine Textausgabe mit 37x4 Zeichen ermöglicht.
     
  • Verwendung der Basicerweiterung
    • PC-1350
      Da alle meine Programme auf die Nutzung einer 16 KB Karte im PC-1350 ausgelegt sind, wird die Basicerweiterung an den Anfang des internen Speichers geladen. Hierzu ist das Basic so zu konfigurieren, dass es nur die Speicherkarte nutzt:
      MEM "C"
      Hierdurch gehen für Basicprogramme 3 KB Speicher "verloren" und es wird nur die Speicherkarte für Basic genutzt.
    • PC-1360
      Da alle meine Programme auf die Nutzung einer 32 KB Karte im PC-1360 ausgelegt sind, wird die Basicerweiterung an den Anfang dieser 32 KB geladen. Hierzu ist zunächst der Start des Basicspeichers auf &8800 zu verschieben:
      SET MEM "C"
      POKE &FFD7,0,&88
      NEW
      Hierdurch gehen für Basicprogramme 2 KB Speicher "verloren" und es ist auch nur noch eine Speicherkarte für Basic nutzbar.
    • Erkennung PC-1350 oder PC-1360 im Basicprogramm
      Da sich die Basicprogramme für den PC-1350 und PC-1360 meist nur in den Aufrufadressen für die Basicerweiterung unterscheiden, kann man innerhalb des Programms das Gerät erkennen und die Ausrufadresse für die Basicerweiterung entsprechend setzen.
      PEEK &FFF3=206
      liefert im PC-1350 (ROM v0 und v1) immer 206 (&CE) zurück, im PC-1360 in der Regel 249 (&F9) (FFF2/3 = Startadresse der Standardvariablen PC-1360)
      Falls der Start der Standardvariablen nicht absichtlich auf &CExx verschoben wurde, ist dieser Wert mit MEM$ = "C" immer &F9
      100: IF PEEK &FFF3=206 THEN 130
      110: PR=&8030:IN=&8033:TA=&8036:T2=&8039:CI=&803C:RE=&803F:FI=&8042
      120: SA=&8045:LO=&8048: GOTO 150
      130: PR=&6000:IN=&6003:TA=&6006:T2=&6009:CI=&600C:RE=&600F:FI=&6012
      140: SA=&6015:LO=&6018
      150: REM ab hier folgt das Programm

  • Beispiel:
    Der folgende Quelltext veranschaulicht die Nutzung einiger Funktionen der Basicerweiterung:
     
    WAIT 0: CLS
    REM PC-1350: PR=&6000:IN=&6003:CI=&600C:RE=&600F:FI=&6012
    PR=&8030:IN=&8033:CI=&803C:RE=&803F:FI=&8042
    CALL PR,0,0,"Beispieltext"
    CALL PR,8,0: CALL RE,4
    CALL PR,0,1,"Name: ";
    CALL CI,100,16,14,1
    LINE (86,16)-(114,16)
    CALL FI,100,14
    IN$="": CALL IN,8,IN$

    Das Programm wartet in Bildschirmzeile 2 auf die Eingabe des Users:
    pc1360-basic-demo
     
    Das folgende Programm stellt den gesamten Zeichensatz dar:
     
    REM PC-1350: PR=&6000
    PR=&8030 CLS: DIM ST$(4)*37
    ST$(0)="ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890"
    ST$(1)="abcdefghijklmnopqrstuvwxyz"
    ST$(2)=""
    FOR I=33 TO 47:ST$(2)=ST$(2)+ CHR$ (I): NEXT I:ST$(2)=ST$(2)+" "
    FOR I=58 TO 64:ST$(2)=ST$(2)+ CHR$ (I): NEXT I:ST$(2)=ST$(2)+" "
    FOR I=91 TO 96:ST$(2)=ST$(2)+ CHR$ (I): NEXT I:ST$(2)=ST$(2)+" "
    FOR I=123 TO 126:ST$(2)=ST$(2)+ CHR$ (I): NEXT I
    CALL PR,0,0,ST$(0): CALL PR,0,1,ST$(1): CALL PR,0,2,ST$(2)
    WAIT : GPRINT

    pc1360-zeichensatz-37x4
     
  • Befehle der Basicerweiterung
    Folgende Befehle werden von der Basicerweiterung unterstützt:
     
  • Print 37x4 - Textausgabe mit 37x4 Zeichensatz
     
    Aufruf:
    PC-1350: CALL &6000[,X,Y][,Str$][;]
    PC-1360: CALL &8030[,X,Y][,Str$][;]
     
    X : 0..36 entspricht der X-Position des ersten ausgegeben Zeichens.
    Y : 0..3 entspricht der Y-Position des ersten ausgegeben Zeichens
    Str$ : Ausdruck vom Typ String, dessen Ergebnis ausgegeben wird
    ; : setzt die Position des nächsten auszugebenden Zeichens an das Ende der aktuellen Ausgabe.
     
    Wird [Str$] nicht angegeben, so wird nur die Cursorposition für die nächste Ausgabe gesetzt
    Wird [;] nicht angegeben, so wird die nächtse Zeichenkette (ohne Angabe von X,Y) in der nächsten Zeile der Anzeige ausgegeben.
    Falls bei der Ausgabe ein Zeichen in Zeile 4 ausgegeben würde, so wird der Bildschirminhalt eine Zeile nach oben gescrollt.
    Die aktuelle "WAIT" Konfiguration wird ebensowenig beachtet wie eine USING-Formatierung.
    Es muss immer eine Zeichenkette ausgegeben werden. Diese kann ein beliebiger Ausdruck sein, der als Ergebnis einen String erzeugt. Soll eine Zahl ausgegeben werden, so ist diese (z.B. mittels STR$) in einen String zu wandeln.
     
    Beispile:
    PR=&8030 CALL PR,"LKW Kapazit#t="+ STR$ (TA(I)*7000)
     
    Einige Zeichen werden als deutsche Sonderzeichen (nur in Kleinschreibung) ausgegeben:
    #=ä  pc1360-umlaute
    $=ö 
    %=ü 
    &=ß 
        

  • Input 37x4 - Texteingabe mit 37x4 Zeichensatz
     
    Aufruf:
    PC-1350: CALL &6003,Länge,Str$
    PC-1360: CALL &8033,Länge,Str$
     
    Länge: maximal zulässige Anzahl an einzugebenden Zeichen.
    Str$: eine 2-Zeichen Textvariable, in welcher die Eingabe gespeichert wird.
     
    Str$ muss zuvor initialisiert worden sein (z.B. IN$ = "")
    Hierbei ist darauf zu achten, dass die Länge der Textvariable lang genug ist für die maximale Länge der Eingabe. Einfache Variablen (2-Zeichen Textvariablen, z.B. "IN$") können max. 16 Zeichen lang sein, bei Feldvariablen (z.B. DIM IN$(2)*80) sind maximal 80 Zeichen möglich.
     
    Die Eingabe wird an der aktuellen Cursorposition gestartet. Diese kann zuvor mittels "Print 37x4" gesetzt werden.
    Eine Vorbelegung des Eingabetextes ist nicht möglich, der Inhalt von Str$ wird ignoriert und mit der Eingabe überschrieben.
    Die Tasten BRK und ENTER beenden die Eingabe.
     
  • INKEY ohne SML - T$ = Taste (alle Tasten)
     
    Aufruf:
    PC-1350: CALL &6006
    PC-1360: CALL &8036
     
    Wartet auf einen Tastendruck und speichert die gedrückte Taste in der Variable T$
    Dabei werden alle Tasten abgefragt, also z.B. auch Shift oder die Cursortasten.
     
    Folgende ASCII Werte werden für die Sondertasten in T$ zurück geliefert:
    • &02 = CLS
    • &03 = CLS (wenn SHIFT aktiv ist)
    • &04 = Cursor hoch
    • &05 = Cursor runter
    • &06 = ENTER (wenn SHIFT aktiv ist)
    • &07 = BRK
    • &08 = MODE
    • &09 = SML (wenn SML aktiv ist, nur PC-1360)
    • &0B = INS
    • &0C = DEL
    • &0D = ENTER
    • &0E = Cursor rechts
    • &0F = Cursor links
    • &10 = SHIFT
    • &12 = DEF
    • &13 = Cursor links (wenn SHIFT aktiv ist)
    • &14 = Cursor rechts (wenn SHIFT aktiv ist)
    • &15 = SML (PC-1350)
    • &16 = SML (PC-1360)
    • &1E = SHIFT (wenn SHIFT aktiv ist, nur PC-1360)

     
  • INKEY mit SML - T$ = Taste (inkl. shift/sml Belegung)
     
    Aufruf:
    PC-1350: CALL &6009
    PC-1360: CALL &8039
     
    Wartet auf einen Tastendruck und speichert den ASCII Code der gedrückten Taste in die Variable T$
    Dabei werden Shift/SML intern ausgewertet, womit Groß/Kleinschreibung oder Zeichen, die nur mit Shift eingebbar sind, abgefragt werden.
     
  • CIRCLE ,X,Y,R,{1/2/4} - Zeichnet einen Kreis
     
    Aufruf:
    PC-1350: CALL &600C,X,Y,R,{1/2/4}
    PC-1360: CALL &803C,X,Y,R,{1/2/4}
     
    X: -32768 bis 32767, X-Position des Kreismittelpunktes
    Y: -32768 bis 32767, Y-Position des Kreismittelpunktes
    R: 0 bis 65535, Radius des Kreises
    {1/2/4}: 1=Set, 2=Reset, 4=Invertieren
     
    Zeichnet einen Kreis mit dem Mittelpunkt X,Y, dem Radius R und dem Zeichenmodus Set/Reset/Invert
     
  • INVERTIEREN - Invertiert 37x4 Zeichen
     
    Aufruf:
    PC-1350: CALL &600F,Anzahl
    PC-1360: CALL &803F,Anzahl
     
    Anzahl: Anzahl zu invertierender Zeichen
     
    Ab der mit Print 37x4 gesetzen Cursorposition werden "Anzahl" Zeichen (Blöcke mit jeweils 4 Pixel Breite) invertiert.
     
  • FILL - Füllt abgeschlossenen Bildbereich
     
    Aufruf:
    PC-1350: CALL &6012,X,Y
    PC-1360: CALL &8042,X,Y
     
    X: 0..149, X-Koordinate des Pixels, an dem mit dem Füllen begonnen wird
    Y: 0..31, Y-Koordinate des Pixels, an dem mit dem Füllen begonnen wird
     
    Füllt einen Bildschirmbereich, der an Koordinate X,Y beginnt und durch gesetzte Pixel oder den Bildschirmrand vollständig abgeschlossen ist.
     
  • BILDSAVE - Bild ab Adresse in Speicher ablegen
     
    Aufruf:
    PC-1350: CALL &6015,Adresse
    PC-1360: CALL &8045,Adresse
     
    Adresse: Speicheradresse, ab der das Bild im Ram abgelegt wird.
     
    Kopiert den aktuellen Inhalt des Anzeige-Ram in den Speicher. Hierbei werden exakt 600 Byte in der Reihenfolge kopiert, wie sie im Anzeige-Ram vorliegen
    Also 30 Byte Zeile 0, 30 Byte Zeile 2, 30 Byte Zeile 1, 30 Byte Zeile 3 und dies für alle 5 Anzeigeblöcke von links nach rechts.
     
  • BILDLOAD - Bild ab Adresse aus dem Speicher in die Anzeige kopieren
     
    Aufruf:
    PC-1350: CALL &6018,Adresse
    PC-1360: CALL &8048,Adresse
     
    Adresse: Speicheradresse, ab der das Bild im Ram abgelegt ist.
     
    Kopiert den Speicherbereich ab "Adresse" in das Anzeige-Ram. Das Bild muss dabei exakt in dem Format im Ram vorliegen, wie es durch BILDSAVE ausgelesen wurde (exakte Kopie aus dem Anzeige-Ram mit überspringung aller nicht angezeigten Ram-Bereiche).
     
  • OLD - Mit NEW gelöschtes Basicprogramm wieder herstellen
     
    Aufruf:
    PC-1350: CALL &601B
    PC-1360: CALL &804B
     
    Es wird der Speicher ab dem konfigurierten Basicstart (FFD7/FFD8) bis zum ersten Ende eines Basic-Programms durchsucht und der Wert entsprechend im System-Ram eingetragen. Dies funktioniert nur, wenn sich vor dem NEW exakt ein Basicprogramm im Speicher befunden hat.
    Die erste Zeilennummer wird immer "(ursprüngliche Zeilennummer) AND 255" sein. Da beim NEW das HI-Byte der ursprünglichen Zeilennummer überschrieben wird, muss die Nummer im Zweifel manuell korrigiert werden, falls sie vorher > 255 war.
     
  • DEZ -> HEX - Dezimal -> Hex, nur im Direktmodus
     
    Aufruf:
    PC-1350: CALL &601E,Zahl
    PC-1360: CALL &804E,Zahl
     
    Zahl: 0..65535, Wert, der als Hex angezeigt werden soll
     
    Aufruf nur im Direktmodus möglich, Der Hex-Wert wird direkt nach "Zahl" ausgegeben und der Aufruf mit "ERROR 1" beendet.
     
    Beispiel:
    CALL&804E,40000
    Enter
    pc1360-call804e
    Nun kann entweder mit "Cursor links" eine neue Zahl eingegeben werden (die Ausgabe der Ergebnisses wird dabei automatisch gelöscht) oder der Aufruf kann mit "CLS" beendet werden.
     
PC-1350:
Es gibt unterschiedliche Versoionen der Basicerweiterung für ROM-Version v0 und v1 des PC-1350. Mit anderen ROM-Versionen wird sie nicht funktionieren.
PC-1360:
Die Basicerweiterung ist mit PC-1360 Rom-Versionen 3 und 5 getestet und wird evtl. auf anderen Versionen nicht funktionieren.
 
Zur Ermittelung der ROM-Version eine PC-1350/PC-1360 siehe auch den Abschnitt ROM-Versionen auf der Seite Systemaufbau und Systemroutinen PC-1350 / PC-1360
Download Sharp PC-1350 Basicerweiterung
SW Basic V9 (Adresse: &6000 - &66BE) ROM v0 sw_bas_9-1350_v0.bas sw_bas_9-1350_v0.wav
(CLOAD M)
SW Basic V9 (Adresse: &6000 - &66BE) ROM v1 sw_bas_9-1350_v1.bas sw_bas_9-1350_v1.wav
(CLOAD M)
Vor dem Laden des Programms muss der Basicspeicher auf max. &5FFF beschränkt werden:
MEM "C"
Download Sharp PC-1360 Basicerweiterung
SW Basic V9 (Adresse: &8030 - &8725) sw_bas_9-1360.bas sw_bas_9-1360.wav
(CLOAD M)
Vor dem Laden des Programms muss der Start der Basicspeichers auf &8800 erhöht werden:
SET MEM "C"
POKE &FFD7,0,&88
NEW

Zurück zur Startseite Sharp


Copyright: Alle auf dieser Homepage gezeigten Bilder und Texte sind ©1999/2026 Bernhard Schwall, urheberrechtlich geschützt und dürfen ohne Zustimmung des Autors nicht veröffentlicht werden.
Autor:  Bernhard Schwall letzte änderung: 01.01.2026