Skip to main content

peeker 5 1985

  • PublicationApple Periodicals
  • Pages80
  • Sourcepeeker-5-1985.pdf
← Magazines peeker 5 1985
/ 80
Source: Internet Archive — Aggregated Apple-era periodicals, 1981–2012.
Page 1
Loading…
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.

mp.ls