3000 6057 0000 T ... HexDump1.01+02
@l
E************************************************************
     Beschreibung zum Service-Programm
     "Hex-ASCII-Dump" V 1.01 und 1.02(RAM) fuer Z1013
     (c) by W.Bernhardt, Berlin 1988
************************************************************F



Programmstandort:    Version 1.01 0D700H - 0DFFDH   Start:0D700H

fuer 16-K-Variante:               3700H  -  3FFDH   Start: 3700H

                     Version 1.02 0D600H - 0DFB3H   Start:0D600H

fuer 16-K-Variante:                                   3600H -  3FB3H   Start: 3600H



Hardware:  Z1013 mindestens 16K RAM
           Taktfrequenz 2Mhz
           fuer Druck 4-K-Monitor mit Sprungverteiler
           und Hardcopyfunktion von Rainer Brosig, Coswig



Dieses Programm realisiert folgende Funktionen:

  - Anzeige ausgewahlter RAM-Bereiche in hexadezimaler
    und ASCII-Darstellung

  - Editieren des angezeigten RAM-Bereiches

       a.) durch hexadezimale Eingabe
       b.) durch ASCII-Zeichen-Eingabe

    mit gleichzeitiger konvertierter bzw.
    rekonvertierter Anzeige

  - Rueckschreiben des editierten Bereiches in den RAM 


  - Druck eines ausgwaehlten RAM-Bereiches als
    Hex-ASCII-Dump mittels Hardcopyfunktion u. Sprungver-
    teiler (V. 1.01)
    Druck ueber angehaengten phys. V.24-Treiber
    (V. 1.02)


Die beiden Versionen des Hex-ASCII-Dump unterscheiden sich
neben den etwas unterschiedlichen Standorten ansonsten nur
in der Druckfunktion (siehe Druckmodus)




************
EAnfangsmenueF
************


Nach Programmstart meldet sich dieses mit dem Anfangsmenue.
Mit den Cursortasten hoch bzw. runter kann die entsprechende
Auswahl erfolgen.
Wurde der Pfeil (->) vor den auszuwaehlenden Programmteil
gebracht, ist dies mit CR (ENTER) zu bestaetigen.
Damit wird die Ausfuehrung dieser Programmroutine eingeleitet.

Alle von den 3 o.g. Tastenbetaetigungen abweichenden Ein-
gaben werden als Fehleingaben betrachtet und entsprechend
signalisiert. 




************
EAnzeigemodusF
************

Erwartet wird eine vierstellige Eingabe der hexadezimalen
Anfangsadresse (AAdr) des ausgewaehlten RAM-Bereiches.

Im Anzeigemodus werden auf dem Bildschirm jeweils 24 Zeilen
zu je 8 Byte hexadezimal sowie rechtsbuendig 8 Byte in ASCII-
Darstellung angezeigt.
Insgesamt werden damit jeweils 192 Byte aus dem RAM in den Bild-
wiederholspeicher gelesen.
Nicht druckbare Zeichen (<20H, >7EH) werden im ASCII-Teil als 
Punkte dargestellt.

Die Anfangsadresse (AAdr) und die errechnete Endadresse (EAdr)
des angezeigten RAM-Bereiches werden ebenfalls dargestellt.

Mit den Cursortasten -> kann ab EAdr+1 vorwaerts, mit <- ab
AAdr-1 rueckwaerts durch den gesamten RAM geblaettert werden.
Bei Erreichen von 0FFFFH wird nahtlos ab 0H weitergeblaettert;
der gleiche Uebergang erfolgt rueckwaerts bei Erreichen von 0H.

Durch Eingabe von CR (ENTER) wird erreicht, dass die Eingabe
einer neuen AAdr erwartet wird.
Mit CTRL C (^C) wird das Programm beendet und kehrt in das
Anfangsmenue zurueck.
Mit der Eingabe "E" geht das Programm in den Editiermodus
ueber.
Alle abweichenden Kommandos bzw. Eingaben werden als Fehlein-
gaben interpretiert und mit einem akustischen Signal quittiert.




