Text content (OCR)
Nr. 5/85 Mai
DM 6,50, sfr 6,50, 6S 50, Lit 5900, hfl 7,50
MAGAZIN FUR APPLE-COMPUTER
DOS-File-Manager
Funktionsplotter | #
Geheime 6502-Opcodes :
CP/M-Directory
Mac-Monitor f.
Kopierschuizverfahren fe
Apple-Kompatible —i <
PUBLIKATION
EISEN ESS A aT
Interfaces fiir Computer mit Applebus + Interfaces fiir Computer mit Applebus + Interfa
ETS TIA 2 See Se a
AP 13 und AP 17
RAM-Karten zum Einsatz als Pseu-
AP 33
RAMDISK der neuen Generation.
dodisk unter CP/M, USCD und Fiir besonders speicherintensive
APPLE-DOS. SpeichergréBe von Arbeiten ist der Ausbau in Stufen
64 kByte bis 256 kByte von 64 kByte bis 1MByte méglich
Bestell-Nr.: A 1013 a-b Bestell-Nr. A 1033
A1017 a-d
AP 14
Floppy-Controller fiir alle Anwen-
12-Kana! AD-DA-Wandler mit 12 bit
dungsfalle. 10 Laufwerke kénnen Auflésung und 25 sec Wandlungs-
gleichzeitig engeschlossen werden. zeit. Eingangsspannung +10 V. Ein
4 x 8" DSDD, 4 x 5%" DSDD und | schneller Wandler far extrem
zwei _Apple-Standardlaufwerke schnelle Anwendungen.
Bestell-Nr.: A 1019
Maximal ca. 10MByte im Direktzu-
griff.
Besteil-Nr.: A 1014
jal
Ro jetzt 512 k-RAM
A
aiongg CIT
aooaedy, EES
NEU! 8 MHz Takt
‘so
AP 22
INTEMEX mit Z 80 B-CPU und 64
AP 20 ye \' i k-RAM. Wenn Sie einmal diese Karte
INTEMEX mit 68 000 CPU und 128 { 1@ \ @ in Aktion gesehen haben, werden Sie
k-RAM. Diese Karte macht aus Ihrem if | im Tenet 4 auch feststellen: ,,Geschwindigkeit
Rechner mit ,Applebus” einen ech | 13) CO! ! PUCERTECHHT | ist keine Hexerei, man braucht nar
ten 16 bit-Rechner. Eine Zusatzkarte 1B T 2 d\\4 die AP 22". Mit dieser Karte wird Ihr
(AP 26) erméglicht einen Arbeitsspei- | | @) |) APPLE II zum z.Z. schnelisten CP/M-
cher bis zu einem MByte und an Soft-
ware gibt es einiges. Z.B. stehen drei
Betriebssysteme und die wichtigsten
Hochsprachen zur Verfiigung,
Bestell-Nr. A 1020
Computer, und in Verbindung mit
dem SPACE 84 erhalten Sie Compu-
terleistung, die wirklich einmalig ist.
Wir vermitteln gerne eine Vorfithrung.
Bestell-Nr. A 1022
Das Interface-Buch von IBS, ein Buch fiir Alle, die Ihren APPLE II oder Kompatiblen
optimal nutzen wollen. Detaillierte Schaltplane, Bauteilelisten und Benutzungshinweise
As
we
Buches.
zu allen IBS-Interfaces finden Sie jetzt in einem Buch vereint. Ausfiihrliche Abhandlun-
gen iiber Spezialschaltungen, iiber Anwendungsméglichkeiten, tiber neue Software-
welten aber auch iiber die Grenzen des APPLE II-Systems bestimmen den Wert dieses
Fir nur DM 8,00 erhalten Sie dieses Buch ab sofort bei Inrem Computerfachhandler
oder fiir DM 8,00 + DM 2,00 Versandkosten bei IBS COMPUTERVERTRIEB.
i3)
cOMmPucesceECHNix<
Olper StraBe 10 - 4800 Bielefeld 14 - Tel.: 0521/444032 - W. Germany
1011 Rose Marie Lane 16 - Stockton CA 95207 - Tel. 209/473-7473 USA
Der Kopierrecht-Aufsatz im letzten Peeker
hat eine Fille telefonischer Anfragen aus-
geldst. Insbesondere die 7-Exemplar-Re-
gelung war vielen Lesern neu. Ich darf hier
nochmals Prof. Nordemann zitieren: Es
diirfen auch hier nur einzelne Kopien, Auf-
nahmen usw. hergestellt werden... Das
waren schon nach Ansicht der Bundesre-
gierung etwa 6 bis 7 Exemplare (so die
schriftliche Antwort des Bundesministers
der Justiz vom 16. Juli 1968 auf eine klei-
ne Anfrage). Aber es bedurfte erst einer
bestatigenden hdchstrichterlichen Ent-
scheidung, um das Bundesland Bremen
zur Beachtung des Gesetzes zu veranlas-
sen“ (,Urheberrecht", 5. Aufl., S. 328).
Das Ausnutzen von Gesetzesliicken mag
zwar moralisch verpont sein, wird jedoch
allenthalben praktiziert. Beispielsweise
sind ganze Armeen von Steuerberatern
damit befaBt, unter Anwendung aller gera-
de noch legalen Tricks auch die letzte
Steuermark fiir ihre Klienten einzusparen.
Das Urheberrechtsgesetz enthalt beziig-
lich der ,Computerwerke“ (= Software)
jedoch mehr Licken als sinnvoll anwend-
bare Paragraphen, so daB man im Hand-
umdrehen eine Fille von Antinomien kon-
struieren kann, von denen wir eine heraus-
greifen wollen:
Als der Gesetzgeber den §53 UrhG for-
mulierte, dachte er nicht daran, daB von
Betriebssystemen mehr als nur _,,einzel-
ne“ Vervielfaltigungsstiicke zum pers6nli-
chen oder sonstigen eigenen Gebrauch
benotigt werden kénnten. Peeker-Leser,
die beispielsweise unter DOS 3.3 arbeiten,
haben mit GewiBheit schon mehr als 7
Vervielfaltigungsstiicke von DOS 3.3
durch ,INIT HELLO“ hergestelit. Ware
DOS 3.3 ein Urheberwerk, kénnten wohl
die meisten Apple-Besitzer wegen Verlet-
zung von § 53 als ,,Raubkopierer“ belangt
werden. Zwar kann es nicht im Interesse
einer Softwarefirma liegen, sich mit Tau-
senden von Anzeigen zu befassen, weil
sie dann letztlich ihre Kunden verlieren
wlirde, doch méchte der Anwender nicht
in der standigen UngewiBheit leben, daB
seine Disketten, die neben dem Betriebs-
system fur ihn wichtige eigene Daten ent-
halten (Briefe, Adressen, MeBwerte, La-
gerbestande usw.), eines schénen Tages
von der Polizei beschlagnahmt werden
kénnten. Wie kommt man aus diesem Di-
lemma heraus? Es bieten sich folgende
Moglichkeiten an:
1. Das Urheberrechtsgesetz wird dahin-
gehend novelliert, daB von einem Be-
triebssystem beliebig viele und nicht
nur einzelne Vervielfaltigungssticke fir
den persénlichen (§ 53) und sonstigen
eigenen Gebrauch (§54) hergestellt
werden dirfen.
2. Das jeweilige Systemhaus erklart beim
Verkauf eindeutig, ob von dem Be-
triebssystem beliebig viele Vervielfalti-
gungsstiicke zum pers6nlichen oder
sonstigen eigenen Gebrauch herge-
stellt werden dirfen. Dann weiB jeder,
ob er im Falle der Herstellung von mehr
als 7 Kopien mit zivil- und strafrechtli-
chen Konsequenzen rechnen muB.
3. Durch eine kollektive Feststellungskla-
ge einer méglichst groBen Zahl von Mi-
krocomputer-Besitzern wird die Besei-
tigung dieser Rechtsunsicherheit auf
dem ProzeBwege erzwungen.
Zum SchluB noch ein Hinweis in eigener
Sache: Das lange erwartete Hires-Grafik-
Dump-Programm fiir den Imagewriter (s.
Peeker, Heft 1/84) ist soeben fertiggestellt
worden. Wir haben es deshalb bereits in
die Sammeldisk +5 aufgenommen, ob-
wohl es erst im nachsten Heft erlautert
wird. Und noch eine letzte Meldung“:
Das MOUSE.ASS von Disk 44 muB8 mit
Pascal 1.1 assembliert werden, weil der
1.2-Assembler nicht mehr als 10 Prozedu-
res verkraftet.
Vio oo
Ulrich Stiehl
PUBLIKATION
iNHalt
7/87
Impressum
ten inhalt
der Programme
Dr. Alfred Hithig Verlag,
Heidelberg 1985
Anzeigenteitung
Jargen Maurer, Tel. (06221) 489218
z. ZL. gilt Anzeigenpreisliste Nr. 3
Vertriebsieitung|
Ruth Biller, Tel.
1) 489280
Gunter Sokollek
EEKER
MAGAZIN FUR APPLE-COMPUTER
Impressum... 2 2. 7 1 ee ee 6 Der File-Manager des DOS 3.3
von Harald Grumser
Kurzberichte
—Neologismen in der Computersprache . . 60 Balfer-Interface
—Kopierschutz flirden Apple Il. . s « §t 1 2 RAM-Disk-Driver fir den Apple lle
— Apple-Kompatible coe ee 6B von Ulrich Stiehl
-Hotine 2. 2 2 2 2. ee. 6B
Leserbriefe . . .. . -....-. + 70 PLOT 2.0
1 7 Ein komfortabler Funktionsplotter
Testberichte von Hans-Martin Eng
Slim-Line-Laufwerk von Chinon § 8 sg 8 4
The Last Disk-Utiliy 2. 2. . . 2... . . 72
Tabelle der Interpreter- CONVERTS560
und Monitor-Adressen . Suu KOE OR 72 25 Konvertierungsroutine fur Double-Hires-Drucker-Dump
von Marc van Woerkom
Quickies (Kurzprogramme)
INPUT fir alle Falle. . . . ~ «sv « » 80 31 Disassembler fir ,,geheime“ 6502-Opcodes
RANDOM.DEMO . . Ce . 69 von Christoph Bregler
COLUMN80.DEMO. . ¢%e: ¢ = =| 88
3 5 Transzendente Funktionen in Pascal
von Dieter GeiB
Das CP/M-Directory naher beleuchtet
39 Der Aufbau von 16-Sektor-CP/M-Disketten
von Dr. Jiirgen B. Kehrel
Apple-Il-Monitor fir den Mac
1 Wie zu Wozniaks Zeiten
4 von Pit Capitain
51 Block-Tracer fiir ProDOS
von Ulrich Stiehl
6 FORMAT-Befehl fir ProDOS
5 von Ulrich Stiehl
Veriag: Erscheinungsweise: 12 Hefte jahrlich, Zahlungen: an den Dr. Alfred Hathig Verlag Bankkonten: Landeszentralbank Heidel-
Dr. Aiffed Huthig Veriag GmbH Erscheinungstag jewells 1 Woche vor Monatsbeginn. GmbH, D-6900 Heidelberg 1: Postscheck- berg 67 207 341; BLZ 67200000; Deutsche
Im Weiner 10, Postfach 102869 _Jahresabonnement DM 58,-, einschlieBlich MwSt, konten: BRD: Karlsruhe 486 45-753; Bank Heidelberg 02165041; BLZ
£6900 Heidelberg im Inland portofrei. Einzelheft DM 6,50 Osterreich: Wien 7555888; Schweiz: Basel 672 70003; Bezirkssparkasse Heidelberg
Telefon (06221) 489-0 Vertrieb Hande: 40-24417; Niederlande: Den Haag 145728; 20451, BLZ 67250020.
Telex 4-6 1727 hued d. MZV — Modemer Zeitschriften Vertrieb GmbH Italien: Mailand 47718; Belgien:
Bresiauer Str. 5, Postfach 1123, Briissel 723026; Danemark: Kopenhagen
8057 Eching b. Munchen, 34969; Norwegen: Oslo 994.24; Herstellung: Heidelberger Veriagsanstalt
Tel. 089/319 1067, Telex 0522656 ‘Schweden: Stockholm 5477 76-5 Printed in Germany
Der File-Manager
des DOS 3.3
von Harald Grumser
é Peeker 5/85
ip Ai iy
Das schon etwas antiquierte Betriebs-
system DOS 3.3, das im August 1980
erschien, ist trotz ProDOS auf dem be-
sten Wege, noch zu Lebzeiten zur Le-
gende zu werden. Obwohl die Firma
Apple in ihrer Garagenzeit Akzente in
der Transparenz von Computersyste-
men gesetzt hatte, wurde die innere
Struktur des DOS mit Ausnahme der
RWTS stets wie ein Staatsgeheimnis
gehiltet. In dem vorliegenden Beitrag
soll deshalb der Schleier des File-Ma-
nagers, eines bislang wenig bekannten
Teils des DOS, geliiftet werden.
Das Disk-Operating-System des Apple II
laBt sich in 3 Teile gliedern. Der am besten
dokumentierte Teil ist ohne Zweifel der 3.
Teil, d.h. die Read/Write-Track/Sektor-
Routine oder RWTS, die im Benutzerhand-
buch kurz beschrieben wird. Ihre Aufgabe
ist der Transfer von Daten zwischen RAM
und Diskette; sie bildet somit die Schnitt-
stelle zwischen Speicher und Laufwerk
und umfaBt den Bereich von $B800 bis
$BFFF. Der 1. Teil (S9D00-$AACO) des
Betriebssystems wird vom Command-In-
terpreter eingenommen, der flr die Be-
fehlserkennung, die Parameteriibergabe,
die Formate der einzelnen Dateitypen und
die Bereitstellung der DOS-Puffer verant-
wortlich ist. Die eigentliche Verwa'tung der
Dateien ist Aufgabe des 2. Teils, des File-
Managers (= FM), der zwischen dem
Command-Interpreter und der RWTS liegt.
Der File-Manager verfiigt Uber eine eigens
flr den Assemblerprogrammierer einge-
richtete Schnittstelle, die Ubrigens vom
Command-Interpreter nicht benutzt wird
und die Uber einen der Page-3-Vektoren
indirekt aufgerufen werden kann. Alle fur
den Aufruf benétigten Werte werden in der
File-Manager-Parameter-Liste ibergeben,
deren Adresse durch Aufruf einer kurzen
Page-3-Routine ermittelt werden kann.
Durch dieses Verfahren ist es méglich,
den FM auch in verschobenen und ge-
patchten DOS-Versionen ausfindig zu ma-
chen.
Die Organisation einer Diskette
Vor der naheren Analyse dieser Schnitt-
stelle sei noch einmal kurz die Organisa-
tion einer DOS-3.3-Diskette beschrieben.
Eine Diskette ist im allgemeinen in 35
Spuren zu je 16 Sektoren mit jeweils 256
Bytes aufgeteilt: Dies macht zusammen
560 Sektoren oder 143.360 Bytes. Bei
diesen 560 Sektoren sind 5 verschiedene
Typen zu unterscheiden:
Peeker 5/85
DOS-Image — Die Spuren 0 bis 2 beinhal-
ten das Image des Systemprogramms,
das beim Booten in mehreren Schritten in
den Speicher geschrieben wird. Von die-
sen 3 mal 16 Sektoren werden jedoch nur
37 Sektoren benutzt. Die verbleibenden
11 Sektoren auf Spur 2 werden beim In'-
tialisieren einer Diskette dennoch als be-
legt gekennzeichnet, es verbleiben also
560 - 46 = 512 Sektoren.
VTOC — Die Volume Table of Contents
stellt den Haupteintrag im Inhaltsverzeich-
nis der Diskette dar und umfaBt den Sektor
0 der Spur 17. In ihr sind unter anderem
die Position des Catalogs und die Track-
Bit-Map enthalten. In dieser Spur-Bit-Ta-
belle sind fir jeden Sektor 4 Bytes als
Bitmuster angelegt, wobei ein gesetztes
Bit den entsprechenden Sektor freigibt
und ein geléschtes Bit den Sektor als be-
nutzt kennzeichnet.
Catalog-Sektoren — Das Inhaltsverzeich-
nis belegt die 15 verbleibenden Sektoren
der Spur 17. Dabei beinhaltet jeder Sektor
ein Linkfeld zum nachsten Catalog-Sektor
und 7 Felder fiir Dateieintragungen. Somit
sind 7 mal 15 = 105 Dateieintrage még-
lich. Eine Erweiterung des Catalogs ist
nicht vorgesehen. Jeder Catalog-Eintrag
enthalt auBer Name, Dateityp und -lange
ein Linkfeld zum ersten Sektor der Track/
Sektor-Liste (= TSL) einer Datei. Subtra-
hiert man die Spur 17 von der Nettospei-
cherkapazitat, so verbleiben 496 Sektoren
oder 126.976 Bytes zur Speicherung von
Daten.
Track/Sektor-Liste — Die TSL enthalt au-
Ber einem Linkfeld zur nachsten TSL eine
Tabelle von 122 T/S-Paaren, die auf die
Datensektoren einer Datei verweisen.
UmfaBt eine Datei mehr als 122 Datensek-
toren, so wird ein weiterer TSL-Sektor an-
gelegt.
Datensektoren — Die fiir den Benutzer
‘etztlich einzig bedeutungsvollen Sektoren
sind die Datensektoren, die entsprechend
dem Dateityp auBer den Informationen
tiber Position und Lange im allgemeinen
ein Abbild des Speichers darstellen. Auf
die Sonderstellung von Textdateien soll
hier nicht weiter eingegangen werden.
Der Aufbau eines DOS-Puffers
Es erweist sich zum Verstandnis des FM
vorteilhaft, sich noch einmal den Aufbau
eines DOS-Puffers vor Augen zu fiihren.
Der Command-interpreter richtet beim
Kaltstart oder der Angabe von MAXFILES
eine DOS-Buffer-Chain ein, die meist aus
3 Puffern besteht. Jeder geéffneten Datei
(dieser Begriff wird spater noch einmal
444 10s3.3 44
erlautert) wird ein Puffer zugewiesen. Ein
solcher Puffer umfaBt 595 Bytes und ist in
5 Felder einteilbar:
Datenpuffer — $000-$0FF (000-255). In
diesem Bereich sammelt der FM die zu
lesenden oder zu schreibenden Informa-
tionen, um ausschlieBlich ganze Sektoren
zu transferieren.
TSL-Puffer — $100-$1FF (256-511). Die-
ser Bereich nimmt den gerade aktuellen
Sektor der TSL auf.
Puffer des FM-Arbeitsbereichs — $200-
$22C (512-556). Der FM sichert hier nach
jedem Aufruf alle im Zusammenhang mit
dieser Datei wichtigen Werte und liest sie
bei einem erneuten Aufruf wieder ein.
Puffer des Dateinamens — $22D-$24A
(557-586) Ein Dateiname hat stets 30 Zei-
chen (Bit 7 = 1), wobei der letzte Teil mit
Blanks ($A0) aufgefillt wird. Ist dieser
DOS-Puffer unbenutzt, so erscheint eine
Null im ersten Byte.
AdreBliste — $24B-$252 (587-594) Diese
AdreBliste besteht aus 4 Adressen im
LSB/MSB-Format und verweist auf die er-
sten 3 Felder dieses Puffers und das Na-
mensfeld des nachsten Puffers. Beim letz-
ten Puffer enthalt die letzte Adresse
Nullen.
Der Aufruf des File-Managers
Wie bereits oben erwahnt, kann der FM
Uber einen der Page-3-Vektoren, und zwar
durch JSR $03D6 aufgerufen werden. Bei
normalem DOS 3.3 ist dies auch durch
JSR $AAFD méglich. In jedem Fall muB
vor dem Aufruf die Parameter-Liste ent-
sprechend vorbereitet werden. Die An-
fangsadresse dieser Liste laBt sich durch
folgende kleine Routine ermitteln:
JSR $O3DC
STY $ED
STA $EE
Danach kann mittels ($ED),Y auf die Para-
meter-Liste zugegriffen werden. Bei nor-
malem DOS ist deren Adresse $B5BB.
Die zu Ubergebenden Parameter sind von
dem auszuflihrenden Befehl abhangig und
kOnnen der Tabelle 3 entnommen wer-
den. Es ist ersichtlich, daB nicht fir alle
Befehle alle Parameter bendtigt werden.
Bevor nun im folgenden auf die einzelnen
Befehle eingegangen wird, noch einige ail-
gemeine Bemerkungen.
Der FM kann stets nur eine Datei bearbei-
ten. Dabei muB jede Datei zunachst einmal
erdffnet werden. Dieses Erdéffnen ist nicht
mit dem OPEN-Befehl bei Textdateien zu
verwechseln. Alle flr die Bearbeitung der
Datei bendtigten Variablen legt der FM in
seinem Arbeitsbereich, der sog. File-Ma-
nager-Work-Area, ab. Um bei einem
spateren Aufruf diese Variablen wieder pa-
fat Zu haben, kopiert er diese nach getaner
Arbeit in einen Puffer, dessen Adresse
vom aufrufenden Programm in der Para-
meter-Liste auf Position 12 und 13 bereit-
gestellt werden muB. Das gleiche gilt fur
die TSL der gerade in Arbeit befindlichen
Datei. Auch dieser Bereich muB vom auf-
tufenden Programm bereitgestellt und in
Position 14 und 15 der Parameter-Liste
eingetragen werden. Bendtigt der FM ei-
nen Datenpuffer, so ist dieser auf Position
16 und 17 zu bergeben.
Hier zeigt sich der Sinn und Zweck der
DOS-Puffer; sie enthalten namlich genau
die geforderten Bereiche, d.h. daB bei der
richtigen Zuordnung des richtigen Puffers
beliebig viele Dateien gleichzeitig bearbei-
tet werden kénnen. Es ist nur sicherzustel-
len, daB bei jedem Aufruf die entsprechen-
den Pufferbereiche Ubergeben werden.
Das 10. Byte der Parameter-Liste hat eine
Sonderstellung. Es dient zur Ruickgabe ei-
nes Fehlercodes. Trat wahrend der Arbeit
des FM ein Fehler auf, wird das Prozessor-
Carryflag auf 1 gesetzt und ein entspre-
chender Code im 10. Byte eingetragen,
ansonsten werden das Carryflag und der
Fehlercode zu 0. Die Bedeutung der ein-
zelnen Fehlernummern entnehme man
der Tabelle 1.
Die letzten beiden allgemeingiiltigen
Bytes sind das Byte auf Position 11, das
ungenutzt ist, und das Byte auf Position 0,
das zur Ubergabe der Befehlsnummer
dient,
Ubersicht iiber die FM-Befehle
OPEN — Der Open-Befehi dient zur Erdff-
nung einer Datei. Dabei miissen die Lauf-
werksparameter Slot und Drive sowie die
Volume-Nummer (0 deckt alle Volume-
Nummern ab) Ubergeben werden. Die
Adresse des Dateinamens muB in Position
8 und 9 eingetragen werden, der Dateityp
in Position 7, wobei Bit 7, das Lockbit,
stets 0 sein sollte (siene hierzu Tabelle 2)
Soll spater eine Positionierung innerhalb
der Datei erfolgen, so ist die Recordlange
festzulegen; Recordlange 0 wird intern zu
1 geandert. Der FM sucht im Inhaltsver-
zeichnis der Diskette eine Datei gleichen
Namens und tragt den vorgefundenen Da-
Tabelle 3: File-Manager-Parameter-Liste
teityp in Position 7 ein. Das aufrufende
Programm kann durch Setzen des X-Regi-
sters beeinflussen, ob eine neue Datei
angelegt wird, falls eine Datei gleichen
Namens noch nicht existiert. Bei X un-
gleich 0 erfolgt bei Nichtbestehen die Feh-
lermeidung ,,Datei nicht gefunden“, bei X
= 0 wird eine neue angelegt. Der erste
TSL-Sektor wird automatisch eingelesen
Einem Open-Befehl sollte stets eine Posi-
tionierung folgen.
POSITION — Durch diesen Befehl kann
der Dateizeiger auf eine beliebige Position
innerhalb der Datei gesetzt werden. Die-
ser Zeiger wird durch einfache Multiplika-
tion der Recordlange mit der Recordnum-
mer ermittelt. Durch Addition des Record-
Offsets kann dabei auch eine Position in-
nerhalb eines Feldes eingestellt werden.
Dieser Befeh! wurde urspriinglich fur die
Bearbeitung von Random-Access-Dateien
implementiert, kann aber bei jedem ande-
ren Dateityp angewandt werden.
CLOSE — Der Close-Befehl schlieBt die
Bearbeitung einer Datei ab. Dabei wird der
letzte Datensektor auf die Diskette ge-
schrieben und die VTOC sowie die TSL
aktualisiert. Ein bereitgestellter DOS-Puf-
fer wird nicht freigegeben.
$00 | $01| $02| $03 | $04 | $05 | $06 | $07| $08 | $09 |S 0A |$0B|$0C| $0D | SOE] $ oF | $10| $11
OPEN $1 Rekordlange| V D Ss | Typ | 1. Namens- FMWA- TSL-
adresse Adresse Adresse
POSI- $A Record- | Recordoffset =
TION nummer
CLOSE | $2 - TSL- Daten-
n Adresse adresse
$1 Daten- R i aia Petia! a
byte E é
READ/ | $3/| $2 Pufferlinge |Putferadresse| T h _ "- ES
Ware | s4 $3 Record- |Recordoffset Daten-| U t - -"- -"-
nummer byte R
$4 _"- = Pufferlange |Pufferadresse} aS ss ~-
DELETE | $5 vilo]|s 1, Namens- b -"- ats
adresse e
CATA- | $6 dD] s Cy, aa
LOG fe)
Lock | $7 v[o]s 1.Namens-| p | U = TSL-
adresse E t Adresse
UNLOCK] $8 vi ols in Z =~ “
RENAME| $9 2.Namens-| V D Ss _". t ate “-
adresse
INIT $B |DOS- v D S zg
seite
VERIFY | $C Vv D Ss 1. Namens- “- TSL- Daten-
adresse Adresse adresse
8 Peeker 5/85
READ/WRITE — Read und Write unter-
scheiden sich auBer in der Befehisnum-
mer (Read = 3, Write = 4) kaum in den
Parametern. Beide Befehle kénnen durch
den Subcode auf Position 1 nochmals na-
her spezifiziert werden. Bei Subcode 1
und 2 wird an der Stelle fortgefahren, an
der der letzte Schreib/Lese-Vorgang en-
dete, bei Subcode 3 und 4 wird entspre-
chend den zu Ubergebenden Recordwer-
ten vorher positioniert. Mit Subcode 1 und
3 wird pro Aufruf immer nur 1 Byte gele-
sen/geschrieben, das auf Position 8 ein-
getragen bzw. von dort entnommen wird.
Subcode 2 und 4 erméglichen den Trans-
fer ganzer Blécke. Dabei muB in Position 8
und 9 die Lage dieses Blocks eingetragen
werden. Die Werte auf Position 6 und 7
dienen dabei als Blockzahler (= Lange
des Blocks), wobei darauf zu achten ist,
daB beim Schreiben diese Lange um 7
vermindert angegeben werden muB.
DELETE -— Dieser Befehl entfernt einen
Catalog-Eintrag aus dem Inhaltsverzeich-
nis der Diskette. Entfernen bedeutet hier-
bei kein Léschen, sondern eine spezielle
Markierung. In einem weiteren Zug wer-
den dann alle durch diese Datei belegten
Sektoren freigegeben. Dieser Befehl flirt
implizit ein OPEN durch. Das X-Register
sollte daher, um dem FM unndtige Arbeit
zu sparen, beim Aufruf stets ungleich 0
sein.
CATALOG - Dieser Befehl listet das In-
haltsverzeichnis der Diskette und ent-
spricht exaxt dem normalen CATALOG-
Befehl. Es sei in diesem Zusammenhang
erwahnt, daB der FM bei jedem Aufruf den
in Position 12 und 13 angegebenen Ar-
beitsbereich einliest, obwohl dies bei eini-
gen Befehlen nicht notwendig ware. Es
kann bei diesem Aufruf also durchaus auf
die Benutzung eines DOS-Puffers ver-
zichtet und statt dessen ein beliebiger 45
Bytes groBer Bereich angegeben werden.
LOCK/UNLOCK — Diese beiden Befehle
verandern das Bit 7 des Dateitypbytes im
Catalog-Eintrag. Da auch diese Befehle
ein implizites OPEN durchfihren, sollte
auch bei diesem Aufruf das X-Register
ungleich 0 sein.
RENAME - Hierbei wird das Namensfeld
in einem Catalog-Eintrag geandert. Die
Adresse des zweiten Namens ist auf Posi-
tion 2 und 3 zu Ubergeben. Auch hier wird
ein Open durchgefihrt.
INIT — Dieser Befehl initialisiert durch Auf-
tuf der RWTS die Diskette und schreibt
dann das DOS-|mage auf die Spuren 0 bis
2. AnschlieBend wird die VTOC und der
Catalog angelegt. Auf Position 1 ist die
Peeker 5/85
dos 3.3
Tabelle 1: File-Manager-
Fehlermeldungen
7
1
oanan
Sear
11
kein Fehler
Sprache nicht verfagbar
(beim Laden von RAN-A/S)
ungiltige Befehisnunmer
ungiltiger Subcode
Diskette schreibgeschiitzt
keine weiteren Daten
Datei nicht gefunden
(bei X = 9 dennoch Neuzuweisung)
falsche Yolumenummer
1/0-Febler
Diskette voll
Datei gesperrt (locked)
FM.BSP
8000
8003
8906
8098
8008
B00E
8010
apis
p16
8919
8018
ole
82)
aged
8026
8029
so2c
ao2F
8032
8034
8037
ag3A
8030
803F
8041
8043,
8046
8049
20
51
80
20 6D 80
a9
4c
20
a9
4c
20
20
49
4c
20
20
a9
4c
20
20
20
ac
20
AD
Ao
a1
a9
4c
20
20
05
82
51
6
82
51
6D
o7
82
51
6D
08
B82
51
15
6D
82
51
2
a
EB
0B
82
51
TB
80
8p
8p
80
ap
80
80
80
80
8p
80
ap
80
80
03
80
80
80
Tabelle 2: Dateitypen
Bit
Bit
1 bei gesperrten (locked) Dateien
@ bei nicht gesperrten Dateien
$00 — Textdatei
$01 — Integer-Basic-Programmdatei
$02 — Applesoft-Progranadatei
$04 — Binardatei
$08 — unbenutzt (Typ S)
$19 — verschiebbares Assemblermodul (Typ R)
$20 — unbenutzt (Typ A)
$40 — unbenutzt (Typ B)
. File-Manager Anwendungsbeispiele *
orc $8909
FPL EQU SEB :Adresse der F/u-Parameter-Liste
BUFADR QU. SED Adresse des DOS-Puffers
DOSMRM QU. $300 Sprung zum DOS-Warmstart
FLEMGR EQU $306 :Sprung zum File-Manager
GETFMPL EQU $3D¢ :FMPL ermitteln
CROUT —-BQU. SFD8E ;0R ausgeben
PRHEX EQU SFDES Hexzahl ausgeben
PRERR —EQU. SFF2D "ERR" ausgeben
DELETE .
JSR STARTUP
JSR SETFLN1 —;Dateiname eintragen
LDA #5 DELETE-Befeh1
UMP CALLFM
* caTALOG
JSR STARTUP
LDA #6 CATALOG-Befehl
UMP CALLFM
Lock
JSR STARTUP
JSR SETFLN1 — ;Dateiname eintragen
LDA #7 LOCK-Befehi
UMP CALLFM
uNLocK ——— nooo
JSR STARTUP
JSR SETFLN1 —;Dateiname eintragen
LDA #8 SUNLOCK-Befeh1
UMP CALLFM
— RENAME
JSR STARTUP
JSR SETFLN2 — ; RENAME-Dateiname eintragen
JSR SETFLN1 alten Dateiname eintragen
LDA #9 RENANE-Be fehl
UMP CALLFM
oo —- INIT - 8
JSR STARTUP
LDA DOSWRM+2 erste Seite des DOS-Inage
wy #1 ermitteln und
STA (FMPL),Y ; eintragen
LDA #11 INIT-Befehl
UMP CALLFM
JSR
JSR
STARTUP
SETFLN1 —; Dateiname eintragen
erste Seite des sich im Speicher befindli-
chen DOS anzugeben (normalerweise
$9D00), auf Position 4 die Volume-
Nummer.
VERIFY — Es handelt sich hier um densel-
ben Befehl, wie er auch unter Basic An-
wendung findet. Praktisch geschieht
nichts anderes als ein komplettes Lesen
der Datei, wobei ausschlieBlich RWTS-
Fehler auftreten konnen.
Um die Verwendung des FM noch einmal
zu verdeutlichen, ist diesem Beitrag ein
kurzes Beispielprogramm FM.BSP ange-
fiigt, das den Aufruf der einzeinen Befehle
naher erlautern soll. Die dort nicht aufge-
fuhrten Befehle werden in einem spateren
Beitrag anhand einer FiD-ahnlichen File-
Copy-Utility ausgefhrt.
Leider l4Bt sich der FM nicht in jeder DOS-
Version ohne weiteres aufrufen. Das von
Glen Bredon stark gepatchte DOS des
Merlin-Assemblers verweigert die Zuord-
nung neuer Dateien. Der Schliissel zu die-
sem Problem liegt in einem Byte (oder
besser noch in einem Bit) des Command-
Interpreters, der eine Tabelle zur Uberprii-
fung der Giiltigkeit der verschiedenen Pa-
rameter jedes Befehls enthalt. In dieser
Tabelle ist je 1 Bit fiir die Méglichkeit einer
Dateineuzuweisung angesetzt. Der aite,
jetzt geanderte INIT-Befehl lie8 dies zu.
Da daraus der ASSEM-Befehl wurde, hat
Bredon dieses Bit zurlickgesetzt. Beim
Aufruf des FM wird durch das X-Register
der INIT- oder LOAD-Befehl simuliert, d.h.
in dem einen Fall ist eine Neuzuweisung
méglich, in dem anderen nicht. Nach Bre-
dons Eingriff war in beiden Fallen keine
mehr méglich. Eine schnelle Losung fur
dieses Problem: $A909 wird wieder zu
$21. Dies tut dem Merlin keinen Abbruch
und der FM arbeitei wieder, wie er soll.
4
apace
804E
8051
8054
8056:
8058
8058
B05D:
80sF
061
e063
8964
8965
8067
8069
806A:
apec
BgeD:
eer:
8071
8073
8075
8077
8079;
8078:
8070:
807E
e807F
p81:
sos
8984
8086
8088:
08a
psc
apeD
apse
8090
ags2
8994
8995:
8097:
8098:
809A
psc
B09
0A
BOA
B04
BOAG
-80a8
BOAB:
OAD
agar
8081
8082
BOBS
B0B8:
8089.
BoBC
80BD
apc
80ce
ocr:
B0D5
8008.
8081;
a0E7
80ED
B0FS
80F9:
SOFA
80FB.
a3
4c
252 Bytes
oc
82
pe
EC
pz
EE
ED
on
EB
1E
24
FB
ll
oc
FB
04
FS
EB
o7
Fe
D6
A
EB
oB
8E
2D
ES
cL
AD
Ad
Ad
vy
cL
Ad
Ad
0
i)
80
03
os
80
FD
FF
FD
D4
40
40
Ao
ao
D4
40
Ad
40
40
124
125
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
144
145
146
147
LDA #12 :VERIFY-Be fehl
UMP CALLFM
STARTUP JSR GETFMPL — ;Adresse der File-Manager-
STY FMPL > Parameter-Liste
STA. FMPL+1 ) ermitteln
LDA DOSWRM+2 Adresse des 1. DOS-Puffers
STA BUFADR+1 ermitteln
Loy 40
STY BUFADR (1. Eintrag im DOS~Image
LDA (BUFADR).Y : verweist aur den 1. Puffer
TAX : der DOS-Buffer~Chain)
INY
LDA (BUFADR).¥
STA BUPADR+
TxA
STA BUFADR
RTS
SETFLN1 LDA #<FLENME] ;erster Dateiname
LDX #>FLENMEL
LDY #8 ;0ffset zum 1, Dateinamen
BNE SETFLN sunbedingt
SETFLN2 LDA #<FLENME2 ;RENAME-Dateiname
LDX #>FLENME2
LDY #2 :0ffset zum 2. Dateiname
SETFLN STA (FMPL),¥ ;LSB der Adresse eintragen
INY
TxA
STA (FMPL),Y ;MSB der Adresse eintragen
RTS
* File-Manager aufrufen
CALLFM = LDX 1 rkeine Neuzuweisung
LY +0 CALLTYP in Parameter—
STA (FMPL),Y ; Liste eintragen
LDY #30
GETADRS LDA (BUFADR),Y ;Pufferadresson aus DOS-
PHA : Puffer einlesen
INY
PY #36 (Ful-Arbeitspuffer)
BCC GETADRS (TSL-Puffer)
LY +17 (Datenpuffer)
SETADRS PLA
STA (FMPL),Y ;und in die Parameterliste
DEY : eintragen
cPY #12
BCS SETADRS
LDY #4 :Volume
SETVDS LDA VODRSL-4,Y ; Drive
STA (FMPL).Y Slot
INY
cPY #7 in Paraneterliste
BCC SETVDS ; eintragen
JSR FLENGR :Pile-Manager via Page 3
LOY #10
LDA (FMPL),Y ;Return—Code
BCC NOERR
PHA Return-Code retten
JSR COUT
JSR PRERR :"ERR" drucken
PLA
UMP PRHEX ;Fehlernunmer ausgeben
NOERR RTS
FLENMEL ASC “"DATEI1"
HEX ADADAOADADAD
HEX ADAQAOAGADAO
HEX ADAOAOAOADAD
HEX ADAOAQAQAQAD
FLENME2 ASC "DATEI2"
HEX AGAOADAOAQAD
HEX ADAOAAOADAD
HEX AQADAGAQAOAO
HEX AQADAADAQAD
VODRSL DFB O ‘Volume
DFB 1 Drive
DFB 6 Slot
=
Peeker 5/85
Katalog kostenlos!
HeiBe Renner
Blitz-Kontakt (07221) 3487
NEU NEU NEU NEU
Chinon-Laufwerk
> Apple Il kompatibel <
(Bericht in diesem Heft)
nur 498,— DM
NEU NEU NEU NEU
NEU NEU NEU NEU
D.O.S. Computersysteme
Am Kiihnbach 42
7170 Schwabisch Hall 11
Tel. (07 91) 5 17 36 oder 5 42 27
Bei Vorkasse oder Nachnahme
erfolgt Versand spesenfr
Ausfihrlicher Katalog DM 2,—
in Briefmarken
D.0.S. Computersysteme
Der Spezialist fir Schulen,
Universitaten, Techniker!
Aus unserem umfangreichen Angebot:
Profimax II mit 64K RAM, Apple l-comp.,
6502 + 80, progr. Tastatur, num. Block, 5A-Netztell . 1248,
Profimax Ill, wie oben, im IBV-Gehause
mit IBM-Tastatur 1448,
Motherboard Profimax 798,-
Prometric Bé-Motherboard, 3 Proz., 2 Schrits.,
192K RAM, 86 Zeich, 2298,
Prometric B3-Motherboard, wie B2,
zusdtzlch 256 K Pseudodise 2898,
Profimonitor, Metaligehause, 22 MHZ, 12°, bemstein.... 398,~
Monitor Heath/Zenith ZVM 123, grin, 15 MHZ 308,-
Tastatur aus Profirax I 198,-
IBM-Tastatur, deutsche Belegung 348,-
TEAC 55A, kompl. m. Kabel u. Geh., anschluBtertig
an Apple-Contr 648-
TEAC SSF, 2 80 Spuren, modi fir Betieb an Apple,
Speicterriese 698,
Disk Il Controller 118-
Contr. far alle 5’ Laufwerke, mit Patch fir
DOS, CP/M, PASCAL
280-Sottcard
80Z-Karte, Softswitch, 2 Zeichens.
80Z-Karte, mit 4 Zeichensatzen
Druckerinterface, par. (= Centr.), fiir alle
STAR-Drucker, graft
Epromburner fiir 2716-2764
AD-Wander, 333ms Wandelz, 1 Kanal
Drucker STAR Gemini 10X, grafiktahig, 120 cps,
Centronics
Drucker STAR Radix 10, Schénschrift, 200 cpi,
Centronics
‘Schreibmaschine Otympia electr. compact 2,
Centronics-Schnittst.
Plotter Pixy 3, DIN A 4
Disks Scotch, SS, DD, 10 St
Joystick mit Mittelzentr u. Just
118-
268,-
298,-
198,-
198,-
288-
998 -
1898,-
1498,-
2498,-
65-
42-
olle Garantie auf diese Computer
Ohne Einscirankungen voll Apple compatible
48u- 64K. leder Computer aul Here una Nir
fs 10er Numer
48K Por
DM 1098, —
64 K Personal Computer
‘mit Dual Processor Z 80/6502
BN 65061 DM 1198,
12" Monitore. industiegehause. 15MHz autiose
40/80 Zoichen. 220 V/50 Hi
Gruner Schirm BN 65089 DM 320,
ranger Schirm BN 65088 DM 320,—
Betriebsbereite Systeme
48 K - Apple kompatibles System. 5-Amp-Netztei Speziele
Humarc tna; Grob Rienschrebung Ale [Cx gevockt Sets
Envettoroar bis 29 K. Software kompatble an alle Apple Software we
‘CPM PASOAL / FORTRUN/ LOGO FORTH usw, Ovextanecti tr
Datacassete und Vidoo-Monitor FLOPPY-LAUFWERK 012" Sliine.
Ausfunvung. Metallgehause. Anschludkabel mit Stecker Vol-Apple™
Kompuible.OS¢-Briven: CARD tr des Arachis von 2 Floppy
ron 81.2" MONITOR, MONOCHROM GRUN, industriogenuse.
‘Shssungaber 18 Miz Umchaltoa 40/80 Zeichon. Ru Wunschbtern
wir glosen Monitor auch mit orangenem Sch.
48 K-System
48K Computr + Floppy-Lautwerk 5/4" 12° Monitor +1 Jahe Vol
garantie» Eigener Kundencienet + Aut Wunsch ameter ezahiung
Beep NN, Rest gloichon Monateraten ohne GearbetungegobUhren
BN 65158 cowpuren-rraum na. 1 DM 1878,—
ANGeBOT WE OBEN
[pdooh mi’? FLOPPY LAUFWERKEN
BN 65159 cowpurer.rraun na.2 DM 2098,—
64K — Apple kompatisies System, wie unser 49K, doch mt
Dual-Processor 2 80 und te 4 K-Erwotterung,
64 K-System
Et iccompeter mit Dual Procesor»Foppy-Lautwek "+ 12° Mot
tor + 1 Jahr Garantie + Eigener Kundendienst + Aut Wunsch zinstieie,
“ellzahiung 25% p. NN, Rest in 3 gleichen Monateraten ohne.
Bearbotungsgobumren
Bissige courtesan yn. DM 1948,—
ANGEBOT WIE OBEN,
fedoch mit FLOPPY-LAUFWERKEN
BN 65161 computer-rraum na. « DM 2299,—
Der Massenspeicher 1 M-Byte
itAnechsanietung fa Aple- Comput:
-Minopay-Lautwark, 280 = 160 ak,
2-8 Boppelopt: Standard Shupat BUS.
‘altatsiautwere cnos bekannien Jepanischen
Horstellers. Gub-Chassis 1 Jahr Garantie, Kun
endienst ber unsore Organisation
Minima nur 180100 x 40 mm
BN 65163 1 M-BYTE-KAPAZ. DM 598,—
Peeker 5/85
ait Computer Mouse
Gi Aople compatbe.
Prins Ue, viel mene, Komfortable Menu
Steuerung.Anschius uber Game 10 Port
Lieterung mit Kabel, Software 8 1+" Discette
‘nd Antu
IN 65156 DM 189. —
Unser Kundendienst in Baden-Baden
und Karlsruhe kann alles reparieren.
Wir verfigen der alle Ersatzteile
Jap. Spizentechnoioge
BN 65147 Gerauschioses §
BN 65148 Pass. Sim Line Gen
BN 65011 Disc Drive Cara
Blitzpreis!
DM 119,—
Japan-Qualitat
Einfach euro Apple ev
BN 65151
ante aot dawee Matorch
10er Pack
Hochwertige Interface-Leerplatinen
fiir Apple u. a.
Epoxy oder glasfaserverstrktes Material. Bereits gebohrt.
85164 64K Motnerooard 89,— 65171 Eprom Writer 19,50,
Dual-Processor 65172 PALVIDEO/Modul 18.50
65165 2-20 65173 128K 29,50
65 166 80 Zeicher/Sott 85174 Mikro Butter 19,90
65167 SonalRS 232 65175 Butor Printer 25,80
65168 Palio Bit 65176 Super Serial 19,90
65169 15K RAM 6517 WO 19,50
65170 6522 65178 Micro Modom 29,50
19,50
19,50
15,90
15,90
19,50
15,90
Soft und Zubehor
5 Stuck Comp. Cassetten
10 Min. Tonbandspulen
BN 65045
5 Stuck Comp, Cassette
BN 65046
DM 9,95
BN 65112
Discetten Biblio
5057
5 Dscetten farbg
5 Discetten Bil
BN 85130
Discetten Bibliothek fur 50 Discetten Kinatstot
119 or
sto abschietbar
‘Bm 4980
“Microswitch.
Standard ASCH Paral
tastatur/ Cursor Viele Funkti
fasten/8/-12
BN 92272 Aspie u.a DM 178,—
Der SUPERKNUPPEL FUR =e
und kompatible. VG-071.
joraick der edelaton Sate
Meralgenause
BN 65056
Original TEAC 55 F. Double Density. 2x 80 Track,
BN 65179
300 Band Modem CCITTV. 21
FIZ. AnschluB an alle Cometer
Karussell-Box fir 64 Discetten 5%
Bequemer Zugrt. Stapelbar oder mit
Wandhaterung. 0 320 x H 200 mm.
BN 65155,
‘Jetzt 3,5" Discetten-Box fur
DM 59,80
‘
i
Verpackung frei
Teilzahlung ab ; 300,- (ohne Zinsen)
Schnell-Versand
von Ulrich Stiehl
Die Firma Digitanalog Ewald Balfer hat seit
einiger Zeit eine preiswerte Interface-Kar-
te im Produktionsprogramm, die als durch-
kontaktete Leiterplatte (DM 35,-), als Bau-
satz VIA 6522, CMOS-RAM und Sockel
(DM 128,-) sowie als geprifte Fertigkarte
(DM 158,—) geliefert werden kann. Auf der
uns zur Verfiigung gestellten Komplettpla-
tine befindet sich ein 2K-RAM, das jedoch
auch durch ein EPROM 2716 ersetzt wer-
den kann. Fur die RAM-Version gelten fol-
gende AdreBbereiche:
— CX00-CXFF (X = 1-7)
— C800-CEFF
Eigentlich ist die Karte als gewohnliche
Kommunikationsschnittstelle gedacht, z.B.
als Parallel-Interface, serielles Interface
(RS 232), Modem-interface usw., und es
werden von uns auch entsprechende Utili-
ties fr diesen Anwendungszweck vorbe-
reitet, z.B. ein Drucker-Dump-Programm
fur Double-Hires-Grafik.
1. Balfer-Interface lést Softswitch-
Probleme
Wer auf dem Apple Ile in Maschinenspra-
che programmiert, dem fallen neben der
»konventionellen® Anwendung ganz an-
dere Einsatzméglichkeiten fur die dann nur
noch als RAM-Speicher fungierende Karte
ein. Der Apple lle verfiigt Uber relativ kom-
pliziert zu handhabende Softswitches fur
die Speicherverwaltung (Memory Mana-
gement). Dies riihrt daher, daB die 64K-
Karte des Apple lle — im Gegensatz zu
RAM-Karten anderer Produzenten (IBS
usw.) —in denselben AdreBbereich wie die
»unteren“ 64K ,gemappt* ist. Es gilt je-
doch der alte Grundsatz der Speicherver-
waltung, daB eine Memory-Management-
Utility (MMU) normalerweise nicht in dem-
selben Speicherbereich liegen sollte (oder
darf), der durch die Speicherverwaltung
tangiert wird. Ein einfaches Beispiel zur
Erlauterung:
Nehmen wir an, wir wollten das Byte der
Speicherstelle $2100 der ,oberen“ 64K
(64K-Karte) in die Speicherstelle $2100
der ,,unteren" 64K (64K-Platine) Ubertra-
gen. Darf sich dann das Ubertragungspro-
gramm im Speicherbereich ab $2000 in
den ,,unteren“ 64K befinden? Beim Apple
lle (und im Ubrigen auch beim Apple IIc)
gibt es u.a. 4 Softswitches, die fur unser
Beispiel von Interesse sind
a) STA $C002 macht den ,,unteren“ Spei-
Cherbereich $0200-$BFFF _lesefahig
(read-enable, read-select) und damit
gleichzeitig den ,oberen“ Speicherbe-
reich $0200-$BFFF leseunfahig.
b) STA $C003 macht den ,,oberen“ Spei-
cherbereich $0200-$BFFF lesefahig und
damit gleichzeitig den ,unteren“ Spei-
cherbereich $0200-$BFFF leseunfahig
c) STA $C004 macht den ,,unteren" Spei-
cherbereich $0200-$BFFF schreibfahig
(write-enable, write-select) und damit
gleichzeitig den ,oberen“ Speicherbe-
reich $0200-$BFFF schreibunfahig,
d) STA $C005 macht den ,,oberen“ Spei-
cherbereich $0200-$BFFF schreibfahig
und damit gleichzeitig den ,,unteren“
Speicherbereich $0200-$BFFF schreibun-
fahig.
Betrachten wir hierzu folgende Falle, bei
denen angenommen sei, daB vor Pro-
grammbeginn der Speicherbereich
$0200-$BFFF bereits iese- und schreibfa-
hig gemacht worden sei:
Fall1
ORG $2000
LDA $2100
STA $2100
RTS
|m Fall 1 wurde das Byte von Speicherstel-
le $2100 in dieselbe Speicherstelle $2100
Ubertragen werden. Das Programm wirde
funktionieren, doch erfullt es nicht die ge-
stellte Aufgabe und ware im Ubrigen auch
sonst nutzlos.
Fall 2
ORG $2000
STA $CO05
LDA $2100
STA $2100
STA $C004
RTS
Im Fall 2 wirde das Byte der Speicherstel-
le $2100 des ,,unteren“ Speicherbereichs
$0200-$BFFF in die Speicherstelle $2100
des entsprechenden ,oberen“ Bereichs
Ubertragen. Das Programm wirde funktio-
nieren, erfillt aber nicht die gestellte Auf-
gabe.
Fall 3
ORG $2000
STA $C003
LDA $2100
STA $2100
STA $C002
RTS
Peeker 5/85
Im Fall 3 ware zwar theoretisch die gestell-
te Aufgabe erfillt, aber das Programm
wirde nach STA $C003 jammerlich ,,ab-
saufen“, weil der nachfolgende Befehl
LDA $2100 nicht mehr vom Prozessor ge-
lesen werden kénnte, weil er nunmehr auf
die ,oberen“ 64K ,,blickt", wahrend sich
das Programm in Wirklichkeit ,, unten“ be-
findet.
Fall 4
ORG $0100
STA $C003
LDA $2100
STA $2100
STA $C002
RTS
Im Fall 4 wirde endlich alles ordnungsge-
maB funktionieren, weil sich nunmehr die
MMU auBerhalb des Softswitchbereiches
$0200-$BFFF befindet. Die Verwendung
des Stacks $0100-$01FF oder gar der Ze-
ro-Page $0000-$00FF als Programmbe-
reich kann jedoch nicht gerade also opti-
mal bezeichnet werden, da man sich nor-
malerweise niemals sicher ist, ob dieser
Bereich wirklich immer frei ist. Beispiels-
weise benutzt der Applewriter lle den
Stackbereich, um den Text von ,,unten“
nach ,,oben“ zu Ubertragen.
Fall 5
ORG $C400
STA $C003
LDA $2100
STA $2100
STA $C002
RTS
Im Fall 5 liegt die MMU im Slot-RAM-
Bereich der Balfer-Interface-Karte, wobei
hier willkrlich Slot 4 angenommen wurde,
Obgleich sich diese Karte in jedem beliebi-
gen Slot befinden kann. Da der Slot-RAM-
Bereich $C400-$C4FF oder allgemein
$CX00-$CXFF praktisch immer lese- und
schreibfahig ist, entstehen nicht mehr die
skizzierten Softswitch-Probleme. Deshalb
laBt sich der RAM-Bereich $CX00-$CXFF
sowie der nach LDA $CFFF zusatzlich ak-
tivierbare Bereich $C800-$CEFF ideal flr
MMU-Utilities unterschiedlicher Art ein-
setzen.
dos 3.3 eae
2. SLOTRAMDISK-Driver
Als konkrete Anwendung wird nachfol-
gend das Assembler-Programm SLOT-
RAMDISK (als Hexdump) in Verbindung
mit einem kurzen Applesoft-Programm
gelistet, das die 64K-Karte als RAM-Disk
einsetzt, die mit einem beliebigen Slot
(hier Slot 4) angesprochen werden kann,
wobei die Drive-Nummer ignoriert wird,
also
CATALOG, S4, D1
CATALOG, S4, D2
Aus Platzgrlinden wird der Quellcode des
RAM-Disk-Drivers nur auszugsweise ab-
gedruckt, da ein analoger RAM-Disk-Dri-
ver, der ohne das Balfer-Interface aus-
kommt, aber softswitchmaBig erheblich
umstandlicher und damit auch etwas lang-
samer ist, in einem der nachsten Peeker-
Hefte komplett gelistet wird.
Als weitere Programme fir das Balfer-In-
terface sind u.a. geplant:
a) Double-Hires-Printer-Driver
b) Softbreaker-Utility
c) Modem-Programm
d) 80-Z/Z-Karte-Driver
SLOTRAMDISK
fiir Apple IIe mit 64K-Karte in S3
und Balfer-Karte in (z.B.) S4
BSAVE SLOTRAMDISK, A24736, L825
Hex-Dump
$6PAD: 4C Ad 60 04 AD AS 69 18
$6948: 69 CO SD 26 61 8D 31 61
$60B0: AD AS 60 OA OA OA OA BD
S60B8: 20 63 A2 09 BD EE 6 FO
$6000: 06 20 ED FD £8 DO F5 20
$6908: OC FD C9 CE FO 11 C9 EE
$60D0: FO OD C9 CA FO 06 C9 EA
$60D8: FO 02 DP EB 20 56 61 20
S6E0: 07 61 EA EA EA A9 AS 8D
S$69E8: 92 B2 EA 4C DO 03 8D D2
S60FO: Cl CD C4 C9 D3 CB BE B4
S$60F8: AO ED E9 F4 AQ C9 EE ED
$6100: Fa AO CA AF CE AQ 00 Az
$6198: 05 BD 99 BD DD 2B 61 DO
$6119: 22 CA 10 FS A2 03 BD 2F
$6118: 61 9D 99 BD CA 19 F7 Az
$6120: 00 BD 99 63 9D OO c4 EB
$6128: DO F7 60 84 48 85 49 4c
$6130: 96 C4 00 AZ 00 BD 43 61
$6138: FO 06 20 ED FD E8 DO FS
$6140: 4¢ EA 60 8D C4 CF D3 Ad
$6148: ED EF £4 E9 E6 E9 FA E9
$6150: ES F2 Fa 87 8D 09 A9 00
$6158: 85 CE 8C 99 CO BC 92 CO
$6160: 8C 4 CO BC 08 CO BC 99
$6168: CO AB 99 99 0 CB DO FA
$6170: 99 90 01 CB DP FA BC 98
$6178: CO AO 02 84 CF 8C 05 CD
$6180: A891 CE C8 DO FB ES CF
$6188: AG CF EO CO DP FS BC 04
$6190: CO BC 99 CO AC BS CO AC
$6198: 83 CO 8D A4 61 AD DO BC
S61A0: A5 61 AB 99 OO DD cB DO
$6148: FA EE A5 61 DO F5 AC 8B
$61B0: CO AC 8B CO 8D BE 61 Ag
$6188
$61co
$6108
$6100
$61D8
$610
$6188
DO 8C BF 61 A8 99 09 DO
C8 DP FA EE BF 61 AE BF,
61 BO BO DO FO 8C 08 CO
AC 81 CO AC 81 CO 8c 95
CO A2 00 BD 09 62 9D 00
19 E8 DO FT A9 11 8D 1
1F 8D 01 1E A9 OE 8D 02
$61F0: 1F AQ 9D 8D 92 1E BC 04
$61F8: Cp 8C 91 CO 20 58 FC 60
Catalog-VT0C fiir RAM-Disk
$6200: 09 11 OF 03 00 09 FE 00
$6208: 99 09 10 09 09 09 00 Oo
$6210: 00 00 00 09 09 99 09 09
$6218: 99 09 99 00 00 09 O9 00
$6220: 90 09 90 09 09 09 OO 7A
$6228: 00 00 90 00 09 09 09 O0
$6230: 11 91 00 09 23 10 9 O1
$6258: 00 00 00 00 00 09 00 00
$6249: 09 00 00 00 00 00 09 09
$6248: 0 00 00 00 99 99 09 00
$6259: 00 00 00 60 09 99 09 09
$6258: 00 00 60 90 09 99 00 09
$6260: 90 00 00 00 00 00 09 00
$6268: 10 00 90 00 00 00 09 O0
$6270: 09 00 00 00 00 00 00 O0
$6278: FF PE 00 00 1F FE 00 09
$6280: FF TF 00 00 FF FF 00 00
$6288: FF FF 00 00 FF FF 00 00
$6290: FF FF 00 00 FF FF 00 90
$6298: FF FF 00 00 FF FF 00 00
$6240: FF FF 00 00 FF FF 00 00
‘S62AB: FF FF 00 00 FF FF 00 00
$6280: FF FF 00 00 FF FF 00 00
$6268: 00 00 00 06 00 00 00 90
$6200: 00 00 99 99 00 90 90 00
$6208: 00 00 00 00 60 00 00 90
$62D0: 00 00 90 00 06 00 90 00
$62D8: 00 00 09 0 00 00 90 90
$62E0: 00 00 00 00 00 80 00 00
$62E8: 00 00 09 00 09 O¢ 0 00
$62F0: 00 00 00 00 Of 00 O09 Oo
S62F8: 09 00 00 20 OO 09 0 Oo
RAN-Disk-Driver $¢400-SC4FF
$6300: 2C 82 CO 4c 89 FF 84 48
$6308: 85 49 8E 99 CO 84 09 85
$6310: 01 AD 11 CO 85 07 AD 12
$6318: CO 85 08 AM 01 Bl 09 Co
$6320: 40 FO OF BE 08 CO 4c 04
$6328: BD AD OD AD 40 9: 09 38
$6330: BO 50 AO OC B1 00 C9 O1
$6338: FO 04 C9 02 DO EB 85 99
$6340: AO 08 B1 09 85 04 ce BL
$6348: 99 85 05 C9 CO BO DA Co
$6350: 92 90 DE AO 04 Bl 00 co
$6358: 20 BO CE C9 19 99 CA Oa
$6360: OA OA OA CB 18 71 09 85
$6368: 03 C9 91 90 BC co Co 99
$6370: 19 C9 DO BO OF 99 19 85
$6378: 03 AE 8B CO AE 8B CO 18
$6580: 90 98 BO 51 AE 83 CO AE
$6388: 85 CO AD 00 84 92 A5 99
$6390: CO 01 DO OF BE 03 CO Bl
$6398: 02 91 04 CB DO FO BE 92
$63A0: CO FO OD BE 05 CO Bl 04
$63A8: 91 02 CB DO FO BE 04 CO
$6380: 18 AD OD A9 09 91 00 AD
$6388: 08 30 08 AD 81 CO AD 81
$6300: CO 90 12 A5 07 10 08 AD
$6308: 83 CO AD 83 CO 90 06 AD
$63D0: 8B CO AD 8B CO 8E 08 CO
$63DB: 60 09 00 0 0 90 09 00
SLOTRAMDISK.HELLO
10 PRINT CHRS$ (4)"BLOAD SLOTRAMDISK"
11 S = 4: REM Slot 4; Werte 1-7
12 POKE 24739,S: REM Slot S
13 POKE 24810,96: REM RTS
14 CALL 24736: REM INIT J/N
15 PRINT "ERLEDIGT"
16 PRINT CHR$ (4)"CATALOG,S"S
Peeker 5/85
13
SLOTRAMDISK.
(Quellcode nur vom Driver)
SOAO: 4c Ad 60
6OA3: 04
cago: 2c 82
cags: 4C 59
2406: 84 48
C498: 85 49
8E 99
ca: 84 09
cagr: @5 01
call: ADU
0414: 85 97
C416: AD 12
Calg: 85 98
ca1B
cal
Ao O21
Bl 09
calF: c9 40
cazi: FO OF
0423: 8E 08
c426: 4¢ 04
caaa: ad 9D
c42B: Ag 40
cazD: 91 90
ca2F: 38
C430: BO 50
432: Ad OC
0434: Bl Op
co 1
C438: FO 04
c43a: co 02
asc: DO EB
co
FF
co
BD
482
ORG S60A0
IMP SLOTPOKE
SLOT HEX 94
© SLOTRAMDISK
*
+
+ RAM-Diskdriver fir 64K-Karte
* fiir Apple IIe (DOS 3.3) mit
+ Balfer-Interface. U. Stiehl '85
+ Init-Programm aus Platzgrinden
* nicht abgedruckt. Kompletter
* Quellcode auf Peeker-Sammeldisk
* Eigentlicher Driver: relokativ!
*
ORG $c490 $5300!
+
TOBL —-EQU._ZERO+S00
TOBH —-EQU._ZERO+$01
AUKL = EQU ZERO+S02
AUXH —-EQU ZERO+$¢3
BUFL —-EQUZERO+$04
BUFH —-EQU ZERO+$05
BANKFLAG EQU ZERO+S07
ROMFLAG EQU ZERO+$98
RDWRFLAG EQU ZERO+$09
* Sprung zur Reset-Adresse in
* ROM, falls aus Versehen PR+S
* eingegeden wurde
RESET BIT $0082
IMP $FF59 sReset
+ J0B-Pointer in Mainzp + Auxzp
ENTRY STY $48
STA $49 :Mainzp!
sTX cosa SAUKZP
sTY ToBu.
STA IOBH ;Auxzp!
*
* Rette Le-Status
WA $co11 :BKI/2
‘STA BANKFLAG
LDA scoiz : ROM/RAM
STA ROMFLAG
.
* Pseudo-Disk-Slot?
stor? Loy #801
UDA (IOBL),¥ ;Slot
* Per absolute Adresse gepokt!!!
SLOTPOKS CMP +$40
BEQ RDWR?
;Slot 4
*
* Zuriick zar normalen Rwts
RWTS: STX $cooa
UMP $BD04
sMAINZP
* Drive-Error
OERROR LDY
+80
LDA #840 :10-Err
STA (TOBL),¥
SEC :Carry!
BCS EXSRANCH —; 10-Error
.
* Befehi: 1=Read oder 2-frite?
ROWR? = LOY #800
LDA (TOBL),¥ ;Befehl
CMP +$01 :Read
BEQ PUFFER
CMP #802 rite
BNE IOERROR
case:
aad:
cada:
cada
caa6
caa7
cag:
aes
4a
cas
C451.
cass.
C469
casB
caen:
caer
cam.
ca73
ca7s:
carT:
ca79:
ca7e:
ca7F
480
cage:
cag4:
cas7
casa.
cage:
case
cago
cag
0494:
497:
499
c49B
cage:
CASE
caal
co
co
BO
09
AE
AE
90
Bo
AE
AE
a0
84
aS
ca
Dp
BE
BL
91
cr)
8E
FO
oo
03
a1
BC
co
De
oF
10
03
8B
8B
08
83
83
00
2
a
oF
03
02
04
FO
2
oD
co
co
co
co
483
485
486
487
489
490
518
519
520
521
522
523
524
+ Pufferadresse: $0200-SBFO9
PUFFER STA RDWRFLAG ==; RD/WR
LY #808
LDA (IOBL),¥ ;Puff-L
STA BUFL
INY
LDA {IOBL).¥ ;Puff-H
STA BUFH
CMP +$C0 s>$co907
BCS IOERROR — ;No LC!
cM #802 +<$02097
BCC I0ERROR —_;Zero-P.
ee es
*
BANK1? CMP
EXBRANCH BCS
+
BANK2 — LDX
Track und Sektor in Bereich
der 64K-Karte unwandela
$10 -> $0000 (nur teils)
$11 —> $1000
$12 -> $2000
$13 -> $3000
$14 -> $anog
$15 -> $5000
$16 -> Sev00
$17 —> $7000
$18 —> $8000
$19 —> $9990
S1A > $A000
$1B -> $B000
SiC -> $CO00 wird Bkl SD9O9
$1D -> SDO90 Bkz
S1E -> SEO0 Bk2
SIF -> $FO00 BK2
perenne rere re rere rene ner)
LY #804
LDA (IOBL),¥
Mp 4829
BCS ICERROR
CMP 4$10
BCC IOBRROR
:Track
:981F
$19
ASL ishiften
ny HY=805
ADC (IOBL),¥
STA AUXH
CMP +801
BCC IOKRROR
:Sektor
:>=Sol907
Bark 17 $CO00 -> SD9d0
#800
BCC READ?
cute +800
Scooo
+<$co0s
s$D900
BANK2 1>=80000
ORA = +200010000 ;Cx—>Dx
‘AUXH
LDX $cdBB
LDX $cOBB
BCC READ? istets
RAMEXIT — ;10-Error
‘$c083
LDX Sco83
READ? © LDY #0 Y=
READ ST
READER LDA
STY AUXL
LDA RDWRFLAG
CMP 41
BNE WRITE
pisRead
|. nach Main
Scags :AUXRD
(AUXL),¥
STA (BUFL),Y
INY
BNE READER
STX Scoo2
BEQ ZURUECK1
:MAINRD
Peeker 5/85
pe ZUSATZ-KARTEN:
V-24-Schnittstelle ..199,- Z-80-Karte LL
ee ee AE 80-Zeichen-Karte m.Softswitch 236,- 16 K-Language-Karte
4 Centronics-Karte von Epson fiir Graphik 210, fur Text
case: 91 02 Centronics -Schnitstlle ur 2 Drucker gleichzeitig :
CAAA: 08 Eprommer inci, Software :
C4AB; DO FO
C4AD: 8E 04 MAINAR Su eos ah ll 239
‘ Belegt keinen Siot, incl. Software fur 2708-27128 a
caso: 18 ZURUBCKL cLc okay! 128-K-Karte aut Antigo
C4B1: Ad 9D LDY +$9D
cass: 19 00 LDA $800 Fi = mT
Cass: 91 0 Son CSOBLpI bu RORTBE loppy: Contro ler
* FDC 4 fiir alle Laufwerke 199,- Bausatz wie links re 179,
C4B7: AS 08 LDA RONFLAG Leerplatine wie oben incl. Prom u. Eprom 2... 130,
caB9: 30 08 BMI ZURU
caBB: AD 81 6 WA Scoai ROROM h-C TT
pean ik Seeley Autopatch-Contro! er (sph Controle
fae 96 12 Bee RMCXIT 1.x 35 bis 2 x 80'Tr.-Disk, keine Patch-Disk notwendig, Patch DOS 3.3, Diversi-
3 7 RBCS GALA DO$2-¢, 4-6 (0D MOVER), Pascal 1.1, Pascal 12, CPM 2.2, ProDOSp
ead ahaa em oreenet 4.0.1, 1.1, 41-1; Sie kbnnen die Lautwerke unteréinander mischen .. 29,
cacS: 19 08
GACT: AD 83 Cl
CACA: AD 83 Ci
BPL ZURUECKS
ik Goes ADE Joy Stickoeiune .. 59,- Netzteil5A...149,-
cacD: 99 96 BCC RAMEXIT Gehiiuse fir 15%’ Slimline Laufwerk ... 39,-
CACF: AD 8B Ct ZURUECKS LDA $0088 BKL Gehdiuse fiir 2 5%" Slimline Laufwerke mit Platz fur ein Netzteil 159,-
cap2: AD 8B LDA $c0BB RDWR Gehdiuse fiir 2 314” Slimline Laufwerke mit Platz fir ein Netzteil We
* IBM®-Gehiiuse veces 29>
caps: 8E 08 RAMEXIT STX $cp9s MAINZP Floppy-Kabel 34poi. fir? Laufwerke mit Shugart-Bus 2. 35)-
cape: 60 RTS
Preh Commander Keyboards
Wir bieten Ihnen die Preh-Qualitét auch fiir Apple. AK 88 Spez. mit Gehause, An-
schluBkabel, Zehner-Tastenfeld, dt. Zeichensatz, Sondertasten fur
Ctrl-Codes und Rechenfunktionen 339, "aa
Preh Commander Keyboard AK 87, frei programmierbar
bis zu 10 Ebenen, pro Taste bis zu 250 Zeichen nur 559,-
TEAC 34” Laufwerk i 35 5 F579,
2 Speicherkapazitat 1 MB, (formatiert 640 KB) jetzt fir nur
? .
Die TempoHexe ("SpeeDemon”) macht den Apple:
Il, II+ und lle so schnell wie die popularen 1é6bit
Rechner. Die TempoHexe beschleunigt alle Pro-
gramme bis zu 31/2 mal — absolut ohne jede Soft-
ware-Anderung! Einfach einstecken, einschalten|
los.
A
R. Alverdes Nochmalige Preissenkung bei TEAC:
‘Schwarzwaldstr. 8a TEAC FD 55 A 1 x 40 irack 498,- TEACFD55B2x 40 Track ....
7602 Oberkirch TEAC FD 55E 1 x 80 Track 535,- TEAC FD 55 F 2 x 80 Track
Tel.: (07802) 3707
Telex: 752637 sted Philipps Slimline Floppy X3134 A, 2x80 Track solange Vorrat
nied 2 x 80 Track, % Bauh.
‘SONY 314" Laufwerk
Katalog gegen DM 1.~
in Briefmarken, Sony Laufwerk fir Ic a auf Anfrage
Nichebendlenedsts ‘ompatibles Laufwerk incl. Gehause + Kabel
Software und Peri-
phere fir den Ap EPSON DRUCKER
Il, IL-4, lle und Mac. EPSON FX 80 1670,- EPSON FX100
EPSON RX 80 1079, EPSON RX 80 FT
Patch-Diskette fir SONY 34’ Laufwerke — ermdglicht die Anpassung an ii/le und
kompatible Computer .. . . 80,- Manual vorab 15,-DM (wird beim Kauf
der Patch-Diskette angerechnet). do. fur 5%” Laufwerke 69,-
Apple und IBM Disketten Déb&Bdd SS/DD 10St. 62,- Yo Diehetten { Sony 31" Lautw. . 150,-
Akustikkoppler AK 300 mit FTZ-Nr. inci. Netztell : 549,-
ceapeis Eneslet Die Microfloppy mit Zukunft:
16K, 280, Diskcontroler je ..esesesseuen 110,- Speicherkapazitat: 2 x 1 MByte for-
80 Zeichenkarte mit Softswitch matiert: 2 x 640 kByte. AnschluBfertig
2 Zeichensatze a 195,- mit PROM-residenter Patchsoftware
Motherboard 48K ohne fir CP/M2.2, Apple DOS 3.3, Diversi-
Firmware ......
Erphi-controier mit Autopatch
Siemensiaufwerk F 122 .......
Philips X3134 2x80 Track
TEAC FD-58B 2x40 Track
TEAC FD-S5F 2x80 Track
Megaboard (Mainboard XT)
Color Graphic Card
Drive Controler
Monochrome Monitore
Farbmonitore -
Tastaturen fir IBM und Apple
Versand nur per Nachnahme oder Vorkasse
Weiteres Zubehér far Apple und IBM gegen
frankierten Ruckumschlag. Uedin g electronics
DOS 2-C, 4-C (DD MOVER), Apple
Pascal 1.1, Pascal 1.2, Pro-DOS
4.0.1, 1.1, 1.1.1 zum
Preis von Pal
Low Power Version =. 1740,-
10 MB Winchester 4490,
incl. Controler, Software und Gehause
Sonderangebot
Disketten 3%’ DS DD, 10 Stiick
zum Preis von a 150,-
Gesamt-Preisliste anfordern! Preise inclusive gesetzlicher Mehrwertstever.
Ulf Mohwinkel Electronic Holtewiese 2 DFU 02373/66877
Berliner StraBe 73 5750 Menden 1 Tel. 02373/63159
5090 Leverkusen Fettehenne
Peeker 5/85 15
APPLE || =
esl APPLE || PASCAL
APPLE |i Betriebssystem und
PASCAL Sprache
Erstes deutsches Referenzwerk samtlicher Befehle
und Systemroutinen von Apple II Pascal — mit Adden-
dum einschlieBlich Version Pascal 1.2!
Giiltig fiir Apple I, Il Plus, Me einschlieBlich der
128K/80 Zeichen-Konfiguration.
Betriebssystem kommentiert ausfithrlich und in
Deutsch Funktion und Benutzung der fast 60 System-
routinen des Apple II Pascal Betriebssystems.
Sprache ist das vollstandige, deutsche Referenzwerk
der ,,Apple Pascal“Programmiersprache mit u.a. Infor-
mationen iiber professionelle Pascal-Programmierung,
Turtlegraphics, Programmbibliothek etc.
Apple II Betriebssystem, In Vorbereitung:
= ig: Addendum Pascal 1.2, ein
272 Seiten, DM 49, Zusatz zum Buch ,.Betriebssystem* fiir 1.2-Benutzer in
Apple II Sprache, Deutsch.
216 Seiten, DM 39,
Focal Addendum, etwa 100 Seiten, tei Verleg Geauet
2
Theo-ProselWeg I i LL
8000 Miinchen 40
Nach Unterlagen von Apple Deutschland hergesteilt
APPLE Il - | Loco -
Anwenderhandbuch | Jeder kann programmieren
(L. Poole) (Daniel Watt)
Erst mit Hilfe dieses Leitfadens werden Sie [WPF p Buch des Jahres in den USA. Far die
Ihren Apple Ilerflgrech einsetzen, denn yd Computer C64, ATARI, APPLE I, IBM-PC
Text und Bildmaterial gehen weit uber das und 199.
hinaus, was herstellerseitig an Li i . Hochwertiges Textbuch fiir Logo-Kurse fiir
angeboten wird. zu Hause und im Lehrbereich.
416 Seiten, Softcover, DM 56, A4,DM 59,
APPLE II PASCAL - APPLE II - Bewegte 3D-Graphik
Eine praktische Anleitung (Phil Cohen)
(A. Luehrmann, H. Peckham) Selbstentworfene Graphiken und Dia-
Unentbehrlich fir alle, die die Programmier: gramme — animiert oder als Standbilder —
sprache PASCAL lemen wollen und eben oder réumlich: alle erforderlichen
Zugang 2u einem Apple Computer haben 2 BASIC Programme mit Erklarung finden
544 Seiten, Softcover, DM 59, Sie in diesem Buch
ca. 190 Seiten, Softcover, DM 49,
§ Computer fiir Kinder Apple Maschinensprache
(Sally Greenwood Larson) Fir BASIC-Programmierer der einfachste
Ein Buch fiir Kinder, ihre Lehrer Zugang zur Muttersprache des Apple. Wesent
und Eltern. SPRACHE lich schnellere Maschinenprograrnme, direkte
} nputer fiir Kinder* richtet Manipulation des Mikroprozessors 6502 im
sich an Kinder im Alter von 8 bis } 5 Apple — als Briicke dorthin bendtigt dieses
13 Jahren, fir deren Interesse an | *2~ qh =| Buch nur die drei BASIC-Befehle, POKE,
] Computern dieses Buch bewukt ‘ CALL, PEEK. D. Inman/K. Inman. DM 49, —
~ geschrieben wurde.
Unterhaltsam und leicht verstindlict
A4 quer, Fadenheftung, DM 29.80
gralik gg
PLOT 2.0
Ein komfortabler Funktionsplotter
von Hans-Martin Eng
Kennen Sie auch das folgende Problem? Vor Ihnen liegt eine mathemati-
sche Funktion und Sie k6nnen nichts damit anfangen. Hilfreich ware es
jetzt, wenn man wiBte, wie deren grafische Darstellung aussieht. Wer
jedoch schiittelt sich eine fertige Kurvendiskussion aus dem Handgelenk
und hat dann auch die GewiBheit, daB alles stimmt? Und wer wollte schon
die Funktion Punkt fir Punkt mit der Hand malen? Aber da Sie einen
Apple besitzen, kann ich Ihnen Abhilfe versprechen. Das nachstehende
Plotprogramm nimmt Ihnen das Zeichnen ab.
Peeker 5/85
Was kann PLOT 2.0?
Bei der Erstellung wurden folgende Anfor-
derungen berlicksichtigt: Das Programm
soll
— die Eingabe der Funktion wahrend des
laufenden Programms gestatten,
—weitgehend meniigesteuert ablaufen,
— sogenannte Scharparameter (r, s und t)
unterstitzen und die Funktion in Abhan-
gigkeit von diesen Parametern mehrmals
zeichnen,
— die Funktion in einem tiblichen Achsen-
kreuz darstellen, das mit einer Skalenein-
teilung versehen ist,
— ,Pole“ und andere Stellen, an denen die
Funktion nicht definiert ist, intern ab-
fangen,
— wahrend die Funktion gezeichnet wird,
eine Zusammenfassung wichtiger Daten
auf der Textseite bereithalten und auf Ta-
stendruck wiedergeben,
—auf Druckern mit Grafikinterface die Gra-
fik nebst samtlichen verwendeten Darstel-
lungsparametern ausdrucken.
Unter Beriicksichtigung dieser Vorgaben
entstand das Applesoft-Basicprogramm
PLOT.2.0 mit dem Assemblerprogramm
PLOT.B. PLOT.2.0 ladt sich selbst in den
Speicherbereich oberhalb der ersten Gra-
fikseite ($4001), dann PLOT.B in den Be-
reich zwischen $0D00 und $0EOE. Das
Programm belegt ca. 13400 Bytes. Dabei
ist der Speicherbedarf der Variablen und
des Maschinenprogramms nicht berlick-
sichtigt.
Die Theorie des Plottens
Hier einige Erlauterungen zum Programm
und den darin auftauchenden Formein und
Algorithmen:
Der Zusammenhang zwischen Bildschirm-
und normalen Koordinaten ist linear. So
kénnen die Bildschirmkoordinaten als ein-
fache Funktionen xs (x), ys (y) wiederge-
geben werden. Allgemein kann der Zu-
sammenhang zwischen Bildschirm- und
Normalkoordinaten wie folgt definiert
werden:
S—S, _ Sy—-SL s: Schirmkoordinate
ASA, yA n: Normalkoordinate
Indizes: H-gr8Bter Wert, L-niedrigster Wert
Eine einfache Umformung liefert:
NySL-SHNL
S= Le
SSL
mont
Im besonderen gilt im Falle des
Bildschirms fur die x-Koordinaten:
Hires-
Sy = 271; 8, = 0; my, nL > XH, XL
und fur die y-Koordinaten:
Sy = 0; S, = 191; ny, nL —> YH, yb
Nun erfolgt noch die Umbenennung der
Terme. Der Faktor vor dem n wird durch
MX oder MY ersetzt, der Summand durch
BX oder BY (analog zur Normaldarstellung
der Geradengleichung: y = m-x + b). So-
mit erhalten wir die Darstellung der Funk-
tionen XS (X) und YS (X) in Zeile 3520 des
Programms.
Die Halbkreisfunktion F(X) = SQR (R * R—
X * X) im Intervall [-6,6j. Der Parameter R
nimmt die Werte 2 und 4 ein.
Vielfaltige Darstellungsméglichkeiten
Der DarstellungsmaBstab wird durch Ein-
gabe der Darstellungsgrenzen festgelegt.
Da man jedoch beispielsweise bei der
Halbkreisfunktion gerne einen Halbkreis
sehen mochte und nicht irgendeine (wenn.
auch hibsche) Ellipse, wurde die Méglich-
keit geschaffen, den MaBstab der x-Achse
dem der y-Achse anzupassen. Diesen
Wunsch signalisiert man durch die Einga-
be 0,0" oder ,,“ fur eine Achse. Das
Ergebnis ist jedoch oft noch nicht befriedi-
gend. Daher kénnen noch nachtraglich
kleine Veranderungen am MaBstab vorge-
nommen werden. Man kann die Achsen
strecken oder stauchen und auBerdem
das Verhaltnis der positiven zur negativen
Teilachse beeinflussen. Das geschieht
durch die Eingabe zweier Zahlen. Bei der
Streckung gibt man an, in welchem Ver-
haltnis die alten zu den neuen Grenzen
stehen sollen (2,1 heiBt, daB die neuen
Grenzen halb so groB wie die alten sind).
Andert man das Verhaltnis der Teilachsen
zueinander, bleibt der MaBstab unberiihrt.
Nachdem die Anpassung durchgefuhrt ist,
verhalt sich der positive Teilast zum nega-
tiven wie die zuerst eingegebene Zahl zur
zweiten (z.B. vorher: XL = -3, XH = 3,
Eingabe: 2,1; danach: XL = -2, XH = 4).
Die Funktion selbst wird wie eine Basic-
Zeile eingegeben, wobei das ,DEF FN
Y(X) schon vorgegeben ist. Hier ein
Beispiel:
Y = SIN (X) #T
Nach der Eingabe werden Sie gefragt, ob
alles stimmt. Dies ist der kritischste Punkt.
Ein Syntaxfehler fuhrt zum Programmab-
bruch, wenn die Funktion zum ersten Mal
verwendet wird.
Scharparameter
Im Programm sind die Variablen R, S und T
(r, s und t) als Scharparameter vorgese-
hen. Diese machen meines Erachtens
manche Funktionen erst interessant. Be-
stes Beispiel: f(x) = exp (tx). Flr jedes t
hat diese Funktionenschar einen gemein-
samen Punkt in (0,1). Oder f(x) = sin (x-t):
Ist t ein gerades Vielfaches von x, sind
beispielsweise die Schaubilder deckungs-
gleich. Jeweils nach der Eingabe einer
Funktion wird gefragt, ob, und wenn ja,
welche Parameter in der Funktion verwen-
det werden. Wird speziell T verwendet,
bietet das Programm die Option an, T in
einer FOR-NEXT-Schleife zu durchlaufen.
So kann man sich lastiges Neueintippen
sparen.
Das Programm legt die Parameterwerte in
einer Art Stack ab. Dazu wird der Pointer |
EN i is.
Vy
Die Exponentialfunktion F(X) = S * EXP (—
R * X * X) * COS (T * X) zwischen den
Grenzen -8 und 8(R = 0,1;S = 1; T=2).
Peeker 5/85
erhoht, wenn eine Kurve bis zum rechten
Rand durchgezogen ist. Dann kommen die
Parameterwerte in das Array P und die
Stelle (x, |). | wird wieder auf 0 gesetzt,
wenn der DarstellungsmaBstab oder die
Funktion geandert oder die Grafik gelscht
wird. Beim Ausdrucken werden die Ele-
mente des Arrays bis zum aktuellen Poin-
terwert ausgegeben.
Wenn Sie die Kreiszahl 2 oder die Evier-
sche Zahl e bendtigen, miissen Sie diese
nicht als Konstanten in die Funktion
schreiben. Die Variablen E und PI werden
am Anfang des Programms auf den richti-
gen Wert gesetzt, Sie kénnen sie also in
die Funktion einbauen. Ebenso stellt das
Programm den Briggsschen (Zehner-)Log-
arithmus als FN LG(X) zur Verfiigung.
KOXKAAXXKAY?
XO
Die Funktion F(X) = COS (X —T * Pi/3) im
Bereich —6,3; 6,3. Der Parameter T durch-
lauft die Werte 0, 1, 2, 3, 4, 5.
Die Achsen
Das Unterprogramm zum Achsenzeich-
nen (4900 ff.) zieht die y-Achse zwischen
xs(0), Q und xs(0), 191; die x-Achse zwi-
schen 0, ys(0) und 271, ys(0). Dann wird
festgestellt, ob eine der Achsen am Rand
des Bildschirms zu liegen kommt. Ist dies
der Fall, wird eine Korrekturvariable ge-
setzt, die daflir sorgt, da8 der Skalenstrich
um zwei Bildschirmraster vom Rand weg
verschoben wird. Dann wird der betrags-
gréBte Wert der Darstellungsgrenzen ei-
ner Achse an ein Unterprogramm (3620
ff.) ibergeben. Dieses sorgt dafiir, daB der
langere Teilast einer Koordinatenachse
maximal zehn Skalenstriche aufweist.
Druckerausgabe
Die Printroutine (5100 ff.) ist auf einen
EPSON FX-80 mit Voligrafikinterface zu-
Peeker 5/85
geschnitten. Daher erklare ich besser, was
die Steuerbefehle bedeuten:
PRINT CHR$(Q9);
Command-Character des
CHR$(16) um.
ESC M stellt Schonschrift mit 96 Zeichen/
Zeile ein.
ESC | seizt den linken Rand auf Spalte 6.
ESC Q setzt den rechten Rand auf Spalte
90.
ESC A setzt einen héheren Zeilenabstand.
ESC D definiert Tabulatorpositionen.
ESC N bewirkt, da8 der Drucker die Perfo-
ration Uberspringt.
CHR$ (9) beférdert den Druckkopf auf die
nachste Tabulatorposition.
PRINT CHR$ (16);“G“ veranlaBt das In-
terface, die Grafik in NormalgréBe auszu-
drucken.
CHR$(16) stellt den
Interface auf
Fehlerbehandlung
Zur Fehlerbehandlungsroutine muB nicht
viel angemerkt werden. Zuerst wird eine
Maschinenroutine aufgerufen, die ein
» Uberlaufen" des Stacks verhindert. Dann
wird die Art des Fehlers Uberpriift. Wurde
Ctrl-C gedriickt, springt das Programm ins
Hauptmenti ab Zeile 1800. Anwenderfeh-
ler beim Input bewirken dasselbe wie im
normalen Betrieb. Tritt ein ,,Division by
Zero“-, ,lllegal Quantity“- oder ,,Qver-
flow“-Error auf, wird ein neuer Anfangs-
wert von X gesetzt und die Zeichenschlei-
fe neu gestartet. Bei allen anderen Fehlern
wird auf Textdarstellung umgeschaitet und
eine Fehlermeldung ausgegeben. Ach-
tung! Tritt ein Syntaxfehler in Zeile 1680
auf, so ist meist ein Eingabefehler bei der
Funktionseingabe schuid. Priifen Sie des-
halb genau nach, ob alle gedffneten Klam-
mern auch wieder geschlossen werden.
Programmverschiebung
Die Zeilen 5600 ff. treten in Aktion, wenn
das Programm nicht im Speicherbereich
oberhalb der ersten Grafikseite liegt. Dann
wird der Execfile PLOT.PROTECTOR
aufgerufen. Dieser Execfile sollte die fol-
genden Befehle enthalten:
POKE 103,1:POKE 104,64:POKE 16384,0
(setzt den Pointer zum Anfang des Ap-
plesoftprogramms auf $4001 und die
Adresse $4000 auf 0.)
LOAD PLOT.2.0, CALL 54514 (diese
Routine setzt die Ubrigen Pointer richtig),
RUN.
Die Funktion F(X) = T/X mit T = -1 und 1
im Intervall [-10, 10].
Alternativ dazu kann man auch ein kurzes
Programm schreiben, das den Execfile di-
reki aufruft. Das kann erhebliche Zeitvor-
teile bringen, da das zweimalige Laden
des Hauptprogramms doch einige Zeit in
Anspruch nimmt.
Die Assemblerroutinen
Das Assemblerprogramm gliedert sich in
vier Teile auf. Der erste Teil besteht aus
dem Unterprogramm, das die darzustel-
lende Funktion einliest, in den Basiccode
Ubersetzt und in die Zeile 2 des Basic-
programms Ubertragt. Der zweite Teil
Ubersetzt den Inhalt dieser Zeile zurick in
ASCIl-Code und schreibt alies in einen
Puffer. Der dritte Teil ist eine Hilfsroutine
fur die Fehlerbehandlung in Zeile 5500 ff.
Der vierte Teil besteht aus Tabellen. Den
Eingabeteil (Zeilen 45 bis 95) Ubernahm
ich aus einem im CHIP Special 2/80 verdf-
fentlichten Programm. Ich eriaubte mir,
das dort nur vom Miniassembier disas-
semblierte Programm mit einem besseren
Assemblerprogramm in eine lesbarere
Form zu bringen. AuBerdem muBte ich
einen relativ bosen Tippfehler des Autors
korrigieren. Mir passierte es namlich zu
Anfang, wenn sich im Speicher noch eine
alte, langere Funktion befand, daB diese
alte Funktion nicht vollstandig geléscht
wurde. Dies fuhrte zu Syntaxfehlern im
Basicprogramm. Des weiteren fiigte ich
Zeile 45 ein, da das sich anschlieBende
Ruckiibersetzungsprogramm sehr regen
Gebrauch von den Registern macht.
Diese Routine beginnt mit Zeile 100. Sie
nimmt ein Byte aus Zeile 2 und verzweigt
dann, je nachdem, ob es sich um ein Ba-
sic-Token oder ein ASCII-Zeichen han-
delt. Ein ASCil-Zeichen wird direkt in den
Puffer geschrieben. Bei einem Token wird
dessen Wert mit denen der Tabelle 2 ver-
glichen, dann wird aus Tabelle 3 der zuge-
19
PHIBBEBEBMAE OG
hdrige Pointer entnommen. Dieser Pointer
zeigt auf das Leerzeichen am Anfang der
zugeordneten Zeichenkette. Das nachste
Leerzeichen signalisiert das Ende des
Strings. Ist die Funktion als Ganzes tiber-
setzt, steht in STRPNTL die Lange des
Funktionsstrings im Puffer. Zum Schlu8
werden die von Zeile 45 geretteten Regi-
ster wieder zurlickgespeichert, dann
springt das Unterprogramm wieder in das
Basicprogramm.
Eine Bemerkung zur Token-Tabelle. Ich
verzichtete bewuBt darauf, alle méglichen
reservierten Wo6rter zu beriicksichtigen.
Ich sehe nicht ganz ein, was ein FRE(0) in
einer mathematischen Funktion zu suchen
hat. Wer jedoch Wert auf irgendeinen
Exoten legt, sollte diesen zur Tabelle 1
hinzufligen, dann abzahlen, ab dem wie-
vielten Byte nach der Startadresse der Ta-
belle 1 das Space steht und diesen Wert
Zur Tabelle 3 hinzufiigen. AnschlieBend ist
noch in Tabelle 2 das Token einzutragen
und der Wert von $0D6B um 1 zu erhé
hen. Findet die Ubersetzungsroutine ein
unbekanntes Token, wird ein ,,?“ in den
Puffer geschrieben.
Die Maschinenroutine in den Zeilen 164
bis 172 erwies sich als notig, weil manche
Funktionen (etwa die Halbkreisfunktion)
tiber einen weiten Bereich keinen reellen
Wert annehmen. Treten jedoch solche
Fehler gehauft auf, lduft der Stack schein-
bar Uber und es tritt ein ,Out of Memory
Error“ auf. Die genannte Routine bereinigt
dieses Problem auf einfache Weise. Ich
44
habe das Programm selbst durch ein stan-
diges F(X) = SQR(-1) nicht aus der Fas-
sung bringen k6nnen.
SHTABLE schlieBlich enthait einen kleinen
Strich als Shape. Dieser Strich bildet in der
Grafik die Skaleneinteilung.
So, nun bleibt Ihnen nur noch ibrig, das
Programm in Ihren Apple einzuprogram-
mieren oder die entsprechende ,,Peeker“-
Sammeldiskette zu bestellen. Ich win-
sche Ihnen viel SpaB beim Plotten Ihrer
Funktionen.
Anmerkung: Beim Eintippen der Zeile 2 ist
darauf zu achten, daB exakt 228 Doppel-
punkte getippt werden. Das Zahlen kann
man sich sparen, wenn man die Zeile ohne
Leerzeichen bis zum ersten Piepston ein-
—
PLOT.2.0 1289 PRINT "Gebrauch machen vollen.";: GET A$: PRINT
1299 PRINT "Nach jeder Eingabe werden Sie gefragt,"
PRINT "ob Eingabefehler aufgetreten sind, Si
1 Goro 1999 PRINT "konnen dann gegebenenfalls korrigieren.”
2 DEF FN Y (xX) = 1300 PRINT "Wahrend die Funktion gezeichnet wird,": PRINT
rite "kann man durch Betatigung einer Taste": PRINT "auf
den Textbildschirm umschalten. Dort": PRINT "steht
eine Kurzzusamnenfassung wichtiger"
te 1519 PRINT "Daten Nochmaliges Betatigen einer Tas-":
3 RETURN PRINT "te 1aSt wieder die Grafik erscheinen.”
‘4 REM Bitte erhéhte Vorsicht beim indern der ersten 1520 PRINT "Wenn Sie <Ctr1-C> betatigen, springt": PRINT
Pkopeamavetion walten lasdont "das Programm ins Hauptmen. Dort kén-": PRINT "nen
§ REM Dies kano 2a bosed Cberradchuagea bis Kid ’Ziw etwa avfgetretene Eingabefehler": PRINT "korigiert
Programaverlust ihren! und die Funktion neu gezeich-": PRINT "net werden. ":
1000 IF PEEK (194) < 64 THEN 5600 ere
1910 ONERR GOTO 5590: REM diverse Konstanten 1538 COSUE SAMO; COSUB 3768; GOSUB S0ES.
1920 PI = ATW (1) « 4:6 = EXP (1):CHZ = 36:cLg = - 1340 REM Zusammenfassung
868:KEE = - 16584: APE - 3072 1350 HOME : PRINT "Zusammenfassung :"
1930 HTS = CHRS (9):E$ = CARS (27):D$ = CHRS (4):DPS$ = 1360 PRINT "Die Funktion lautet :": PRINT : PRINT FS
HRS (16): DIM P(2,29): DEF FN LG(X) = LOG (x) / Loc 1370 PRINT : PRINT : PRINT "Parameter ";: ON VAL (PS)
(9) GOTO 1399, 1490, 1410. 1429, 143¢, 1449, 1450
1940 ASZ = 3528: IF PEEK (AS%) < > 32 OR PEEK (ASE + 20) TODA ERIN: ENINT TES: Nerdon, Retna FereReler
< > 213 OR PEEK (ASZ + 270) < > 57 THEN PRINT Vacwendes,"; GOTO 1478
DS: "BLOAD PLOT.B,A";ASZ 1590 PRINT "R": GOTO 1470
1100 POKE 233,13: POKE 232,162: REM SHAPE-TABLE 1400 PRINT "S": GOTO 1470
1110 HOME : PRINT TAB( 16):"PLOT.2.9" 2426: PRUE vEr) COTO! 1468
1120 VTAB 19: PRINT TAB( 11); "Von Hans-Martin Eng" SAGE RINE Rind “St ee0 ASE,
1130 VTAB 12: PRINT TAB( 13);"September 1983" 1436 PRINT *R und T";: GOTO 1468
1140 VTAB 14: PRINT TAB( 15);"Erwostert. 1449 PRINT "S una 7"; : GOTO 1460
1150 VTAB 16: PRINT TAB( 14);"Juni/Juli 1984" Hees PRINT OBS and Ths . .
1160 VTAB 18: PRINT TAB( 21):"Letzte Anderungen :" 1466 IF RIGHTS (P$,1) = "K" THEN PRINT " / T in Schloife’
1170 VTAB 29: PRINT TAB( 11):"Oktober/November 1984"; ATH PRINT +, PRINT: PRINT SGrengon :”> PRINT TAB( 5):
1180 VTAB 21: POKE - 16368,9: GET AS A Hg
1199 HOME : PRINT "Winschen Sie eine Kurzeinfuhrung 7” 1499 PRINT TAB( 5):"Y 2 "sYLi" YH .
PRINT “Bettigen Sie bitte ‘J' oder 'N'™ 1499 VTAB 23: PRINT TAB( 29):"Woch Fehler ? ":: GOSUB
1200 GOSUB 4700: IF AS = "N" THEN 1330 ‘4700; IF AS = "NY THEN 1599 on
2210 HOME : PRINT "Dieses Programm stellt Funktionen in" ne HOME! ; PRINT "Wo! ‘trates nogh Fehler aur:
PRINT "hockaufldsender Grafik auf dem Bild-": PRINT GIS VIA 6; TAB 10. FRING] — Fuakeion”
"achirm dar. Etwa auftretende Polstellen": PRINT 1520 VTaB 10: HTAB 10: PRINT "2 ~ Parameter’ .
‘teerdon_intarnvabestangen;;cer! Sareteic 1830 VTAB 14: HTAB 10: PRINT "3 - Darstellungsgrenzen’
1220 PRINT "lungsmaBstab ist durch Wahl der Darstel-" S040 YEAB: 18) HTAB 28 FREN “O'- ketae Fehler '
PRINT “iungegrenzen (relativ) rrei festiegoar.” 1550 VTAB 23: HTAB 13: PRINT "Betreffende Taste dricken";
{24H PRINT "Die Ledel techs gani (Pi) end dle Murer” 1560 GET AS: IF VAL (AS) = 0 AND AS < > "9" OR VAL (AS) >
PRINT "sche Zahl (e) kénnen ebenso, wie": PRINT TaN see
gaaktlonsperauetar’ (2 a,4) 10 der tyne PRIME 1570 ON VAL (AS) GOSUB 3000.3700,5060
"tion verwendet werden. Auf diese Weise” ines one gasarsenet
1249 PRINT "sind Furtionsscharen darstellbar. Die": PRINT et Win e
"Scharparaneter werden vor der Zeichnen": PRINT 1600 GOSUB 4410: REM Paraneteroingabe .
sabgetragt." 119 HOR FORE — 16S82.8: PORE 255,2: HOOLORN'S: SCALE
0 ii 2 1: GOSUB 4!
FY "zum ” "YER « 20
oe we ee ne 1629 X9 = 0:57 = 1 / MK: REM Initialisterung
1269 PRINT "oder :": PRINT "Y= (X- 7) / (K#X+1) « 1630 IF RIGHTS (P$,1) = "K" THEN FOR T = 7) TO Tl STEP
(B ~ ExP(X))" 7S: REM Starte T-Schleife
1270 PRINT "Der Parameter ‘T! kann sukzessive mit": PRINT 1649 GOSUB 4690:XA = XL: REM Generiere Liste in Textseite
Walekpeten Werten gurbhiduten wordea,": PRINT "Neon 1650 X = XA: IF X > XH THEN 1750: REM Start x-Schleife
Sie 'r' verwenden, werden Sie ge”: PRINT "fragt, ob 1660 IF PEEK (KEZ) > 128 THEN GOSU8 4799: REM umschalten?
Sle vou. diseee Mecianea™ 1670 VTAB 23: HTAB 14: PRINT X; SPC( 10);: REM x in Liste
. 1689 IF X0 = 0 THEN XO = FN XS(X):YO = FN YS( FN ¥(X)):
GOTO 1750: REM Ausgangspunkt
20 Peeker 5/85
BBE BBR Mp GRAIKBA
1690
1700
in
1720
1730
1749
1750
1760
170
1780
1799
1800
1810
1820
1830
1849
1858
1860
1870
1880
1890
1900
1919
1926
1940
1950
1960
1970
1980
1990
2000
2019
2020
2930
2040
2050
2060
2079
2080
2090
2190
2110
2120
2130
2140
2150
2980
2999
3000
3010
3020
3030
3049
3050
3060
3070
360
3030
3120
1930 REM
X1 = FN XS(X):¥1 = FN YS( FN Y(X)): REM Endpunkt.
IF Y1 <9 THEN Yl = 9: REM gegen ‘Illegal Quantity’
IF Y1 > 191 THEN ¥1 = 191
IF Y1 = 191 AND Y@ = 191 OR YL
X90 = 9: GOTO 1750: REM => Pol
IF Y1 = 9 AND YO = 191 OR Y1 = 191 AND YO = 0 THEN
XO = 0: GOTO 1680: REN Keine Verbindung zwischen
Polen
HPLOT X.Y 70 X1,¥1:X0 = X1:¥0 = Yl: REM Zeichnen /
neuer Ausgangspunkt
IF X < XH THEN X= X + ST: GOTO 1660
T= 1+ 1:P(0,1) = R:P(1,1) = $:P(2,1)
Parameter-Liste
IF RIGHTS (PS,1) =
1630
GET AS: REM Warteschleife
POKE 253,1: GOSUB 4890: HOME : REM Text / Hauptnenii
PRINT "Wollen Sie :": VTAB 6; PRINT “1 —
Darstellungserenzen ndern*
VTAB 8: PRINT "2 ~ Parameter andern”
VTAB 19; PRINT "3 - Funktion andern”
VTAB 12: PRINT "4 - Bildschirm saubern"
VTAB 14: PRINT "5 — Alte Daten auflisten"
VTAB 16: PRINT "6 - Wieder zeichnen"
VTAB 18: PRINT "7 ~ ausdrucken"
VTAB 23: PRINT "8 — aufhéren"
GET AS: IF AS =" " THEN GOSUB 4800: coTO 1880
IF VAL (A$) < 1 OR VAL (A$) > 8 THEN 1880
ON VAL (A$) GOTO 1920, 1950, 1980, 2010, 2049, 2079,
2100,2130
REN 1 Darstellungsgrenzen
GOSUB 3960: HGR : POKE - 16302,0: HCOLOR= 3: GOSUB
4999: GOTO 1790
Eingabe Grenzen/zeichne Achsen und skaliere/Menit
REM 2 Parametereingabe
GOSUB 4499: GOTO 1790
REM Eingabe Paraneter/Meni
REM 3 Funktionseingabe
GOSUB 3090: GOSUB 3709: GOSUB 4410: GOTO 1790
REM Eingabe Funktion/Parameter?/Parametereingabe/
Menit
REM 4 Bildschirm
I=: HGR : POKE ~ 16392.0: GOSUB 4909: GOTO 1799
REM Zeichne Achsen und Skala/Meni
REM § Datenliste zeigen
GOSUB 4600: GOTO 1780
REM Zusammenfassung / Meni
REM 6 Zeichnen
POKE 253,2: GOSUB 4890: GOTO 1620
REM Grafikseite/Mend
REM 7 Ausdrucken
POKE 253,2: GOSUB 4800: GOSUB 5100: GOTO 1790
REM Grafikseite/Ausdruck/Mend
REM 8 Programmence
© AND YO = 0 THEN
T: REM
‘THEN XO = 0: NEXT T: REM s
TEXT : HOME : VTAB 19: PRINT "Hoffe, es hat Spai
gemacht !"
VTAB 20: HTAB 36: PRINT "HME";
END : GOTO 1799: REM fir evtl. CONT
REM Anfang Subroutinen
REM Funktionseingabe
1 =0: HOME : PRINT "Bitte geben Sie die
darzustellende": PRINT "Funktion ein |"
VTAB 19: PRINT FS: VTAB 10: GOSUB 5400
VTAB 19: CALL CL: PRINT FS;: CALL CLZ: PRINT ; VTAB
22: PRINT "Ist das richtig ? ";: CALL CLE
GOSUB 4700: IF AS = "N" THEN PRINT "Bitte
korrigieren !": GOTO 3010
RETURN
REM Darstellungsgrenzen
IF NOT (XL = 0 AND XH = 0 AND YL = @ AND YH = 9)
THEN HOME : GOTO 3260: REM alte Werte zeigen
HOME : PRINT "Bitte Grenzen eingeben! (Anweisungen?)"
GOSUB 4780: IF AS = "N" THEN VTAB 17: GOTO 3150
PRINT : PRINT "Soll der MaGstab der x-Achse dem
der": PRINT “y-Achse angeglichen sein, geben Sie
ie": PRINT "gewiinschten Darstellungsgrenzen fir"
PRINT "e ine Achse ein, fir die andere”: PRINT
“einfach 0.0 ."
PRINT “Werden kleinster und groSter Wert in": PRINT
"falscher Reihenfolge eingegeben, werden": PRINT
"sie vor Programm vertauscht."
PRINT "X-Min, Y-Min sollten immer kleiner oder"
PRINT "gleich @ , X-Max , Y-Max immer groBer": PRINT
"oder gleich @ gewahlt verden (sonst": PRINT "konnen
keine Achsen gezeichnet werden)"
PRINT "Das Programm setzt daher falsch gesetzte"
PRINT "Werte aut 9 !"
3139
3149
3150
si6o
3170
3180
3199
3209
3210
3220
3230
3249
3258
3260
3270
3280
3290
3300
3310
3320
3330
3340
3350
3360
3379
3380
3390
3490
3410
3420
3430
3440
3450
3460
PRINT "Sollten Sie nicht ganz mit dem Darstel-"
PRINT "lungsmaSstab einverstanden sein, k6nnen":
PRINT "Sie das VerhAltnis von negativem zu po-"
PRINT "sitivem Achsenabschnitt verandern ode:
PRINT "die Achsen strecken oder stauchen."
GET AS: HOME : PRINT "Bitte Grenzen eingsben !"
VTAB 7; PRINT : INPUT "X-MIN , X-MAX : ";XL,XH
VTAB 10: INPUT "Y-MIN , Y-MAX : ";Y¥L, YH
IF XL > XH THEN X = XU:XL = XH:XH
IF YL > YH THEN X = YL:YL = YH:YH
IF YL > 0 THEN YL = 0
IF YH < 9 THEN YH = 0
IF XL > 9 THEN XL = 0
IF XH < 0 THEN XH = 0
IF YL = YH AND XL = XH THEN PRINT CHRS (7);
"Eingabefenler | Bitte wiederholen !": GOTO 3150
IF YL = YH THEN GOSUB 3570
IF XL = XH THEN GOSUB 3550
VTAB 13: PRINT "Die Darstellungsgrenzen wurden wie
folgt festgelegt'
PRINT : PRINT “Kleinstes X : ";XL;: CALL CL%: PRINT
PRINT "GroBtes X —: ":XH;: CALL CL%: PRINT
PRINT : PRINT "Kleinstes Y : ";¥Li: CALL CL$: PRINT
PRINT "GroBtes Y "YH; : CALL CL: PRINT
PRINT : YTAB 22: PRINT "Ist das richtig ? ":: CALL
CLE
GOSUB 4709: IF AS = "J" THEN PRINT : GOTO 3590
T= 0:XO = 1:Y0 = 0X1 = 1:¥1 = Tew = Tomy = BX =
:BY = J: REM Clear Hilfsvariablen
PRINT "Schwere Fehler ? ";: GOSUB 4700: IF AS = "J"
THEN PRINT : VTAB 1: PRINT "Dann bitte wiederholen
Im: GOTO 3150
HOME : PRINT "Kleine Anderungen :"
PRINT : PRINT " x-Achse strecken ? ";: GOSUB 4700
IF AS = "J" THEN INPUT "Verhdltnis ";X0,X1
PRINT : VTAB 5: PRINT " y-Achse strecken ? ";: GOSUB
4700: IF A$ = "J" THEN INPUT "Verhaltnis ";Y0,¥i
PRINT : VTAB 8: PRINT "Nun bitte das Verhaltnis + /
= Achse!": PRINT : PRINT " flr x-Achse ? ";: GOSUB
4700: IF AS = "J" THEN INPUT " + , — ";MX,BX
PRINT : VTAB 12: PRINT " Fir y-Achse ? ";: GOSUB
A709: IF AS = "J" THEN INPUT " + / — ":MY,BY
IF (X0 = 0 AND X1 <>) OR (X1 = AND XO <> 0) OR
(¥@ = 0 AND Y1 < > @) OR (Y1 = @ AND YO < > 9) THEN
PRINT : PRINT "Nie mit 0 strecken oder stauchen !"
Goro 3360
VTAB 20: PRINT “Alles o.k.? ";: GOSUB 4700: IF AS =
"NY THEN PRINT : VTAB 2: PRINT "Bitte wiederholen
Is: CALL CLE: GOTO 3369
IF X9 <> @ AND X1 < > O THEN XL = XL / XO % X1:XH =
XH / XO X2
IF YO <> @ AND Yl <> THEN YL = YL / YO * Y1:YH =
YH / YO # YL
IPF MX <> 0 OR BX < > 0 THEN XO = XH — XL:X1 = K+
BX-XH = MX / XL XO:XL = - BX / X1 » XO
IF MY < > @ OR BY < > 9 THEN YO = YH - YL:Y1 = My +
BY:YH = MY / Yl »* YO:YL = - BY / Yl * YO
HOME : GOTO 3269
3470:
3490
3500
3510
3520
3530
3540
3850
3569
3570 FA
3590
3600
3610
3620
3690
3700
3710
720
3739
3749
3750
REM Unrechaung Bildschirm
WX = 279 / (KH - XL):BX = — WX» XL
My =~ 191 / (YH ~ YL):BY = - MY « YH
DEF FN XS(X) = INT (MX ® X + BX + .5): DEF FN YS(X)
= INT (MY # X +BY + .5)
RETURM
REM X-Achse an y-Achse anpassen
FA = 279 / 191:XL = FA ® (YL — YH) / 2:KH = FA # (YH
YL) / 2. RETURN
REM y-Achse an x-Achse anpassen
= 279 / 191:¥L = (XL ~ XH) / (2 4 FA):YH = (XH ~
XL) / (2 » FA): RETURN
REM far Skalierung
X= INT ( FN LGiX))
+1
ST = X9 - 1:X0 = EXP ( LOG (10) » X0):ST = EXP ( Loc
(19) » st)
RETURN
REM Parameter ?
HOME : PRINT "Wurden Parameter verwendet 7";
4700: IF AS = “N" THEN P§ = "Q": RETURN
PRINT : PRINT "Bitte die betrefrende Taste fir die
ge-": PRINT "winschte Kombination von Parametern”
PRINT "betatigen !"
VTAB 7: NTAB 10: PRINT "1 — nur R”
VTAB 9: HTAB 10: PRINT "2 ~ nur S"
VTAB 11: HTAB 19: PRINT "3 - nur T*
VTAB 15: HTAB 10: PRINT "4 — R und Ss"
IF XP < FN LG(X) THEN XO = x0
cosuB
Peeker 5/85
21
3760 VTAB 15: HTAB 10: PRINT "5 - R und T”
3770 VTAB 17: HTAB 10: PRINT "6 - S und T”
3780 VTAB 19: HTAB 19: PRINT "7 - R,S und T"
3790 VTAB 22: HTAB 10: PRINT "0 — keine Parameter"
3800 GET PS: IF ( VAL (PS) = 0 AND PS < > "O") OR VAL
(PS) > 7 THEN 3800
3819 HOME : IF VAL (PS) <3 OR VAL (P$) = 4 THEN 3840
3820 PRINT "Es wurde der Parameter T verwendet. ": PRINT
"Soll T mit einer festen Schrittweite": PRINT
"durchiaufen werden 2"
3830 COSUB 4700: IF AS
3840 RETURN
3850 :
3880 REM Eingabe Paramete:
389) REM Eingabe von T
3900 IF RIGHTS (P§.1) = "K" THEN 3970
5910 PRINT ; VTAB 4: INPUT "Bitte T eingeben : ":T
3920 VTAB 4: PRINT SPC( 14): "T CALL CLE
3930 PRINT : PRINT TAB( 20);"Richtig 2";
3949 GOSUB 4700: IF AS THEN
3950 RETURN
3969 REM T in Schleife
3970 PRINT : VTAB 2: INPUT "Bitte Startwert und Endwer
von T eingeben : ";T0,T1
3980 VTAB 5: INPUT "Nun die Schrittweite :";7S
3999 IF TS = 9 THEN VTAB 7: PRINT CHRS (7): "Nie
Schrittweite @ 1": GOTO 3989
4000 IF TS < 0 THEN 4030
4019 IF Tl < TO THEN T = T1:Tl = 10:79 = T
4020 GOTO 4940
4030 IF 1 < Tl THEN T = 10:70 = T1:T1 = T
4040 L1 = 1:L2 = 7: GOSUB 4759: VTAB 2
4950 PRINT “T léuft von : ":70
4060 PRINT bis: ":72
4070 PRINT" mit Schrittweite : ":7S
4980 PRINT : PRINT TAB( 19); "Ist das richtig ? ";: GOSUB
A709: IF AS = "N” THEN L1 = 2:L2 = 6: GOSUB 4750
coro 3979
4990 RETURN
4100 :
4119 REW Eingabe von S
4120 PRINT : VTAB 9: INPUT "Bitte S eingeben : ":S
4130 VTAB 9: PRINT SPC( 15):"'S = ";S: CALL CL
4149 VTAB 11: PRINT TAB/ 20); "Richtig ?";; GOSUB 4700: IF
AS = "NY THEN 4120
4150 RETURN
4l69 :
4170 REM Eingabe von R
4180 PRINT : VTAB 15: INPUT "Bitte R aingsben : ":R
4190 VTAB 18: PRINT SPC( 15):"R = ":R: CALL CLE
4200 VTAB 17: PRINT TAB( 20); "Richtig ?":; GOSUB 4700: IF
AS = "N" THEN 4180
4219 RETURN
4220 :
4240 REM far Parametertabelle
4250 NS = "nicht verwendet"
4260 ON VAL (PS) GOTO 4289,4299, 4500, 4510, 4320, 4330, 4349
4279 S$ = NS:TS = NS:RS = NS: RETURN
4280 R$ = STRS (R):SS$ = NS:TS = NS: RETURN
4290 S$ = STRS (S):RS = NS:TS = NS: RETURN
4300 TS = STRS (T):RS = NS:S$ = NS: RETURN
4310 R$ = STRS (R):S$ = STRS (S):T$ = NS: RETURN
4520 RS = STRS (R):TS = STRS (T):S$ = NS: RETURN
4339 S$ = STRS (S):TS = STRS (T):RS = NS: RETURN
4349 R$ = STR$ (R):S$ = STRS (S):TS = STRS (T): RETURN
4390 REM alle Parameter eingeben
4400 IF PS ‘THEN 4430
4410 HOME ; PRINT TAB( 10); "Parametereingabe"
4420 ON VAL (PS) GOSUB 4449, 4450, 4460, 4479, 4480, 4490, 4500
4430 HOME : RETURN
4449 GOSUB 4189: RETURN
4450 GOSUB 4129: RETURN
4469 GOSUB 3909: RETURN
4470 GOSUB 4120: GOSUB 4180: RETURN
4480 GOSUB 5900: COSUB 4180: RETURN
4490 GOSUB 3900: GOSUB 4120: RETURN
4599 GOSUB 5999: GOSUB 4120: GOSUB 4180: RETURN
4599 REM Kurzzusammenfassung
THEN P$ = PS + "K"
4609 HOME : PRINT "Die Funktion lautet :": PRINT : PRINT
FS
4619 VTAB 13: PRINT "Darstellungsgrenzen :"; PRINT TAB(
19); "Kleinstes X : ";XL: PRINT TAB( 10); "GroBtes X
Beaty
4620 PRINT TAB( 10);"Kleinstes ¥ ; ":YL: PRINT TAB(
19):"GroBtes Yo: ":YH
4630 VTAB 19: PRINT "Parameter :": GOSUB 4250
4649 PRINT TAB( 10):"R = ":RS: PRINT TAB( 10) "578
PRINT TAB( 10); 188
4659 PRINT "Ordinate X = ":X
4660 RETURN
4670
4699 REM Teste ob ja oder nein
4700 GET AS: IF AS <> "J" AND AS <> "N" THEN 4709
4719 RETURN
4720
4749 REM lésche zwischen L1 und L2 Bildschirm
4750 FOR L = L1 TO L2: VTAB L: POKE CHZ,®: CALL CL%: NEXT
: RETURN
4760
4799 REM Grafik/Text umschalten
4809 POKE - 16368,0: REM Keyboardstrobe léschen
4819 IF PEEX (253) = 1 THEN POKE - 16303,0: POKE 253,2:
RETURN : REM Textseite
4820 POKE - 16304,0: POKE - 16297.0: POKE 253,1: RETURN :
REM Grafikseite
4850
4880 REM Zeichne Achsen
4899 REM und skaliere
4900 HPLOT FN XS(9),0 TO FN XS(®),191: HPLOT 0, FN YS(0)
TO 279, FN YS(Qj: ROT= 0:K = 0: IF YL = 0 THEN
4910 THEN K = 2
4920 X = XH: IF ABS (XL) > XH THEN X = ABS (XL)
4930 GOSUB 360¢: FOR X = ~ X® TO XO STEP ST
4949 IF X > XL AND X < XH THEN DRAW 1 AT FN XS(X), FN
YS(0) + K
4950 NEXT 1 @: IF XL = @ THEN K = 2
4960 IF XH = 0 THEN K 2
4970 X = YH: IF ABS (YL) > X THEN X = ABS (YL): GOSUB
3600
4989 GOSUB 3600: ROT= 16: FOR X = - X@ TO X@ STEP ST
4999 IF X > YL AND X < YH THEN DRAW 1 AT FN XS(Q) + K, FN
¥S(X)
5000 NEXT : RETURN
5019
5090 REM Ausdruck
5199 PRINT : PRINT D$;"PR#1": PRINT H7S;:DP$: PRINT
ES, E$;"1"; CHRS$ (6);
5110 REM EPSON FX-89 Steuercodes
5120 PRINT ES;"Q"; CHRS (90) :ES;"4";
15" PLOT.2.0 "E8;"-9"
IN"; CHR$ (6); CHRS (13); CHRS (10); CHRS
(10):"Die Funktion lautet :"
5140 REM rechter, linker Rand, Schénschrift,
Formularlange
5150 PRINT " F(X) ="; MID$ (F$,3): PRINT
5160 PRINT E$;"D"; CHR$ (8); CHR$ (24); CHR$ (40); CHRS
(56); CHR$ (72); CHRS (0)
5170 PRINT CHRS (10); CHRS (13);"Darstellungsgrenzen :
"GHTS;"x Laut von :":HTS:XL;HTS;"bis : "XH
5180 PRINT HTS; YL;HTS;"bis : ";YH
5190 PRINT IF R$ = N$ AND
TS = N$ THEN PRINT " Es wurden keine
Scharparaneter verwendet !": PRINT : GOTO 5270
5200 PRINT " Folgende Parameter wurden mit den auf-'
PRINT "gefihrten Werten durchlaufen."; CHR$ (1¢)
CHRS (15
5 TAB(
5130
5210 IF RS = NS THEN 5230
9220 PRINT" R :";:K =: GOSUB 5310: PRINT
5230 IF S$ = NS THEN 5250
5249 PRINT" S_:";:K = 3: GOSUB 5310: PRINT
5250 IF TS = NS THEN 5270
5260 PRINT "| T :";:K = 2: GOSUB 5310: PRINT
5270 PRINT CHR§ (13); CHRS (10) :"Die Grafik :": PRINT
5280 PRINT DPS;""G": PRINT CHRS (10); CHRS (10): TAB(
82);"HME"; CHRS (13): CHR$ (12): PRINT D$:"PRe 9”
RETURN
5290 REM
5300 REM Parametertabelle
8519 FOR J = 1 T0 I: PRINT HTS:P(K,J):: IF I/ 5
78) THEN PRINT
5320 NEXT J: PRINT : RETURN
5380 REM
5390 REX Rufe Maschinenprogramn far Fanktionseingabe auf
5490 CALL ASZ: GOSUB 1010:F§ = "Y= "
5419 FOR I = APE TO APE + PEEK (206):FS = FS + CHRS
(PEEK (1)): NEXT I: REM Hole Funktion aus
Eingabepuffer
5429 I = 0: RETURN
5430 REM Ende Eingabe
5440 REM
5499 REM Fehlerbenandlung
5590 LN = PEEK (218) + 256 + PEEK (219)
5510 CALL 3480
INT (J
PEEK (222)
22
Peeker 5/85
5560
RUN
oppo
p93
p95
9D07
D909
epee
pgp
op19
opiz
1s:
p18
5550 TEXT
5600 HOME
wird geladen"
PLOT.B
20 4A FF
Ag 59
20 5C DB
a2 BD
20 2E DS
20 6c D5
a6 7F
PLOT. PROTECTOR
POKE 50,128
POKE 193,1
POKE 104,64
POKE 16384, 0
LOAD PLOT.2.0
CALL 54514
POKE 59,225
5620 IF ER = 255 THEN TEXT : HOME : GOTO 1800: REM
Hauptmend
8530 IF ER = 254 THEN PRINT "?REENTER": RESUME : REM
Anwenderfehler bei INPUT
8540 IF ER = 133 OR ER = 69 OR ER = 53 THEN XA = ST
X:X0 = @: GOTO 1650
9645 REM Illegal Quantity, Overflow, Division by Zero
VPAB 20: PRINT CHRS (13); CHRS (7);" Fehler
Code + ";ER:" in Zeile ";LN: END
5580 REM Pointer in ($67) falsch gesetzt, Programm liegt
in Grafikseite
5590 REM EXEC-File korrigiert das, 1adt und startet das
Progranm von neuen
VTAE 10; HTAB 5: PRINT "Progra
PRINT : HTAB 14: PRI
5619 PRINT CHR$ (4);"EXEC PLOT. PROTECTOR’
PLOT.2.0
"Bitte warten”
* Hilfsroutinen fur *
* PLOT 2.0 .
* Hans-Martin Eng +
PNTL EQU $50
PNTH EQU $51
STRPNTL QU SCE
STRPNTH EQU SCF
LOHARL QU $BB
LCHARH QU $B9
EQU S7F
EQU $80
EQU $67
PRGANFH EQU $68
LPNT —-EQU $6
YSAV —-EQU. $07
INBUF — EQU $0200
EQU $DB5C
EQU $D52E
EQU $D56C
EQU SFFAA
IOREST QU SFFSF
* Funktionseingabe
Zeilen 46 bis 95
von Bernd Heyer
(1989)
in CHIP SPECIAL +2
disassembliert,
November 1984
= Register retten und Pointer
* suchen
Los JSR IOSAVE
LDX LCHARL.
LDY LCHARH
STX INPNTL
STY INPNTH
rompt-Character" an
ine iibergeben
INTXT
LDX #8BD
* Funktionsvorschrift einlesen
JSR INPUT
* umvandeln in Tokens
JSR PCODE
LDX INPNTL
WS 2000
WORLD STANDARD
MODEM
Power @
DATA @
rxoara @
caRRIER @
ONLINE
TYTRACE iodem ws2000
Die neue Version dieses weltweit
benutzten professionellen Modems
— immer noch zum un-
schlagbaren Preis von DM 798,-!
vx Datenaustausch und Kommunkation mit praktisch
jedem Computer weltweit mdglich
vx Zugriff zu Datenbanken, Mailboxen, Btx, Btx riick-
warts usw.
% Telex fur alle durch einen neuen Dienst — mit Ihrem
Computer und dem WS 2000 (fragen Sie uns)
x Alle gangigen Baudraten (75, 300/300, 600, 1200,
1200/75, 75/1200) und international iblichen Uber-
tragung-Standards (CCITT, BELL) — umschaltbar
per Hand oder per Computer (IC-Satz SK1 hierfiir
DM 96,90; AnschluBkabel UPL DM 48,-)
vx Automatisches Wahlen mit Zusatzplatine AD2
(DM 199,50) und Kabel UPL
% Automatisches Annehmen von Anrufen mit Zusatz-
platine AA2 (DM 199,50)
Einfacher Anschlu8 (parallel zur Telefonleitung);
eingebautes Netzteil; deutsche Anleitung; 1 Jahr
Garantie
x Viele Interfaces lieferbar; z. B.
CBM | fur C64/VIC20 einschl. Listing DM 136,80
AC Kommunikations-Karte fir APPLE DM 330,60
SPEC fiir SPECTRUM einschl. Software
(auf ROM) DM 256,50
vx AnschluBkabel zwischen Computer und Modem
(bitte bendtigten Steckertyp angeben) DM 57,—
vx Lieferméglichkeit: sofort ab Lager Hamburg
xx Alle Preise einschlieBlich MwSt. zuziiglich Ver-
packung, Porto und Nachnahme (Bei Vorauszah-
lung durch V-Scheck/Uberweisung Porto und Ver-
packung frei)
Claus F. Erbrecht
Computer Related Products
Lappenbergsallee 37 - 2000 Hamburg 20
Telefon 040/850 52 55
Bankverbindung: Bank fiir Gemeinwirtschaft
BLZ 200 101 11, Konto-Nr. 1241223700
a
Achtung: Nur fiir hausinterne Telefon-Anlagen und
nicht amtsberechtigte Nebenstellen — in der BRD ist der
AnschluB an das 6ffentliche Telefonnetz nicht gestattet!
Peeker 5/85
23
oD1A:
gD1c.
opie:
Bae
38:
038
03D:
one:
p46
Daa:
opac:
OD4E:
D509:
os2:
ops4
DSS:
ps7:
59:
DSB:
psp:
onsF:
peo
pez
nea:
D67:
ones:
ODEA
pec
oped:
Der:
on72:
op74:
79:
oo7c
oD7E.
op80
p81
oD84
p86:
DBA:
bes
Ao
BL
38
co
Dp
a4
50
ES
3A
i)
FD
50
50
80
cE
aD
20
Fa
Dr
2
FF
op
2)
op
118
19
120
121
122
123
LDY INPNTH
STX LCHARL
STY LCHARH
+ suche Startadresse des
+ Applesoftprogranms
‘+ 20 Bytes spater steht
* “in Zeile 2
LDA
STA
das"
PRGANFH
PNTH
PRGANFL
#815
PNTL
INC
+ Zeile 2 wird mit 228
+ Doppelpunkten aufgefillt
LASSEN LDY #$E3
LDA #834 Ee
SCHLEIFE STA (PNTL),Y
BNE SCHLEIFE
Nun wird der Inhalt des
+ Eingabepuffers hinter das
* ‘Ns! in Zeile 2 geschrieben
TRANSF LDA INBUF-3,Y
STA (PNTL),Y
INY
+ TAX setzt die Prozessorflags.
* Abbruch bei Zeilenende
TAX
+ $00 durch ":" ersetzen
BNE TRANSF
LDA #834
DEY
STA (PNTL),Y
* In einen Puffer ab $0C00 wird
* ein String geschrieben, der
* die Funktionsvorschrift enthalt
STRING LDA +SFF
Lx +800
STA. STRPNTL
STX STRPNTH
STY Lest
Loy #800
* Hole Zeichen/Token aus der
# Progrannzeile
NEXT = LDA (PNTL),Y
SEC
* Ist es ein Token ?
cur +880
* wenn ja, suche zugehdrige
+ Zeichenkette in Tabelle
BCS TOKEN
* nein, schreibe Zeichen in Puffer
INC STRPNTL
ox
STA
INY
cPY
BNE
JSR
RTS
# Alle Register werden gebraucht
TOKEN STY YSAV
Woy 4815
DEY
BMI ERR
* Vergleich mit Token-Tabelle
TBL2,¥
BNE NXT
+ Pointer auf Beginn des Strings
* aus Tabelle entnehmen
LOX TBL3,Y
Ly +80
LDA TBLL,X
INC STRPNTL
STA (STRPNTL).Y
INK
LDA TBLL,X
* Wenn jetzt ein Space im Accu
* steht, ist der String komplett
cur +820
BNE NXTCHAR
Loy YSAV
cw
BvC
+800
(STRPNTL x)
ENDE?
LPNT
NEXT
IOREST
NXTT
NXTCHAR
ENDE?
pep:
over:
p91:
9093:
9096:
p98:
oD99
oD9a:
9D9B
pep
9D9E.
oper.
Dao
opal
paz:
pas:
DAG
Das
B05
E07
BDA:
E08:
ROE:
BS
a9
81
50
o
02
4
cE
SF
cE
cr
00
o2
04
46
2B
2D
2a
33
al
20
8
cc
03
99
oD
19
21
271 Bytes
04
04
04
4B,
05
25
35
148
149
150
151
152
153
154
155
156
157
158
161
162
163
164
165
166
167
169
170
am
ame
174
176
arr
178
179
00
180
181
185
186
187
188
189
190
191
192
193
194
195
196
197
199
200
201
202
203
205
206
207
208
209
210
212
213
214
215
216
217
Es trat ein Token auf, das nicht
in der Token-Tabelle berdck-
sichtigt ist. Wird darauf Wert
gelegt, sollte man es hinzu-
fiigen.
INC
LDx
LDA
STA
cLv
BVC ENDE?
* APPLESOFT ONERR SUBROUTINE
* Aus Applescft Programming
* Reference Manual, S.82
PLA
TAY
PLA
Lox
7xS
PHA
TYA
PHA
RTS
+ A> hier Tabellen
* Ein Shape zur Skalierung
* sechs Vektoren
SHTABLE HEX 91900400
ewes
STRPNTL
#80
#83F
(STRPNTL, X)
Sor
HEX 92020404040490
* 2 nach unten ohne Plot
#4 nach oben mit Plot
+ Reservierte Worter
BLL asc ' FN
asc +!
asc ' -!
ASC | @!
asc | /'
asc ' ft!
ASC ' SGN’
asc ' INT’
ASC ' ABS!
ASC ' USR’
ASC ' SQR'
ASC ' RND'
asc ' Loc’
ASC ' EXP!
asc ' cos’
asc SIN’
ASC TAN
asc ' ATN'
+ Token-Tabelle
TBL2 © HEX C2CBC9CA
HEX CBCCD2D3
HEX D4DSDADB
HEX DCDDDEDF
HEX EOE1
+ Pointer zum Startpunkt in der
+ Schlisselworttabelle
TBLS HEX (0993050709
HEX 989D111519
HEX 10212529
HEX 20513539
=
24
Peeker 5/85
CONVERT560
von Marc van Woerkom
Konvertierungsroutine fur
Double-Hires-Drucker-Dump
Die neuen Computer der Apple-!!-Familie,
d.n. der Apple lic und der Apple Ile mit
erweiterter 80-Zeichenkarte (= 64K-Kar-
te), bieten die Méglichkeit, Graphiken mit
einer Auflésung von 560 x 192 Punkten zu
erzeugen (= sog. Double-Hires-Graphik.)
Im Peeker 2/84 wurde schon Uber die
Organisation der Double-Hires-Graphik
berichtet. Apple hat aber leider diese neu-
en Graphikfahigkeiten weder im Ap-
plesoft-Interpreter noch in der Treibersoft-
ware der erweiterten 80-Zeichenkarte im-
plementiert, so daB Double-Hires-Graphik
nur mit externer Software mdglich ist. Der-
artige Software ist inzwischen schon vor-
handen (s. Peeker 3/85: Test der Graphik-
pakete ,,Doubiestuff* und ,,Superplot),
Double-Hires-Graphik ist sehr praktisch
zum Plotten von mathematischen Funktio-
nen, wie Bild 1 und Bild 2 eindrucksvoll
zeigen, doch bieten die bisherigen Soft-
warepakete keine Méglichkeit des Aus-
drucks dieser Double-Hires-Graphik, was
natiirlich sehr unbefriedigend ist, da man
cc? YsBu “by =
| are van ner
Bild 1: Normales DHGR-Bild
Peeker 5/85
seine Ergebnisse ja gerne auch schwarz
auf wei zu Demonstrationszwecken usw.
haben méchte. Dadurch sah ich mich ver-
anlaBt, hier Abhilfe zu schaffen, und zwar
mit mdglichst geringem Aufwand.
Die einfachste |mplementierung diirfte in
der Ausnutzung der bereits existierenden
Programme zum Ausdruck normaler hoch-
auflésender Graphik in Verbindung mit der
hier verdifentlichten Utility CONVERT560
bestehen. Die Begriindung daflir ist, daB
quasi jeder graphikfahige Drucker anders
angesteuert werden muB!
Da der Aufwand zur Erstellung von neuer
»Graphik-Dump-Software“ zu jedem
Drucker-Modell enorm ware, kann man die
alte, bereits vorhandene Software zusam-
men mit CONVERT560 benutzen, das den
Vorteil bietet, mit jedem Drucker zu arbei-
ten. Voraussetzung ist allerdings, daB die
vorhandene Dump-Software in der Lage
ist, zwei Hires-Bilder nebeneinander aus-
zudrucken (2 Hires-Dumps = 1 Double-
Hires-Dump).
gralik 44
Wie CONVERTS60 funktioniert
CONVERTS560 zerlegt einfach ein Double-
Hires-Bild mit einer Auflosung von 560 x
192 Punkten in zwei ,,normaie“ Bilder zu
je 280 x 192 Punkten. Diese werden dann
wie gewohnt ausgedruckt. (Nicht jedes In-
terface-Programm ist jedoch dazu in der
Lage. Beispielsweise kann die zum Image-
writer mitgelieferte Toolkit-Diskette nicht
zwei Bilder nebeneinander ausdrucken
Anm. d. Red.) Vor dem Auiruf von CON-
VERTS560 befindet sich das Double-Hires-
Bild in den zwei Speicherbereichen
$2000-$3FFF (a) von den ,,unteren“ 64K
und (b) von den ,oberen“ 64K. Nach dem
Aufruf von CONVERTSS0 liegt das Dou-
ble-Hires-Bild (a) in dem ,unteren“ Be-
reich $2000-$3FFF (linke Bildhalfte) und
(b) in dem ,unteren“ Bereich
$4000-$5FFF (rechte Bildhalfie).
Um sicherzugehen, da8 CONVERT560 mit
jeder Art von Graphik-Dump-Software zu-
sammenarbeitet, wurden folgende Ge-
sichtspunkte bei der Erstellung von CON-
VERTS60 beachtet:
a CONVERTS560 sollte relokativ*, sprich
Uberall im Speicher lauffahig sein, um an
die vorhandene Graphik-Dump-Software
angehangt werden zu kénnen.
b Es sollte méglichst wenig Speicherplatz
belegen, zum einen wegen (a) und zum
anderen, um es eventuell in einem
EPROM unterbringen zu kénnen.
c Die Bereiche zur Abspeicherung der
durch CONVERTSE0 erhaltenen Bildhalf-
ten soliten frei wahlbar sein, denn diese
* Die Register-Save-Routine ist nicht relokativ (Anm
d. Red.)
25
BBM BLL S &
werden im Normalfall im HGR1- und
HGR2-Bereich abgelegt, wodurch das
Double-Hires-Bild zerstért wird, da es
auch den HGR1-Bereich belegt. Dies ist
vielleicht nicht immer erwiinscht.
Diese drei Gesichtspunkte wurden wie
folgt realisiert:
@ Sollte bei Ihnen die Startadresse $0300
nicht nicht méglich sein, so andern Sie
bitte die ,ORG“-Anweisung im Source-
Listing.
@ CONVERTS60 belegt weniger als eine
Seite im Speicher, genau $00A6 (dezimal
166) Bytes. Um dies zu erreichen, wurden
folgende MaBnahmen durchgefiihrt:
Der von CONVERTS60 zusatzlich bendtig-
te, 80 Bytes lange Zwischenspeicher wur-
de in das Ende des Tastaturspeichers
($0280- $02FF) gelegt.
CONVERT560 muB die Anfangsadressen
der 192 Graphik-Zeilen berechnen kén-
nen. Aus Platzgriinden wurde jedoch kei-
ne schnelle ,Lookup-Table“ verwendet,
sondern die 10mal kirzere und damit
langsamere, modifizierte Version von
HPOSN ($F411).
@ Wiinschen Sie andere Speicherberei-
che fir die entstandene linke und rechte
Bildhlfte, so andern sie im Source-Listing
die Definitionen der Label ,LeftPic* und
»RightPic".
Die Funktionsweise von CONVERTSE0 ist
relativ einfach: Es wird jede der 192 Zeilen
der Double-Hires-Graphik einzeln erst in
den Zwischenspeicher geladen, dort rich-
tig umgestellt und dann in die angegebe-
nen Speicherbereiche geschoben.
Neben dem Source-Listing von CON-
VERT560 ist noch ein kurzes Beispiei-Pro-
gramm CONVERT560.DEMO abgedruckt,
das den Gebrauch von CONVERTS60 ver-
deutlichen soll. Mit ihm wurden auch die
Bilder 1 und 2 gedruckt, wobei ein Epson
FX-80 mit Epson Interface 8132W zur Ver-
fiigung stand. Dieses Interface hat den
Vorteil, daB die HGR1- und HGR2-Seiten
direkt nebeneinander ausgedruckt werden
kénnen.
Dabei ist das Gesamtbild so komprimiert,
daB es genauso groB wie ein normales
Bild ist, so daB die Proportionen mit denen
der 80-Zeichenkarte Ubereinstimmen.
4
CONVERT560.DEMO
190 REM CONVERTS6D. DEMO
110 REM far Epson FX-80/8132W
120 REM Das DHGR-Bild ist
130 REM bereits geladen
140 TEXT : HOME : NORMAL
150 D$ = CHRS (4): PRINT
PRINT D$;"BLOAD CONVERTS6O"
169 PRINT : CALL 768: REM Konvertieren
170 I = CHRS (9): PRINT
PRINT CHRS (4) ;"PR#1"
180 PRINT : PRINT I$; "GBD"
199 PRINT : PRINT DS; "PR#0"
200 PRINT: END
CONVERTS60
BSAVE CONVERTS69, A768, L166
Mit BLOAD CONVERTS60 laden
Mit CALL 768 aufrufen
Bild 2: Gestauchtes DHGR-Bild
1 CONVERTS6O
2
3
4
5 Eine Double-Hires-Utility
6 von Marc van Woerkom 1985
7
8
9 Kurzbeschreibung.
rT
CONVERTSED bietet eine
einfache Moglichkeit,
Double-Hires-Bilder aus—
zudrucken, denn es
wandelt ein DHGR-Bild so
um, da8 danach die linke
Halfte im HGR1-Bereich
und die rechte Halfte im
19 HGR2-Bereich abgelegt
20 * ist. Diese gewohnlichen
21 * Hires-Bilder konnen dann
22 problemlos mit den schon
23 existierenden, normalen
24 * Graphik-Treibern ausge-
25 druckt werden.
26
27° « Mit CALL 768 aufrufen
Serer rere reer ee ee ee eee ee
30 = Softswitches
32 PAGEL QU. $COB4
33 -PAGE2 EQU $C055
34 HIRES EQU $CO57
35 SETBOCOL EQU $COPD
36 © CLRBOCOL EQU S$cOPC
37 © CHKBOCOL EQU SCOIF
38 SETBOSTO EQU $COO1
39 © CLR8PSTO EQU SCOOD
40 CHKBOSTO EQU $CO18
41
42°» Zeropage-Adressen
4“ Fortsetzung Seite 30
26
Peeker 5/85
Fir Ihre Unterlagen
Abonnement bestellt
Vertrauensgarantie:
Ich habe davon Kenntnis genommen,
da® ich die Bestellung schriftlich durch
Mittteilung an den Verlag innerhalb von
7 Tagen widerrufen kann. Zur Frist-
wahrung genigt die rechtzeitige Ab-
sendung des Widerrufs.
peeker
Leserservice
Postfach 10 28 69
6900 Heidelberg 1
Fir Ihre Unterlagen
Folgende Biicher bestellt:
am:
bei:
peeker
Versandbuchhandlung
Postfach 102869
6900 Heidelberg 1
Fir Ihre Unterlagen
Folgende Disketten
und Programme bestellt:
am:
bei:
peeker
Softwareabteilung
Postfach 102869
6900 Heidelberg 1
444444 pEEkER 94
be Abo-Karte
MAGAZIN FUR APPLE-COMPUTER
Ja, ich méchte »peeker« abonnieren.
Liefern Sie mir »peeker« ab der nachsten Ausgabe zum Einfiihrungspreis von
nur DM 58,—. 1985 erscheinen 11 Ausgaben (1 Doppelheft). Ich spare dabei
gegeniber dem Einzelkauf genau DM 13,50. Es entstehen mir keine weiteren
Kosten. Die Lieferung erfoigt frei Haus. Porto, Verpackung und Zustellgebihren
tbernimmt der Verlag. Der Einfihrungspreis fur das Ausland betragt DM 58,-
zuztiglich Versandspesen.
Ich wiinsche jahrliche Berechnung
C durch Verlagsrechnung oder (1 Abbuchung von meinem Bank- bzw.
Postscheckkonto
Bank/PschA
Bankleitzahl Kto.-Nr.
Datum Unterschrift
444444 EEKER 44
a Buch -Shop
MAGAZIN FUR APPLE-COMPUTER
Bitte senden Sie mir gegen Rechnung folgende Biicher:
( Apple Assembler, DM 34,-
O Apple Il Basic Handbuch, DM 32,-
CO Apple DOS 3.3, DM 28,-
C Apple II leicht gemacht, DM 28,-
Cl Apple Maschinensprache, DM 49,-
Cl Apple ProDOS, Band 1, DM 28,-
C0 Arbeiten mit dem Macintosh, DM 54,-
( BASIC-Ubungen fiir den Apple, DM 38,-
Datum Unterschrift
4444994 DEEKER 44
& Software -Karte
MAGAZIN FUR APPLE-COMPUTER
Bitte senden Sie mir
gegen Rechnung folgende Apple-Programme:
O Peeker-Sammeldiskette, Heft 1-2, ©) Apple DOS 3.3, Begleitdiskette, DM 28,—
1984, DM 28,— CO Appie ProDOS, Band 1, Begieitdiskette,
0 Peeker-Sammeldiskette, Heft 1-2, DM 28,— ;
1985, DM 28,— O Apple Assembler, Begleitdiskette, DM 28,—
CO Peeker-Sammeldiskette, Heft 1-2, 5 ute oo ean 1.0, ae dele DM 98,-
1985, Steuererklarung 1984, CP/M, .0, Programm, —
DM 28,- C INPUT 2.0, Programm, DM 98,—
© Softbreaker 1.0, Programm, DM 48,—
C DB-Meister, Programm, DM 290,-
O Superplot, Programm, DM 48,—
Datum Unterschritt
Abteilung
StraBe
PLZ/Ort
i]
\Vertrauensgarantie:
Ich habe davon Kenntnis genommen, da® ich die Bestellung
‘schriftich durch Mittellung an den Verlag innerhalb von
7 Tagen widerrufen kann. Zur Fristwahrung gendgt die
techtzeitige Absendung des Widerruts.
Datum
Unterschrift
Verlagshinweis:
Das Abonnement verlangert sich zu den jewels giltigen
Bedingungen um ein Jahr, wenn es nicht 2 Monate vor
Jahresende schriftich gekindigt wird
POSTKARTE
peeker
Leserservice
Postfach 10 28 69
6900 Heidelberg 1
POSTKARTE
peeker
Versandbuchhandlung
Postfach 10 28 69
6900 Heidelberg 1
POSTKARTE
peeker
Softwareabteilung
Postfach 10 28 69
6900 Heidelberg 1
Hurtig -FACHBUCH-TIP
Lohnsteuerjahresaus-
gleich? - Einkommen-
steuererklarung?
Mein C-64 hilft mir dabei!
von Ilona Kwiatkowski, Peter Vogt
1985, 188 S., kart., DM 38,—
ISBN 3-7785-1084-3
|. Kwiatkowski - P. Vogt
Lohnsteuerjahresausglei
Showing the first 100000 of 332289 characters.