************
EEditiermodusF
************


Das Editieren wird nur im Bildwiederholspeicher durchgefuehrt
und beschraenkt sich eingabeseitig auschliesslich auf die
24 * 8 angezeigten hexadezimalen Byte.

Im Editiermodus wird zusaetzlich zu den bisher angezeigten AAdr
und EAdr die aktuelle Position des Cursors (CuAdr) innerhalb
des betrachteten RAM-Bereiches dargestellt.




ECursorbewegungen im DumpF


Der Cursor (_) befindet sich auf dem 1.Halbbyte des ersten an-
gezeigten hexadezimalen Zeichens.
Mit den Cursorbewegungstasten <- und -> kann der gesamte ange-
zeigte Hexa-Bereich ueberstrichen werden. (bei Erreichen des
letzten Halbbyte kehrt Cursor zum Anfang zurueck und umgekehrt)

Mit den Cursortasten hoch und runter kann der Cursor in der
aktuellen Spalte jeweils bis zur ersten bzw. letzten Zeile
bewegt werden. Weitere Bewegungen in gleicher Richtung bewirken
ein akustisches Signal. Der Cursor bleibt in erreichter Zeile
stehen, bis die Bewegungsrichtung geaendert wird.

Bei den Bewegungen des Cursors sowie bei entsprechenden Ein-
gaben wird die analoge RAM-Adresse innerhalb der Anzeige CuAdr
jeweils aktualisiert.
Die der besseren Uebersicht wegen im Hexdump zwischen den Byte
befindlichen Leerzeichen werden bei den Cursorbewegungen und
bei Eingaben uebersprungen.
Der Editiermodus eignet sich damit nach den bisherigen Erkennt-
nissen besonders gut fuer Hex-Eingaben zu EPROM-Programmierung.



EHexadezimale AenderungenF

 
Entsprechend der aktuellen Cursorposition koennen Aenderungen
in einzelnen Byte bzw. Halbbyte vorgenommen werden.
Dabei sind nur die Zeichen 0-9 sowie A-F (egal, ob Gross- oder
Kleinschreibung) zugelassen; ansonsten akustisches Signal.

Bei Veraenderung eines Halbbyte wird das Gesamtbyte sofort re-
konvertiert und im ASCII-Dump zur Ansicht gebracht. Ist auch
das 2.Halbbyte zu veraendern, steht also erst nach Aenderung
beider Halbbyte das richtige ASCII-Zeichen im ASCII-Dump.
Diese Verfahrensweise hat den Vorteil, dass wirklich nur das
noetigste zu aendern ist. Ausserdem wird das Programm dadurch
ziemlich schnell gemacht.



EAenderungen im ASCII-CodeF


Im Editiermodus ist auch die Eingabe von ASCII-Zeichen in den
Hex-Dump-Bereich moeglich.
Dazu ist jeweils in das 1.Halbbyte des zu veraenderten Byte
ein "." (Punkt) einzugeben. Die Eingabe eines Punktes in das
2.Halbbyte ist nur zulasessig, wenn im ersten ebenfalls ein
Punkt eingegeben wurde. Ansonsten ist das eine Fehleingabe und
wird mit einem akustischen Signal quittiert.
In das 2.Halbbyte Em u s sF nach dem Punkt im 1.Halbbyte dann
das gwuenschte ASCII-Zeichen (von 20H bis 7EH) eingegeben wer-
den.
Nach erfolgter Eingabe des ASCII-Zeichens wird sofort konver-
tiert und das Zeichen neu im Hex-Dump und auch im ASCII-Dump
zur Anzeige gebracht.
Wurde im ersten Halbbyte der Punkt versehentlich eingegeben,
dann ist ein normales Verlassen des 2.Halbbyte mit den Cursor-
tasten EnichtF moeglich.
Durch Betaetigen von ^C wird die Punkteingabe rueckgaengig ge-
macht und das urspruengliche Byte (1.u.2.Halbbyte) wieder an-
gezeigt.
EAchtung !F Das Betaetigen von ^C ohne Punkt im 1.Halbbyte
fuehrt zum Abbruch des Editiermodus.



ERueckschreiben in RAMF


Mit Betaetigen von CR (ENTER) werden alle auf dem Bildschirm
angezeigten Byte des Hexdump in den RAM entsprechend der ange-
gebenen AAdr zurueckgeschrieben und das Programm kehrt in den
Anzeigemodus zurueck.
Mit ^C wird der Editiermodus beendet, ohne dass der Bildschirm-
inhalt in den RAM zurueckgeschrieben wird. Evtl. durchgefuehrte
Veraenderungen sind damit wirkungslos.

Bei beiden Varianten, Rueckschreiben mit CR oder Abbruch mit ^C,
wird der aktuelle RAM-Inhalt des gerade bearbeiteten Bereiches
bei der Rueckkehr in den Anzeigemodus zur Kontrolle nochmals an-
gezeigt. Mit "E" kommt man sofort in den Editiermodus zurueck
und kann evtl. notwendige Korrekturen durchfuehren.

Ansonsten kann weitergeblaettert, neu editiert oder auch das
Programm ueber das Anfangsmenue beendet werden.


 

**********
EDruckmodusF
**********


Die Druckroutine bedarf des 4-KByte-Monitor von Rainer Brosig
mit integrierten Sprungverteiler und 

bei Version 1.01

     - Hardcopyfunktion sowie
     - eines entsprechenden Druckertreibers.

bei Version 1.02

     - ausser o.g. Sprungverteiler keine weiteren
       Forderungen, da phys. Druckertriber Bestandteil dieser
       Version

Ohne diese Voraussetzungen sind die nachfolgenden Zellen 
mit C9H (RET) zu versehen:



EVersion 1.01:F

  - D703H:   (3AH) C9H     [3703H:  (3AH) C9H ]  -  setzen 
    Hardcopyflag und Einschalten LED

  - D710H:   (3AH) C9H     [3710H:  (3AH) C9H ]  -  ruecksetzen
    Hardcopyflag und Ausschalten LED


EVersion 1.02:F

  - D603H:   (C3H) C9H     [3603H:  (C3H) C9H ]  -  Uebergabe
    AKKU-Inhalt an Druckertreiber

  - D607H:   (C3H) C9H     [3607H:  (C3H) C9H ]  -  Ruecksetzen
    Zeilenzaehler ueber Sprungverteiler DRDEL (0FFEBH)



In Druckvorbereitung sind die AAdr und EAdr des zu druckenden
RAM-Bereiches einzugeben. Desweiteren wird der filename ab-
gefordert, der dann als Ueberschrift auf dem Hex-ASCII-Dump
gedruckt wird. (filename max.16 Byte)

Ueber den entsprechenden Druckertreiber ist in der Version 1.01
zu veranlassen, dass mit Einzelblatteinzug gedruckt wird.

In der Version 1.02 mit integriertem Druckertreiber wurden
programmtechnisch 62 zu druckende Zeilen vorgesehen (ent-
spricht Format A4)

Gedruckt wird in der V.1.02, indem das BIT 3 (Hardcopyflag) 
in der Systemzelle 27H ueber das Programm gesetzt wird und 
die Frage "StartDruck (J/N)" mit J beantwortet wird.
Waehrend des Druckes wird jeweils die Taste BREAK abgefragt,
so dass der Druck jederzeit mit ^C abgebrochen werden kann.
Bei im phys. Druckertreiber enthaltenen BREAK fuehrt das zum
Programmabruch.

In der Version 1.02 wird ueber dem am Ende des Programms be-
findlichen Druckertreiber gedruckt. (Treiber entsprechend des
V.24-Moduls von Riesa)
Bei Verwendung eigener Druckroutinen kann ab Zelle 0D603H
der entsprechende Sprung dahin eingetragen werden.
Das Ruecksetzen des Zeilenzaehlers kann ebenfalls ueber ein
eigenes kleines Programm ab Adresse 0D607H angesprungen werden.

Der integrierte Druckertreiber befindet sich ab Adresse 0DF79H.
Als PIO-Adressen werden

    - 34H (Steuerwort) und
    - 35H (Daten)

verwendet.

Die Druckgeschwindigkeit wurde mit 9600 BAUD festgelegt.
Mit der ESCAPE-Folge 1BH,40H,1BH,6CH,08H wird der Drucker
am Anfang initialisiert und ein linker Rand von 8 Zeichen
vorgegeben.  

Insgesamt werden pro Zeile 70 Zeichen gedruckt; beginnend mit
der 4-stelligen Adresse, der sich 16 Hexazeichen und die je-
weiligen 16 ASCII-Zeichen anschliessen.
Fuer nicht druckbare Zeichen (< 20H, > 7EH) werden Punkte ge-
druckt.
Bei Erreichen der Endadresse wird jeweils eine volle Zeile
ausgedruckt, gegebenenfalls also 15 Byte mehr als die einge-
bene Endadresse.
Waehrend des Druckes rollen die ausgegebenen Zeichen inner-
halb eines Fensters ueber den Bildschirm.

Bei Druckende bzw. Druckabbruch wird der Bildschirm im Fensterr
geloescht.
Das Programm befindet sich noch im Druckmodus; es kann ent-
weder neu gedruckt oder mit ^C ins Anfangsmenue zurueckgekehrt
werden.




 
EAnmerkungenF



- fehlende Moeglichkeit einer Tonausgabe z.B. ueber Tonband-
  buchse wirken sich nicht weiter nachteilig aus, da Fehlein-
  gaben auch daran zu sehen sind, dass die Eingabe nicht ange-
  nommen bzw. der Cursor nicht weiter bewegt wird.

- versuchtes Rueckschreiben in ROM-Bereiche wurde programm-
  technisch nicht unterbunden.
  Editieren im BWS ist moeglich, Rueckschreiben natuerlich
  sinnlos.

- alle im Programm verwendeten Monitorroutinen werden mit 
  Restartbefehlen aufgerufen. Vor den RST-Befehlen wurde je-
  weils ein NOP-Befehl eingefuegt.

- im Sinne einer breiten Anwendung dieses Service-Programms auch
  durch Z1013-Nutzer, die mit der Grundausstattungsvariante
  arbeiten, wurde die Einbeziehung des Z1013-Sprungvertei-
  lers von Rainer Brosig (Coswig) nur fuer die Druckroutine
  verwendet.


 

TastencodeabweichungenF


Funktion    Code Schreibmaschinen-         Folientastatur
---------------------------------------------------------

Cursor       0AH          |                     S4/R
runter                    V
Cursor       0BH          ^                     S4/S
hoch                      |
Abbruch      03H        CTRL C                  S4/K




EFehleingabenF


- Anfangsmenue:  Zeichen <> CR, Curs.hoch, Curs.runter

- Adresseingabe: Zeichen <> 0-9, A-F, <-, ->, ^C, CR

- Anzeigemodus:  Zeichen <> E, CR, ^C, <-, ->

- Editiermodus:  Zeichen <> 0-9, A-F, CR, ^C, .(Punkt im 1.HB),
                            Cursor hoch, runter, links,rechts
                 verlassen Zeile 1 mit Cursor hoch
                 verlassen Zeile 24 mit Cursor runter
                 Zeichen <> druckbares ASCII-Zeichen oder ^C
                 (wenn im 1.HB Punkt eingegeben wurde)

- Druckmodus:    Zeichen <> 0-9, A-F bei Adresseingabe
                 EAdr < oder = AAdr
                 Eingabe von mehr als 4 Zeichen pro Adresse





EKontaktadresse:F     Wolfgang Bernhardt
                        Marienburger Str. 35 a
                        Berlin
                        1 0 5 5