ROM-RAM-1/0. (:: cornrnodore. Serie 610 und 710. Hardware - Beschreibung. Assemblerlisting. ausführlich dokumentiert. 2. verbesserte Auflage

Größe: px
Ab Seite anzeigen:

Download "ROM-RAM-1/0. (:: cornrnodore. Serie 610 und 710. Hardware - Beschreibung. Assemblerlisting. ausführlich dokumentiert. 2. verbesserte Auflage"

Transkript

1 (:: cornrnodore Serie 610 und 710 Hardware - Beschreibung ROM-RAM-1/0 Assemblerlisting ausführlich dokumentiert 2. verbesserte Auflage R. Schineis 0.-M. Braun

2 Vorwort Das vorliegende, kommentierte und strukturierte Assemblerlistins des Betriebssystems CBM 610 u. 710 wurde mit dem Hard + Soft 'Reassembler - Assemblersystem' unter Verwendung des Original-Betriebssystems mit folgender Kennung erstellt: BASIC LOW B CBM II 128K BASIC HI CBM li 128K Kernal B CBM II LP/HP Diese ROMs sind in den Rechnern, Stand August/September 1983 eingebaut. Das Buch ist in folgende fünf, verschiedenfarbige Teile gegliedert: 1. Hinweise zur Benutzung der Segment-Umschalteroutinen 2. Beschreibung der Hard- und Software der Schnittstelle RS 232 C 3. Speicherbelegung, ROM/RAM-Cartridge, Steckerbelesungen 4. Assembler-Listing BASIC lo/hi mit Crossreferenztabelle 5. Assembler-Listing Operating-System (Kernall mit Crossreferenztabelle Im ersten Teil finden Sie ein von Commodore zur Verfügung gestelltes Listing mit Beschreibung zur Benutzung der Segment-Umschaltroutinen. Damit ist es möglich, Maschinenunterprogramme in anderen 64K-Segmenten als dem gerade benutzten zu verwenden. Es besteht damit auch die Möglichkeit einer Segment- Umschaltung zum Segment $F (Betriebssystem) im Falle eines IRQ, NMI oder BRK. Der zweite Teil behandelt ausführlich die Schnittstelle RS 232 C. Es wird darin Allgemeines über die Schnittstelle, der Befehlsaufbau, der Status und die Hardware beschrieben. Im dritten Abschnitt finden Sie eine Übersicht der Speicheraufteilung, Besonderheiten und Handhabung des Cartridge-Anschlusses und eine Zusammenfassung aller Steckerbelegungen. Im vierten und fünften Teil finden Sie das zweiteilige Assemblerlisting. Es ist jeweils durch eine Crossreferenz-Tabelle, in der alle Label mit ihren Adressen und den Zeilennummern in denen diese Label vorkommen, abgeschlossen. Bei der Erstellung wurden, soweit bekannt und möglich, die Original Commodore-Label verwendet. Gleiche Adressen können in beiden Teilen mit verschiedenen Namen bezeichnet sein. Für dieses Buch ist nach Erscheinen der Rechner mit deutscher Tastatur ein voll kommentiertes Listing des geänderten Operating-Systems beim Herausgeber erhältlich. Außerdem wird für die Rechner CBM 620 u. 720 (deutsche Tastatur l wegen größerer Abweichungen ein eigenes As semblerlisting herausgegeben. Das zweite Buch enthält bereits das oben erwähnte Operating-System mit deutscher Tastatur. Der Buchrücken ist verleimt. Die Innenseiten sind für eine eventuelle Ringbuchablage vorgelocht. Es ist dadurch problemlos möglich, bei häufigem Gebrauch die einzelnen Seiten in einem Ringbuchordner abzulegen. Der Inhalt des vorliegenden Buches wurde sorgfältig überprüft. Es ist jedoch nicht ganz auszuschließen, daß hier und da noch Druck- und andere Fehler vorliegen. Die Autoren sind für jeden schriftlichen Hinweis dankbar, um in kommenden Auflagen Ihre Erfahrungen einfließen lassen zu können. Außerdem sind alle weiteren Anregungen, sei es als Wunsch oder als Vorschlag, willkommen. R. Schineis 0. - M. Braun

3 INHALTSVERZEICHNIS 1. Hinweise zur Benutzung der Segment-Umschalteroutinen mit Demo-Programmlisting 2. Beschreibung der RS 232 C - Schnittstelle, Soft- und Hardware 2.1 Allgemeines 2.2 BASIC 4.0 und RS 232 C 2.3 Statusvariable 2.4 Hardware RS 232 c 3. Speicherbelegung, ROH/RAH-Cartridge, Steckerbelegungen 3.1 Beschreibung I Übersicht der Speicheraufteilung 3.2 ROH/RAH - Cartridge-AnschluB 3.3 Steckerbelegungen IEEE Stecker Keyboard Stecker cartridge Stecker Video Stecker User Stecker Audio Stecker Spannungs Stecker Co-Prozessor Stecker RS 232 C - Stecker Expansion Stecker 4. Assembler - Listing Teil 'BASIC' Assembler - Listing 'BASIC 4.o Crossreferenz - Tabelle 'BASIC 4.0' Seite Seite Assembler - Listing 'Operating-System' Assembler - Listing 'Operating-System' Crossreferenz - Tabelle 'Operating-System' Seite Seite 1-18

4 1. Hinweise zur Benutzung der Segment-Umschalteroutinen Die Segment-Umschalteroutinen dienen dem Programmierer als Hilfsmittel, das ihm erlaubt, Unterprogramme in anderen 64K-Segmenten (Bank) als dem gerade benutzten zu verwenden. Es werden dabei alle Register und Statusinformationen an das Unterprogramm übergeben. Nach der Rückkehr stehen die nun gültigen Registerwarte und Statusinformationen dem aufrufenden Programm zur Verfügung. Es besteht außerdem die Möglichkeit einer Segment-Umschaltung zum Segment $F (Betriebssystem Bank 151 im Falle eines Interrupts (IRQ), eines nicht maskierten Interrupts (NHil und eines Break (BRK), wenn gerade ein Programm in einem anderen Segment ausgeführt wird. Die Segment-Umschalteroutine besteht aus dem fast im Betriebssystem-ROH (Segment $F = Operating-System) abgelegten Teil und den Teilen in den jeweils benutzten RAH-Segmenten. Dia Routinan in den RAH-Segmenten sind weitgehend identisch mit den ROH-Routinan; mit Ausnahme der Interruptbehandlung. Der Interrupt wird durch die Interrupt-Routinen in Segment $F bearbeitet, während die Interrupt-Routinen im RAH nur die Umschaltung auf das Segment $F vornehmen. Oie folgenden Beispielprogramme zeigen, wie Betriebsystem-Routinen von einem RAH Segment aufgerufen werden können. Bei der Programmierung in Assembler sollte das später gelistete Sourcecode-Hodul 'TXRAH' an das Ende eines jeden Programmes gelegt werden. Es können dann die Betriebssystem-Routinen und -Vektoren verwendet werden. Zur Umschaltung ist ein kurzes Programm in das RAH des Segmentes $F zu laden (Beispiel! o. Beispiel2). Es initialisiert den Stack-Pointer im RAH- Segment und übergibt die Programmkontrolle an das gewünschte Segment. Beim Übergang der Programmkontrolle von einem Segment an das andere, wird der aktuelle Stack-Pointer in die Speicherstelle '$01 FF gerettet. Es muß deshalb bei der I ni tialisierung des Stack-Pointers eines jeden RAH-Segmentes der Wert $FE' in die Speicherstelle '$01FF' geschrieben werden, um diese Speicherstalle zu schützen. Die Nummer das Segmentes, an das die Programmkontrolle abgegeben wird, wird durch den Inhalt des 6509 Oata-Indirection-Registers ($00011 bestimmt. Die obersten zwei Bytes auf dem Stack beinhalten die Adresse innerhalb des Segments. Dadurch ist es nach entsprechendem Setzen des Indirection-Registers möglich, das Unterprogramm an der gleichen Adresse aufzurufen, an der es sich im gewünschten Segment befindet. Das Unterprogramm im aktuellen Segment ruft die Unterroutine 'EX SUB' als Unterprogramm auf. EXSUB' benutzt die Rücksprung-Adresse abzgl. 2 als Sprung-Adresse im neuen Segment. Das folgende 'Beispiel!' und die Betriebssystem-Aufrufe benutzen diese Methode zum Aufruf der Routinen im anderen Segment. Es ist dies die günstigste Methode. Sie setzt jedoch voraus, daß sich die aufrufende Routine an der gleichen Adresse befindet wie die Aufzurufende. Befinden sich die Routinen nicht an der gleichen Stelle, dann wird die Adresse der Routine +2 auf den Stack gelegt und danach die Routine 'EXSUB' direkt angesprungen, siehe 'Beispiel2'. Beim Aufruf von Maschinen-Unterprogrammen von BASIC aus ist zu beachten, daß sich keine Speicherüberschneidungen ergeben. Es werden in den RAH-Segmenten zusitzlich zu dem von Daten und Programmen beanspruchten Speicherplatz die Seiten '$OOXX, $01 XX, $FEXX, $FFXX' benutzt. Zur Bereitstellung von RAH-Bereichen dienen die Routinen 'HEHTOP' und 'HEHBOT' (siehe Listing Operating-System).

5 segment-umsch. beispiell hard+soft ass/reass.... seite 0002 zeile adr. obj.-code source-code a ff a9 fe ac b 20 b2 fe e e ===> beispiell <=== dieses programm wird in das segment $f = bank 15 geschrieben. im beispiel soll ein anwenderprogramm im segment $01 = bank 1 inititialisiert und aufgerufen werden. das programm muß sich an der gleichen stelle wie der aufruf befinden (adresse $078b} i6509 ipoint ipini t exsub $0001 $00ac $ffl9 $feb2 = $0780 anfangsadresse lda sta jsr lda sta jsr.end 6509 indirection register addrl ram indirekt-painter 'ipoint auf $0100, yr=$ff execute-subr. auf vektor 'ipoint' #$01 Segmentnummer 1 i indirection register ipini t 'ipoint auf $0100, yr=$ff #$fe wert für stack-pointer lipointj,y $0 lff = $fe exsub ums eh. zu dieser adresse in bank 1 fehler in pass 1 fehler in pass 2 1 a bel- t a belle label adr. exsub feb2 i ipinit ff19 ipoint OOac assemblierung ende

6 segment-umsch. beispielz hard+soft ass/reass... seite 0002 zeile adr. obj.-code source-code ===> beispiel2 <=== I I b c e dieses programm wird in das segment $f = bank 15 geschrieben. im beispiel soll ein anwenderprogramm im segment $01 = bank I inititialisiert und aufgerufen werden. das programm befindet sich an einer beliebigen adresse (im beispielbei start" = $078b). a9 0 I 85 0 I ao ad ac 88 a9 fe 91 iic a a c b2 fe i6509 ipoint start starta ipini t exsub $0001 $00ac $0200 start+2 $ff19 $feb2 : $0780 lda lt$0 I sta i6509 ldy lt$01 sty ipoint+l dey sty ipoint dey lda #$fe sta (ipoint),y lda l>s tarta pha lda l<starta pha jmp exsub.end 6509 indirection register addrl ram indirekt-painter startadresse in bank I startadresse+2 für stack "ipoint" auf $0100, yr=$ff execute-subr. auf vektor "ipoint" anfangsadresse Segmentnummer I 6509 indirection register "ipoint" auf $0100 addrh ram indirekt-painter addrl ram indirekt-painter yr = $ff wert für stack-pointer $0 lff = $fe addrh startadresse+2 addrl startadresse+2 umsch. zur stack-adresse in bank 1 Fehler in pass I fehler in pass 2 label-tabelle label adr. exsub start feb i6509 starta ipinit ffl9 ipoint ooac assemblierung ende

7 testprg für beispiel1+2 hard+soft ass/reass.... seite 0002 zeile adr. obj.-code source-code ===> testprogrammfür beispiell u. beispiel2 mit "tkram <=== dieses programm befindet sich im segment $01 = bank I 0006 es wird durch "beispiell oder 2" aus bank 15 angesprungen 0007 nach ausführungerfolgt der ausdruck "testumschaltung 0008 für "beispiel2" ist die Startadresse beliebig wählbar an das eigentliche programm schließt die routine "tkram an 0011 dieseroutineist hauptsächlich einekopieaus dem "kernal I ===> ausführendes beispiel-programm "start" <=== b b d b d e f TaZ a ao 00 b9 a d2 ff c8 co Oe do f5 20 e I ff do ee 00 ea 4c 8b 07 07a2 55 4d 53 tekt 07a a8 4c ab ae b0 tek = $078b s tart ldy 11$00 startl lda tekt,y jsr kbsout iny cpy lltek-tekt bne startl jsr kstop bne start brk nop jmp start.byt umschaltetest ansprungadresse von segment $15 (wichtig für "beispiell "J ein zeichen aus tekt holen ausgabe I char auf akt. kanal offset erhöhen ende der zeichenkette? nicht alle zeichen stop-taste lesen nicht gedrückt, neuer tektdruck ende mit brea k wenn weiter, neustart

8 anhang-raut. -txram- hard+soft ass/reass.... seite 0003 zeile adr. obj.-code source-code b b0 ===> anhang-routine 'txram <=== b b0 004 I 07b b b0 OOH 07b b b fe fe64 e6509 i6509 ipoint stackp exsub $ $000 I $00ac $01ff $feb2 = exsub fe64 ---> ansprung irq/brk vom ram-segment < fe fe64 85 ac 0052 fe fe I I fe68 85 ad fe6a a5 01 fe6c 48 fe6d a5 ad fe6f fe fe72 85 ac fe fe fe77 a5 ac fe fe 7a fe7a fe7a fe 7a fe7a fe7b fe7d fe7e fe80 fe8 1 fe84 fe85 fe87 fe88 febb febc fe8e febf fe92 fe93 fe95 fe96 fe98 fe99 fe99 fe99 fe99 fe99 fe9b 0093 fe9d txirq sta ipoint pla pha sta ipoint+l lda i6509 pha lda ipoint+l jsr txirq2 sta ipoint pla sta i6509 lda ipoint rti ---> ansprung nmi vom ram-segment <--- a5 ac 48 a5 ad 48 ad ff a ff d ff ad ac 40 txnmi pha lda ipoint pha lda ipoint+1 pha lda stackp pha lda' i6509 pha jsr exnmi pla sta i6509 pla sta stackp pla sta ipoint., pla sta ipoint rti ---> rts - adresse lrq brk' < do 05 txirq2 and #$10 bne exbrkx 0094 fe9d ---> ausführung lrq in segment $0f < execution register 6509 indirection register addrl ram indirekt-painter wert für stack-pointer execute-subr. auf vektor 'ipoint' addrl ram indirekt-painter stackpointer in ac zurück für rti addrh ram indirekt-painter 6509 indirektion register Stackpointer in ac diese rts-adr. speichern i6509 wiederherstellen 6509 indirektion register ac wieder zurückholen ausführung rti ac retten addrl ram indirekt-vektor ipoint retten addrh ram indirekt-vektor ipoint+l retten Stackpointer Stackpointer retten 6509 indirektion register i6509 retten aufruf nmi als subr. in bank 15 i6509 zurück 6509 indirektion register Stackpointer zurück stackpointer ipoint+1 zurück addrh ram indirekt-vektor ipoint zurück addrl ram indirekt-vektor test auf break sprung zu break

9 hard+soft ass!reass... seite 0004 anhang-raut. -txramzeile adr. obj.-code source-code 0095 fe9d fe9d fe9f a5 ac 4c 3c ff 009B fea fea fea fea2 a5 ac 0102 fea4 4c 39 ff 0103 fea fea7 lda ipoint jmp exirq ---> ausfürung "break" in segment $Of <--- exbrkx lda ipoint jmp exbrk addrl ram indirekt-vektor ausführung irq addrl ram indirekt-vektor ausführung "brk" 0105 fea7 ===> ausführung externe subroutine in voreingestellter bank <=== 0106 fea OIOB fea 7 feab fea9 feab fead feae feaf OB 48 a9 Of c b2 fe exsubf php pha lda #$0f sta i6509 pla plp jmp exsub status retten ac retten segment $f = betriebssytem 6509 indirection register ac zurück status zurück externe subroutine o I H feb2 0 II 5 feb feb2 ===> externe Subroutine <=== 0117 feb feb2 = exsub 0 II 9 feb feb2 08 php 0121 feb3 7B sei 0122 feb4 48 pha 0123 feb5 Ba txa 0124 feb6 48 pha 0125 feb7 9B tya 0126 febb 4B pha 0127 feb9 20, 9 ff jsr ipinit 0128 febc 0129 febd 0130 febf 0131 fec fec fec fec feca 0136 fecd 0137 fece 0138 fedo 0139 fed fed fed fed fedb OIH fedb 0145 fedc 0146 fedc 0147 fedd OIH fecjf 0149 fee fee fee5 ab a a ff a9 04 a2 ff ff ba bd B e bd e9 00 aa ff e9 04 8(J ff 01 ab a2 04 tay lda e6509 ]Sr putas lda #<excrt2 ldx #>excrt2 jsr putaxs tsx lda $0105,x sec sbc #3 pha lda SOI06,x sbc #00 tax pla jsr putaxs tya excomm sec sbc #04 sta stackp tay ldx #0 4 status retten ac retten xr retten yr retten "ipoint" init., stackvom xfer-seg. laden yr = xfer-segment return-segment auf user-stack ac auf anderen stack xfer-seg. rts routine xfer-seg. rts routine ac, xr auf xfer-seg. stack sp 5 = aktuelle rout. addrl -3 für "jsr dieser rout. ac retten sp+6 = aktuelle rout. addrh xr = addrh ac = addrl ac, xr auf xfer-seg. stack xfer-seg. stack-pointer 4 bytes, yr, xr, ac, sp xfer-seg. neuer stackpointer 4 bytes, yr, xr, ac, sp

10 hard+soft ass/reass.... seite 0005 anhang-raut. -txramzeile adr. obj.-code source-code 0152 fee5 6B B fee6 fee7 fee9 feea feec feef fefl fef3 fef6 fef7 cb 91 ac ca do f9 ac ff 01 a9 2d a2 ff ff 6B 6B 0163 fefb 0164 fefb ba 0165 fef9 Be ff fefc 0167 fefd 016B fefe 0169 feff 0170 ffoi 0171 ff ff04 9B aa 9a a5 01 4c f6 ff exsuio pla iny sta (ipointl,y dex bne exsuio ldy stackp lda #<expul2 ldx #>expul2 jsr putaxs pla pla exgbye tsx stx stackp tya tax txs lda i6509 jmp gbye 0173 ff04 ---> rückkehradresse wenn rti' < ff ff04 ea nop 0176 ff ff05 ---> rückkehradresse wenn rts <--- reg. von stack zu xfer-seg. stack yr = Stackpointer für xfer-seg. addrl register u. rts-adr. vom stack addrh register u. rts-adr. vom stack ac, xr auf xfer-seg. stack lfd. stack-pointer von diesem segment yr = stack-pointer für xfer-seg. neuer stack für xfer-seg indirection register good bye 017B ff OIBO OIBI OIB2 OIB3 OIB4 OIB5 OIB6 OIB7 OIBB OIB ff05 ff06 ff07 ffob ff09 ffoa ffob ffoc ffod ffoe ffll ffl3 ffl6 OB OB 7B 4B Ba 4B 9B 4B ba bd B ff 4c dc fe excrts php php sei pha txa pha tya pha tsx lda $0106,x sta i6509 jsr ipinit jmp excomm status ac xr yr sp+6 ist return-seg indirection register 'ipoint' init, stackvom xfer-seg ffl ffl ffl9 ---> 'ipoint' initialisieren, stack vom xfer-seg. laden < ffl9 ao 01 ipinit ldy #01 84 ad BB B' ac BB b 1 ac 60 sty ipoint+l dey sty ipoint dey lda I ipoint I, y rts addrh ram indirekt-vektor addrl ram indirekt-vektor yr = $ff stack-pointer von $01ff laden B ffl9 fflb ffld ffle ff20 ff21 ff23 ff24 ff24 ff2' ---> ac, xr zu xfer-segment stack < ff ff24 4B 020B ff25 Ba putaxs pha txa ac retten

11 anhang-raut. -txram- hard+soft ass/reass.... seite 0006 zeile adr. obj.-code source-code 0209 ff ff ff ff2a 91 ac sta lipoint),y dey pla 0213 ff2a ---> ac auf anderen stack < ff2a ff2a ff2c ff2d ff2e ff2e 91 ac putas sta lipoint),y dey rts 0220 ff2e ---> register zurück < ff2e 0222 ff2e 68 expull pla 0223 ff2f ab tay 0224 ff30 68 pla 0225 ff31 aa tax 0226 ff32 68 pla 0227 ff33 28 plp ff34 ff35 ff35 60 rts 0234 ff ff38 ea 0236 ff39 nop 0237 ff39 20 a7 fe exbrk jsr exsubf 0238 ff3c 0239 ff3c 20 a7 fe exirq jsr exsubf 0240 ff3f ff3f ff3f ff3f excrt2 expul2 excrts-1 expull ff3f 0245 ff3f 0246 ff3f ff3f ff3f ===> vektor - tabeile <=== 0249 ff3f = $ff6f 0250 ff6f 0251 ff6f 20 a7 fe kvrese jsr exsubf 0252 ff ff72 20 a7 fe kipcgo jsr exsubf 0254 ff ff ff ff ff7b 0259 fflb 0260 ff7e 0261 ffle OZ6Z ff ff ff ff84 20 a 7 fe kfunky jsr exsubf 20 a 7 fe kipcrq jsr exsubf 20 a 7 fe kioini jsr exsubf 20 a 7 fe kcint jsr exsubf 20 a 7 fe kalloc jsr exsubf 20 a 7 fe kvecto jsr exsubf addrh = xr ac zurück addrl yr zurück ac xr zurück ac zurück status zurück 0231 ff35 ---> externe interrupt nmi "brk "irq segment $Of < ff ff35 20 a7 fe exnmi jsr exsubf ext. nmi in segment $Of ext. brk in segment $0f ext. irq ~n segment $0f netz einlaus reset-vector mon-befehl z umsch. auf coprozessor vector für funktionstasten vector fur ipc-anforderung initialisierung ein-lausgabe initialisierung bildschirm allocation-routine ein-/ausgabe-vector lesen/schreiben

12 anhang-raut. -txram- hard+soft ass!reass... seite 0007 zeile adr. obj.-code source-code 0266 ff ff87 20 a7 fe kresto jsr exsubf 0268 ff8a 0269 ff8a 20 a7 fe klkups jsr exsubf 0270 ff8d 0271 ff8d 20 a7 fe klkupl jsr exsubf 0272 ff ff90 20 a7 fe kstmsg jsr exsubf ff ff93 20 a7 fe ksecnd jsr exsubf ff ff96 20 a7 fe ktksa jsr exsubf ff ff99 20 a7 fe kmemtp ]Sr exsubf 0280 ff9c 0281 ff9c 20 a7 fe kmembt jsr exsubf 0282 ff9f 0283 ff9f 20 a7 fe kscnky jsr exsubf 0284 ffa ffa2 ffa5 ffa5 ffa8 ffa8 ffab ffab ffae ffae ffb1 ffb 1 ffb4 ffb4 ffb7 ffb7 ffba ffba 20 a7 fe 20 a 7 fe 20 a 7 fe 20 a 7 fe 20 a 7 fe 20 a 7 fe 20 a 7 fe 20 a 7 fe 20 a7 fe ksetmo jsr exsubf kacptr jsr exsubf kciout jsr exsubf kuntlk jsr exsubf kunlsn jsr exsubf klistn jsr exsubf ktalk jsr exsubf kreast jsr exsubf kstlfs jsr exsubf 0302 ffbd 0303 ffbd 20 a7 fe kstnam jsr exsubf 0304 ffco 0305 ffco 20 a7 fe kopen jsr exsubf 0306 ffc ffc3 ffc6 ffc ffc ffc ffcc 0313 ffcc 03" ffd ffd2 20 a 7 fe 20 a 7 fe 20 a 7 fe 20 a 7 fe ffcf ffcf 20 a7 fe 20 a7 fe kclose jsr exsubf kchkin ]Sr exsubf kckout jsr exsubf kclrch jsr exsubf kbasin jsr exsubf kbsout ]Sr exsubf standard ein-/ausgabe-vectoren setzen geräteadr. Über sekundäradr. suchen geräte-,sek.adr. Über log. file# suchen meldung des operating-syst. ausgeben sekundäradr. nach listen auf iec-bus sekundäradr. nach talk auf iec-bus höchste speichergrenze lesen/schreiben unterste speichergrenze lesen/schreiben tastatur abfragen Zeitüberwachung iec-bus ein ein byte von iec-bus nach accu ein byte aus accu auf iec-bus untalk auf iec-bus ausgeben unlisten auf iec-bus ausgeben listen auf iec-bus ausgeben talk auf iec-bus ausgeben ein/ausgabe-status lesen I schreiben log. file#, geräte-, sek.adr. eintragen länge und adr. des filenamens eintragen log. file öffnen/befehl ausgeben logisches file schliessen eingabekanal öffnen ausgabekanal öffnen ein-/ausgabekanal schliessen eingabe ausgabe char vom akt. kanal in ac char auf akt. kanal

13 anhang-raut. -txram- hard+soft ass/reass... sei te 0008 zeile adr. obj.-code source-code 0318 ffd ffd5 20 a7 fe kload jsr exsubf einlesen vom log. file 0320 ffd ffd8 20 a7 fe ksave jsr exsubf abspeichern auf log. file 0322 ffdb 0323 ffdb 20 a7 fe ksttim jsr exsubf interne uhr stellen 0324 ffde 0325 ffde 20 a7 fe krdtim jsr exsubf interne uhr ablesen 0326 ffel 0327 ffel 20 a7 fe kstop jsr exsubf stop-taste lesen 0328 ffe ffe4 20 a7 fe kgetin jsr exsubf eingabe I char vom aktiven kanal in ac 0330 ffe ffe7 20 a7 fe kclall jsr exsubf alle logischen files schliessen 0332 ffea 0333 ffea 20 a7 fe kudtim jsr exsubf interne uhr bedienen 0334 ffed 0335 ffed 20 a7 fe kscror jsr exsubf bildschirm 0336 fffo 0337 fffo 20 a7 fe kplot jsr exsubf cursor-koordinaten lesen/schreiben 0338 fff fff3 20 a7 fe iobase jsr exsubf basisadr. i/o-gerät nach xr/yr 0340 fff fff fff6 ---> good-bye < fff fff gbye sta e6509 execution register 0345 fff8 60 rts 0346 fff fff9 ea nop 0348 fffa 0349 fffa 0350 fffa ---> 6509 hardware-vektoren < fffa 0352 fffa 7a fe hanmi.word txnmi ind. sprung nmi-vector (von $fffa I 0353 fffc 0354 fffc 8b 07 hares.ward start system reset routine 0355 fffe 0356 fffe 64 fe hairq.ward txirq interrupt-routine ( irql

14 label-tabelle label adr. e6509 exbrk ff39 exbrkx fea2 excomm fedc excrt2 ff04 excrts ff05 exgbye fefb exirq ff3c exnmi ff35 expul2 ff2d expull ff2e exsu10 fee5 exsub feb2 exsubf fea 7 gbye fff6 hairq fffe hanmi fffa hares fffc i iobase fff3 ipinit ff79 ipoint OOac kacptr ffa5 kalloc ffb 7 kbasin ffcf kbsout ffd2 kchkin ffc6 kcint ff7e kciout ffab kckout ffc9 kclall ffe 7 kclose ffc3 kclrch ffcc kfunky ff75 kgetin ffe4 kioini ff7b kipcgo ff72 kipcrq ff78 klistn ffb1 klkupl ffbd klkups ffba kload ffd5 kmembt ff9c kmemtp ff99 kopen ffco kplot fffo krdtim ffde kreast ffb7 kresto ff87 ksave ffd8 kscnky ff9f kscror ffed ksecnd ff93 ksetmo ffa2 kstlfs ffba kstmsg ff90 kstnam ffbd kstop ffe7 ksttim ffdb ktalk ffb4 ktksa ff96 kudtim ffea kunlsn ffae kuntlk ffab kvecto ff84 kvrese ff6f putas ff2a putaxs ff24 stackp 0 1ff start 078b start7 078d tex 07b0 text 07a2 txirq fe64 txirq2 fe99 txnmi fe7a assemblierung ende

15 2. Beschreibung der RS 232 C - Schnittstelle 2.1 Allgemeines Die Rechner CBM 600/700 sind u. a. standardmäßig mit einer Schnittstelle ausgerüstet, die unter den Namen 'RS 232 C' bzw. 'V. 24' bekannt ist. Diese Bezeichnungen haben ihren Ursprung in der Nomenklatur der Institute, welche diese Schnittstellen normten. Im amerikanischen Sprachraum ist dies die 'EIA' ( Electronic Industries Association) für 'RS 232', in Europa ist es das 'CCITT' (Commitee Consultative Internationale de Telephone et Telegraphe) für V. 24. In der BRD sind die Empfehlungen deser Schnittstelle in der DIN genormt. Die Schnittstelle arbeitet asynchron und seriell. Seriell bedeutet, daß alle Informationen Bit für Bit übertragen werden. Asynchron bedeutet hierbei, daß die Übertragungsleitung, wenn keine Information zu übermitteln ist, auf einem bestimmten logischen Pegel gehalten wird; ganz im Gegensatz zur synchronen Datenübertragung, bei der ständig ein Füllbyte auf der Leitung gesendet wird. Im seriellen Datenformat wird bei der Übertragung eines Byte zuerst ein Start Bit gesendet, dann die Informations-Bits (LSB zuerst), eventuell ein Paritäts Bit und ein oder zwei Stop-Bits. Da die Datenleitung im Grundzustand (d.h. wenn keine Information zu übertagen ist I im logischen Zustand 'high ist, muß das Start-Bit ein logisches 'low sein. An diesem Wechsel des Leitungspegels erkennt der Empfänger den Anfang einer Informationseinheit und synchronisiert sich selbst darauf. Der Zustand eines Stop-Bit ist logisch 'high', also gleich dem Grundzustand der Übertragungsleitung. Die besprochene Schnittstelle wird benutzt, um Peripheriegeräte zu bedienen oder zur Kommunikation mit anderen Rechnern über Modem. Im Hinblick auf die Datenfernübertragung mittels Modem ist die Schnittstelle so ausgelegt, dab ein Rechner CBM 600/700 als Datenterminal (Daten-Endeinrichtung) zu interpretieren ist. 2.2 BASIC 4.0 und RS 232 C Die RS 232 C-Schnittstelle kann mit den normalen BASIC 4.0 Befehlen angesprochen werden; lediglich beim Eröffnen diesen Datenkanals sind einige Spezifikationen zu beachten. Es ist damit ein komfortables Handhaben gewährleistet. Das Eröffnen geschieht mit dem BASIC-Befehl: open lu,pa,sa,fp' lu pa sa fp Logical unit, logische Adresse Primäradresse- für die RS 232 C-Schnittstelle = '2' Sekundäradresse - gibt die Übertragungsrichtung an File-Parameter - ein vier Byte langer Character-String, er enthält Angaben über Obertragungsgeschwindigkeit, Parität und Wortlänge

16 2.2.1 Sekundäradresse sa Oie Sekundäradresse ist entsprechend der folgenden Tabelle anzugeben: sa 1: Rechner sendet nur, kein Datenempfang (z.b. Druckerausgabel sa 2: Rechner empfängt nur, kein Senden (z.b. HeBwerterfassungl sa 3: Rechner sendet und empfängt Daten lz.b. Rechnerkommunikationl Da der Zeichencode der CBH-Rechner (CBH-ASCIIl in einigen Punkten von der ASCII Norm abweicht, ist aus Kompatibilitätsgründen mit anderen Systemen vorgesehen, eine Code-Wandlung vorzunehmen. Bei der Ausgabe wird dadurch das CBH-ASCII in Standard-ASCII umgewandelt, beim Empfang entsprechend von Standard-ASCII in CBH ASCII. Wird diese Konvertierung gewünscht, so ist der Wert der Sekundäradresse um 128 zu erhöhen. So ist z.b. als "sa" bei bidirektionalem Datenverkehr mit Code-Wandlung der Wert "131" (3+128) anzugeben File-Parameter "fp" Die File-Parameter bestehen aus einem 4 Byte langen Character-String. Wichtig sind die ersten beiden Bytes, die letzten beiden spielen eine untergeordnete Rolle, müssen jedoch angegeben werden. Zunächst die Bedeutung des ersten Byte, mit dem stärksten lnformationsgehalt. Es sind dort die Angaben über die Übertragungsgeschwindigkeit, Anzahl der Stop-Bi ts, sowie die Wortlänge enthalten. Den folgenden drei Tabellen ist jeweils der betreffende Wert zu entnehmen und diese drei Werte zu addieren. Der so ermittelte Wert stellt das erste Byte des Character-Strings dar. 1.Byte lfp) Tabelle Übertragungsgeschwindigkeit Übertragungsgeschw. Wert 16 Takt el<tern 50 Baud Baud ,92 Baud Baud Baud Baud Baud Baud Baud Baud Baud Baud Baud Baud Baud 31 (nur bei Empfang zulässig) 1.Byte (fp) Tabelle Wortlänge Wortlänge Bit Bit Bit Bit Wert

17 !.Byte lfpl Tabelle Stop-Bits Anzahl Stop-Bits wert 0!falls Wortlinge = 8 mit Paritit 128 1,5 (nur bei Wortlänge 5 ohne Parität Byte lfdi Das zweite Byte baut sich nach einem ihnliehen Huster auf. Es wird aus zwei Tabellen errechnet. Um eine vollständige Leistungsbeschreibung zu bieten, wiren fünf Tabellen notwendig. Die letzten drei sind nur für Sonderfälle vorgesehen. Es ist dazu ein umfassendes Verständnis des Betriebssystems, der Hardware des Rechners und der Datenübertragung Voraussetzung. Die Tabellen sind in der Folge der Vollständigkeit wegen aufgeführt; der BASIC-Benutzer sollte sie aber ignorieren. Der Wert des 2.Bytes ermittelt sich demnach aus der Summe jeweils eines Wertes aus den beiden folgenden Tabellen: 2.Byte lfp) Hodus Tabelle Hodus Wert Normal 0 Echo 16 lnur Betriebsart Empfang) Der Hodus "Echo' bewirkt, daß die Daten, die der Rechner empfingt, sofort wieder an den Sender zurückgesendet werden, um dort die richtige Datenübermittlung zu kontrollieren (Duplexbetrieb). 2.Byte (fp) Tabelle Parität Parität Empfangen Senden Wert keine keine 0 ungerade ungerade 32 gerade gerade 96 keine mark I log. 1) 160 keine space (log. 0) Byte (fp) Zustand Tabelle Data Terminal Ready (unwichtig) Wert Blockieren Sendan/Empfangen Freigeben Senden/Empfangen 0 (Oefaultl

18 2.Byte (fpl Interrupt Tabelle Interrupt freigeben (unwichtig) Wert Freigeben IRQ (Bit 0 Status) Sperren IRQ 0 ( Default l 2.Byte (fpl Tabelle Sendekontrolle (unwichtig) Sendeunterbrechung (not RTS) Zusatz Wert Blockiert Freigegeben Blockiert Blockiert high low low low Sende:BRK ( Default l 2.3 Statusvariable Zur Kontrolle der Datenübertragung steht die Systemvariable "ST" zur Verfügung. Der Inhalt dieser Variablen hat folgende Bedeutung: Status Bedeutung 0 alles in Ordnung Paritätsfehler (nur beim Lesen! l Formatfehler (nur beim Lesen. z.b. falsche wortlingel Datenverlust (nur beim Lesen, die Daten werden schneller angeliefert, als sie ausgelesen wurden 16 Eingabepuffer leer (nur beim Lesen, beim letzten getl war noch kein gültiges Zeichen im Puffer 32 Fehler bei "Data Carrier Detect" 64 Fehler bei "Data Set Ready" Unter Umständen können mehrere Fehler gleichzeitig auftreten. In diesem Fall sind die einzelnen Fehlermeldungen auszufiltern IBitweises zerlegen der Statusvariablen). Die nun richtig eröffnete RS 232 (-Schnittstelle kann mit den normalen BASIC Befehlen gehandhabt werden (getl, printl, inputl). Dar Befehl inputl" sollte jedoch mit Vorsicht verwendet werden, da dieser Befehl am Ende der Zeicheneingabe ein carriage Return = chr$(13) erwartet. Trifft dieses Zeichen nicht ein, so bleibt der Rechner in der Input-Schleife hängen. Han sollte diesen Befehl nur dann verwenden, wenn das Eintreffen des "Carriage Return mit Sicherheit gewährleistet ist. ACHTUNG: Beim ersten Auslesen der Variablen ST wird ihr Wert auf null zurückgesetzt. Soll die Statusvariable später noch verwendet werden, so ist ihr Wert einer anderen Variablen zuzuweisen (kopieren).

19 In a ein 2~4 Hardware RS 232 C Die RS 232 (-Schnittstelle wird von dem Baustein 'ACIA 6551' = Asynchronaus Communication Interface Adapter bedient I diese111 IC ist u I I Baudratengenerator integriert, welcher Übertragungsraten von 50 bis Baud ermöglicht. Bei Verwendung eines ekternen Taktes können in der Betriebsart 'Empfangen' nicht standardisierte Übertragungsgaschw. bis zu Baud erreicht warden. Der Baustein besitzt neben seinen internen Registern fünf weitere, von außen erreichbare, Register. Es sind dies: Register Receiver - Register Transmitter - Register Status - Register Control - Register Command - Register Adruu hek SDDOO SDDOO $DD01 $DD02 $DD03 Adresse dez Über das Receiver-Register werden Daten eingelesen (lesender Zugriff), über das Transmitter-Register werden Daten gesendet (schreibender Zugriff l. Das Status Register übermittelt dem Benutzer durch Setzen der einzelnen Bits den Status des 6551-Baustains. Im Control-Registar ist der gewünschte Modus, wie Baud-Rate, Stop-Bit, Wortlinge sowie ekterner Takt, durch Setzen oder Löschen der einzelnen Bits, festgelegt. Im Command-Register werden die gewünschten Übertragungsmodes, wie Parität, Normal und Echo ect, festgelegt. Für eine ausführliche Beschreibung entnehmen Sie bitte die Daten dem '6551 Datenblatt'. An der RS 232 (-Schnittstelle werden 10 Anschlüsse ausgewertet. Die Verbindung Rechner/Peripherie erfolgt über eine 25-polige Cannon-Buchse (Weibchen), Die verwendeten Anschlüsse sind im folgenden nochmals in einer Tabelle dokumentiert. Pin CCITT EIA DIN Cannon V.24 RS CBH Bez. Beschreibung AA BA BB CA CB cc AB CF CD DA E1 D1 D2 52 H2 H1 E2 H T1 protgnd TKD RKD RTS CTS/RFS DSR sig.gnd DCD DTR RKC Schutzerde, gemeinsame Hasse Sendedaten: Ltg. für abgehende Daten Empfangsdaten: Ltg. ankommende Daten Sendeteil ein: Hitteilung zum Modem, Daten sollen gesendet werden Sendebereit: Antwort des Modems auf RTS Betriebsbereit: Hitteilung des Modems ankommende Daten zu übernehmen Signalerde, Betriebserde Empfangssignalpegel: Hitteilung des Modems, Daten auf der Leitung Terminal betriebsbereit: Hitteilung an Modem, Datenempfangsbereit Takt für ekt. Takt (nur Empfang) Die Rechner CBH 600/700 erwarten an allen beschalteten Anschlüssen den richtigen logischen Pegel. Eine Ausnahme ist 'RKC' = Pin24. Er wird nur ausgewertet, wenn der ekterne Takt beim Eröffnen der Datenübertragungsleitung ausdrücklich erwünscht wird (näheres im vorherigen Kapitel 'Obertragungsgeschwindigkeit' ). Da es sehr häufig vorkommt, daß das an den Rechner anzuschliessenda Gerät nicht alle bedienten Anschlüsse auswertet und beantwortet, können zur Funktion folgende Lötbrücken am Stecker des Verbindungskabels hergestellt werden: Anschlüsse '4 Anschlüsse '6 RTS' mit '5 DSR' mit 'B crs verbinden und DCD' und '2D = DTR' verbinden

20 CBM 600 und 700 Speicheraufteilung $FFFF Segment 15 = $0F Operating - System (Kernal) gk Segment 1-4 $EOOO $0FOO $0EOO $ $0COO $0BOO $0AOO $0900 $0800 $ $COOO $AOOO $8000 $6000 $4000 $2000 $1000 $0800 $0002 $0001 $ _ ---~~..I.a.ll.wt ä.l,eß "'G;rr JW _R~2.ll !.E~ ~8_L J!1~2!:.t E~._E.o.U.:...C.2er~wqr:;~a.I:.I!_ - 22.,8L ~u.!!.si ~~wt- Jlll<~t~b.!U:e..:ish..J ~Ul i,~RLC!2Jllc.g_l~,r---- 2K Bildschirm RAM nicht benutzt t1 r. BASIC ROM Hi 7:k. r BASIC ROM Lo '6K Cartridge ROM/RAM S/< (Bank 3) Cartridge ROM/RAM (Bank 2)!> K Cartridge ROM/RAM ( ~ (Bank l) 2K 4K Oisk ROM ext. Buffer RAM 2K RAM Indirekt Segment Bank Execute Segment Bank I I I I I I I.s:: u ~..._ QJ QJ CO I I I I I I I """ I ~ +' c: QJ E QJ "" oj') II 0 N N :a:"' <:::E eo::co I u E QJN -:;:1 >o~ "'+> c: QJ E QJ "" oj') 0 II ~ ~.., ::E CO u

21 3.1 Speicheraufteilung Bei den Geriten der Serie CBH 600/700 ist der gesamte adressierbare Speicherbereich in 16 Segmente "Banks" unterteilt. Jedes Segment umfabt einen Adressraum von 64 K-Byte. Der eingebaute Hicroprozenor 6509 kann 16 solcher Segmente!Bank verwalten. Es sind also 16 * 64 K-Byte = 1 H-Byte adressierbar. Unter BASIC haben einige Segmente. abhingig vom Ausbau. eine feste Bedeutung: Modell Ausbau Segment 1 Segment 2 Segment 4 CBH 610/ K-Byte BASIC-TaKt alle Variable CBH 620/ K-Byte BASIC-TaKt Feld-Variable einf. Variable Strings CBH K-Byte BASIC-TaKt Feld-Variable einf. Variable Strings Oisk-Betriebssyst: Im Segment 15 befinden sich bei allen Modellen die Betriebssystem ROHs des Typs "2364 A' bzw. EPROHs '2764 A' (8 K-Bytel mit BASIC-Interpreter, Editor, Operatingsystem. Monitor, sowie das Bildschirm-RAH, das System-RAH!Zero-Page, Stack usw.l und die Adressen der Eingabe/Ausgabe-Bausteine. In einem weiteren Adressbereich ist Platz für das Disk-Betriebssystem!CBH 7301 reserviert. Die restlichen Adressen lind über den spiter beschriebenen Cartridge-AnschluB nach außen geführt. Die restlichen freien Segmente sind über die eingebaute 'EKpansion Schnittstelle" extern mit RAH-Speicher belegbar. Oie einzelnen eingebauten RAH-Segmente sind mit 8 dynamischen RAH-Bausteinen '4864' aufgebaut. Jedes dieser RAHs hat eine Kapazitit von 64 K-Bit, 8 RAHs mit 64K-Bit parallel ergeben 64 K-Byte. Für das Systemsegment-RAH wird ein statischer RAH-Baustein '2016' mit 2 K-Byte verwendet IZero-Pege, Stackl. Die folgende grafische Obersicht gibt Ihnen eine zusanvnenfasaende Information über die Speicheraufteilung in den &eriten der Serien 600 und 700.

22 3.2 ROH/RAH - Cartridge Oie Geräte der Serien CBH 600/700 verfügen an der Geräterückseite über einen Anschluß für Steckmodule. Es lassen sich damit zusätzlich noch 24K-Byte ROH/RAH /Eprom/10 in das Segment $OF = Bank 15 einfügen. Wie bei den Geräten VC-20 und VC-64 besteht die Möglichkeit, einen Autostart des Modulprogramms durchzuführen. Nach dem Errichten des Stacks und dem Test, ob ein Reset' vorliegt (kein Kaltstart), wird nach dem Einschalten des Rechners der Bildschirm-Controller initialisiert. Dies ist notwendig um beim CBH 700 eine Beschädigung des Video-Teils zu vermeiden. Danach erfolgt die Prüfung ob ein Autostart-ROH eingesetzt ist. Das Operating-System (Kernall untersucht an den 4k-Byte-Grenzen '$1000 bis $8000' im Segment $0F (Bank 15) ob folgende Daten vorhanden sind: Adresse $X006 $X007 $X008 $X009 Wert c $C2 $CO "><' Bedeutung he>< $43='c' oder $C3='C' bei Standardinit. ASCII 'B' ASCII "H' '><' steht für 4K-Byte-Block 1-8 $30-$38 Werden beim Test diese Daten gefunden, dann enthalten die Speicherstellen $XOOO bis $X002 einen JHP $XXXX auf das Anwenderprogramm. Es erfolgt ein Autostart. Soll das Betriebssystem vor dem Starten des ROH-Programms eine normale Initialisierung durchführen, dann muß in der Speicherstelle $X006 der Wert c +$80 stehen (höchstes Bit gesetzt). Der jeweilige Warmstart-Einsprung ist $XOOJ. Hier steht ein JHP $XXXX auf das Anwenderprogramm. Wie in der Speicheraufteilung ersichtlich, liegen die eingebauten BASIC-ROMs von $8000 aufwärts. Die Sequenz für BASIC ab $8006 ist $C3, $C2, $CO, $38. Sind Floppy-Laufwerke eingebaut, so übernimmt das eingebaute Oisk- ROH (ab Adresse $1000) die System-Kontrolle. Sind kein Autostart- und keine BASIC-ROMs vorhanden, meldet sich der Rechner mit dem Maschinensprache-Monitor. Allgemeiner Hinweis: Oie Geräte CBH 600/700 verfügen über einen hardwaremäßig erzeugten Cursor. Das Blinken des Cursors ist deshalb kein Beweis für einen 'lebenden Rechner. Das heißt, der Rechner kann trotz blinkendem Cursor abgestürzt sein. Es muß danach ein Reset (Knopf an dar Geräterückseite l durchgeführt werden. Dies gilt nicht für die Rechner CBH 8000.

23 3.3 Steckerbelegungen c:::================== IEEE 5tecker Pin Bez. Baustein intern Adresse dez CIA 6526 PRA 0 $0COO CIA 6526 PRA 1 $OCOO CIA 6526 PRA 2 $OCOO CIA 6526 PRA 3 $OCOO EOI TPI 6525 PRA 5 $0EOO OAV TPI 6525 PRA $0EOO NRFO TPI 6525 PRA $0EOO NOAC TPI 6525 PRA 6 $0EOO IFC TPI 6525 PRB 0 $OE SRQ TPI 6525 PRO 1 $0E ATN TPI 6525 PRA $0EOO prot.gno (Schutzerde, gemeinsame Hasse) A 05 CIA 6526 PRA 4 $OCOO B 06 CIA 6526 PRA 5 $0COO c 07 CIA 6526 PRA 6 $0COO CIA 6526 PRA $OCOO E REN TPI 6525 PRA 2 $0EOO F-N GNO Keyboard 5tecker Pin Bez. Baustein intern Adresse dez PAO TPI 6525 PRA 0 $OFOO PA2 TPI 6525 PRA 2 $0FOO PA4 TPI 6525 PRA $0FOO PA6 TPI 6525 PRA 6 $OFOO PBO TPI 6525 PRB 0 $0F PB1 TPI 6525 PRB $OF PB2 TPI 6525 PRB $OF PB3 TPI 6525 PRB $OF PB4 TPI 6525 PRB 4 $OF PB5 TPI 6525 PRB 5 $0F PB6 TPI 6525 PRB 6 $OF PB7 TPI 6525 PR8 $OF PC5 TPI 6525 PRC 5 $OF PA1 TPI 6525 PRA $0FOO PA3 TPI 6525 PRA 3 $0FOO PA5 TPI 6525 PRA 5 $0FOO PA7 TPI 6525 PRA 7 $0FOO PCO TPI 6525 PRC 0 $0F PC1 TPI 6525 PRC 1 $OF PC2 TPI 6525 PRC 2 $OF PC3 TPI 6525 PRC 3 $0F GNO 23 GNO 24 GNO 25 PC4 TPI 6525 PRC 4 $OF

24 3.3.3 Cartridge Stecker Pin Bezeichnung AO 2 Al A2 A3 s A4 6 AS 1 A6 8 A7 9 A8 10 A9 11 A10 12 A11 13 A SV DC 1S + SV DC A BDO B BD1 c BD2 D BD3 E BD4 F BDS H BD6 J BD7 K GND L GND H S R/W N S02 p NOT CSBANK 1 R NOT CSBANK 2 s NOT CSBANK Adressbit 0 Adressbit 1 Adressbit 2 Adressbit 3 Adressbit Adressbit s Adressbit 6 Adressbit 1 Adressbit Adressbit 9 Adressbit 10 Adressbit 11 Adressbit 12 Spannung + SV Spannung + SV Datenbit Datenbit 1 Datenbit 2 Datenbit 3 Datenbit 4 Datenbit s Datenbit 6 Datenbit 1 Hasse Hasse Hodus Read/Write Takt phi 2 Chip Select Bank (Segment 15) Chip Select Bank (Segment 15) Chip Select Bank (Segment 15) Video Stecker Pin Bezeichnung VIDEO GND VERTICAL SYNC GND HORIZONTAL SYNC KEY GND Videosignal Hasse Vertikal-Synchronisation Hasse Horizontal-Synchronisation Lichtgriffel Hasse

25 3.3.5 User Stecker Pin Bez. Baustein intern Adresse dez. GND PB2 TPI 6525 PRB 2 $DE GND PB3 TPI 6525 PRB $0E NOT PC CIA PC (Handshake PRB I/0, Output) 6 NOT FL Cass-Read -FLAG (Interrupt, Input) 207 CIA 6526 PRB 7 $0C CIA 6526 PRB 6 $DC CIA 6526 PRB 5 $0C CIA 6526 PRB 4 $0C CIA 6526 PRB $0C CIA 6526 PRB $OC CIA 6526 PRB $OC CIA 6526 PRB 0 $0C CIA 6526 PRA 7 $0COO CIA 6526 PRA 6 $0COO CIA 6526 PRA 5 $0COO CIA 6526 PRA $0COO CIA 6526 PRA 3 $0COO CIA 6526 PRA $0COO CIA 6526 PRA 1 $0COO CIA 6526 PRA 0 $0COO NOT CNT CIA CNT $0C (Takt von Timer AI $0C V OC 25 NOT IRQ TPI 6525 PRC $0E SP CIA 6526 SP ( Serial Port 1/ Audio Stecker Pin Bezeichnung Lautsprecher ( 8 Ohm I unbenutzt Lautsprecher ( 8 Ohm) Soannynas-Stecker Pin Bezeichnung Hertz - 12V DC + 12V DC GNO Hasse GNO Hasse + 5V DC

26 3.3 8 Co-prgzessor Stecker RS 232 c Stecktr Pin Bezeichnung Pin Bezeichnung EXTHA3 1 prot. GND 2 DRAHDO 2 T><D 3 EXTHA2 3 RxD 4 DRAHD1 4 RTS 5 EXTHA7 5 CTS 6 DRAHD2 & DSR 7 EXTHA6 GND 8 DRAHDJ DCD 9 EXTHA5 9 unbenutzt 10 DRAHD4 10 unbenutzt 11 EXTHA V DC 12 DRAHD V DC 13 EXTHA1 13 unbenutzt 14 DRAHD6 14 unbenutzt t 15 EXTHAO 15 unbenutzt 16 DRAHD7 16 unbenutzt 17 GND 17 unbenutzt 18 GND 18 unbenutzt 19 GND 19 unbenutzt 20 &ND 20 DTR 21 GND 21 unbenutzt 22 NOT BUSY 1 22 unbenutzt 23 GND 23 unbenutzt 24 NOT P2 REF REQ 24 R><C 25 GND 25 unbenutzt 26 NOT P2 REF GRNT 27 GND 28 BPD 29 GND 30 BP1 31 GND 32 BP2 33 unbenutzt J4 BP3 35 NOT PROCRES 3& NOT BUSY 2 37 EXTBUF R/W 38 NOT ERAS 39 DRAH R/W 40 NOT ECAS

27 J.J.!O ExPansion Stecker Pin Dez. Baustein intern Adresse dez SV OC 5-10 GND!1 12 NOT BRAS IRQ J 1 J - 12V OC!4 15 NOT EXTRES + 12V DC! S02 26 NOT BCAS 27 SO! 28 NOT CS 1 29 BDJ JD NOT EXTPRTCS J BD2 JJ BOl 35 B07 36 BOO 37 BA!J BA BA BA! 42 BAO 43 BA2 44 BA BAJ 46 BA!O 47 BA12 48 BA4 49 BA9 50 BA5 51 BA8 52 BA6 53 BPO 54 BA7 55 BP! 56 BP2 57 NOT NM! 58 BPJ 59 ROY 60 NOT IRQ TPI 6525 NOT SO CPU 6509 NOT RES LPEN CRT 6845 S R/W NOT EXTBUFCS TODCLK NOT DISCROMCS BDOTCLK unbenutzt CPU 6509 CPU 6509 CPU 6509 DRAM: Row Access PRC J $0ED2 Reset-Ourchla8 so System Reset Light Pen, Lichtgriffel System Read/Write Adresse: $0800-SOFFF Takt 50 Hertz Adresse: $1000-$1FFF Takt 18 MHz Takt phi 2 DRAM: Column Access Takt phi 1 Adresse: $0900-$09FF Datenbit Adresse: $0B00-$0BFF Datenbit 4 Datenbit 2 Datenbit Datenbit Datenbit 7 Datenbit 0 Adressbit 13 Datenbit 6 Adressbit 14 Adressbit 15 Adressbit Adressbit Adressbit Adressbit 11 Adressbit J Adressbit 10 Adressbit 12 Adressbit Adressbit 9 Adressbit 5 Adressbit 8 Adressbit 6 Bank 0 (Segment 0) Adressbit 7 Bank 1 (Segment 1) Bank 2 (Segment 2) Nicht maskierter Interrupt Bank J (Segment J) Ready Interrupt Request

28 4. TE I L ASSEHBLERLISTING C B H I B A S I C 4. 0

29

30 b710bas.lib.... seite 0001 zeile adr. obj.-code source-code pass lib b710bas.lab 0224.lib b710bas. con 0319.lib tolcens lib contrl 1587 B98d.lib bverbsl e7a.lib bverbs a1.lib bverbs lib mathl af5.lib math fca.lib math lib math a7c0.lib strngl ,..lib strng af9a.lib delete 7897 b026.lib using 8538 b4b8.lib butes b7bf.lib butes ba93.lib init 9804 bbdd.lib syscal pass /710 library-file lib b710bas.lab

31 610/710 basie label-def. hard+soft ass/reass seite 0002 zeile adr. obj.-eode souree-eode OOH OOH OOH 0048 oou ===> externe zero-page-label <=== e6509 $00 i6509 $01 usrpok $02 tmhour $05 tmmin $06 tmsee $01 tmten $08 form $09 eharae $Oe endehr $0d count $Oe xcnt $0f dimflg $10 valtyp $11 intflg $12 dores $13 subflg $ H inpflg $15 dsdesc $16 channl $Ia linnum Slb temmpt $1d lastpt tempst indexl index2 resho resmoh resmo reslo txttab txtend vartab arytab aryend strend fretop frespe memtop curlin oldlin oldtxt datlin datptr inpptr varnam varpnt lstpnt opptr opmask Sie $20 $22 $25 $28 $29 $2a $2b $2d $2f $31 $35 $37 $39 $3b $3d $3f $42 $H $46 $49 $4b $4d $H $51 $54 $51 $5a 6509 exeeution register 6509 indireetion register jmp code für user-routine zeit stunden für ti$-bereehnung zeit minuten für ti$-bereehnung zeit sekunden für ti$-bereehnung zeit II 10-sek. für ti$-berechnung addrl format-zeiger puffer für trennzeichen puffer für trennzeichen allgemeiner zähler dos loop-zähler dim-flag für zeigersuche auf variable flag für variablen typ /O=num, I =stringl flag für integer-variable flag für token o. ascii/garbage-flag flag für indizierte variable flag für eingabe /input,get,read) länge disc-status string speieherstelle für aktiven kanal lo-byte akt. Zeilennummer zeiger auf zeitw. stringdescriptor I rel. offset J addrl letzt benutzter string-descr. addrl für 3 temp. string-descriptoren addrl indirekter index II addrl indirekter index 12 Zwischenergebnis multipl./division Zwischenergebnis multipl./division Zwischenergebnis multipl./division Zwischenergebnis multipl./division addrl zeiger anfang basic-text addrl zeiger ende basic-text addrl zeiger anfang einfache variable addrl zeiger anfang array-tabelle addrl zeiger ende array-tabelle addrl ende benutzter ram-bereich addrl top of string free space addrl zeiger auf neuen string addrl höchste ram-speicherstelle lo-byte akt. zeilennummer lo-byte vorige Zeilennummer lstopj addrl zeiger letzter basic-befehl addrl data-zeilennummer addrl zeiger auf data nach read" addrl input-zeilennummer erstes zeichen akt. Variablenname addrl Zeiger auf variable im ram addrl zeiger letzter string addrl zeiger akt. operator-routine vom akt. operator erzeugte bit-maske

32 610/710 basic label-def. hard+soft ass/reass.... seite 0003 zeile adr. obj.-code source-code OOH defpnt dscpnt jmper highds hightr lowds lowtr dsctmp facexp facho facmoh facmo faclo facsgn sgnflg bits argexp argho argmoh argmo arglo argsgn arisgn facov fbufpt txtptr buffpt parsts $5b $5e $61 $64 $67 $6a $6d $70 $11 $72 $73 $14 $75 $76 $77 $78 $79 $7a $7b $7c $7d $7e $7f $80 $82 $85 $88 $8b addrl zeiger funkt.-def./ temp.facl3 addrl zeiger string descr./temp.facl3 $4c wert für 'jmp {functions-rout.l addrl zielende {verschieben!/ temp. facll addrl ursprungende lverschiebenl/ temp.facll addrl zielanfang lverschiebenll temp.facl2 addrl ursprunganfang {verschieben)/ temp.facl2 zeitweise descriptoren-ablage fac II: exponent fac II: mantisse fac II: mantisse fac II: mantisse fac II: mantisse fac II: vorzeichen fac II: Vorzeichenduplikat shift-zähler fac-arg ungepackt: exponent fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac-arg ungepackt: vorzeichen fac-arg ungepackt: Vorzeichenduplikat fac overflow-byte addrl zeiger fac-puffer lfout-rout.l addrl zeiger auf akt. term addrl zeiger auf eingabe-puffer das analyse-byte > bitbedeutung von das analyse-byte I < bi t 7 klammeraffe in dateiname gelesen 0092 bit 6 w oder 'l' gelesen 0093 bit 5 2. laufwerk I gelesen 0094 bit I. laufwerk I gelesen 0095 bit 3 geräte I gelesen 0096 bit 2 logische file I gelesen bit bit 0 2. dateiname gelesen I. dateinamegelesen parstx = $8c das analyse-byte 2 ---> bitbedeutung von das analyse-flag 2 <--- bit 7 bit 6 bit 5 bit bit 3 bit 2 bit unbenutzt unbenutzt unbenutzt unbenutzt unbenutzt dos-offset hi gelesen dos-offset lo gelesen

33 610/110 basic 1abe1-def. hard+soft ass/reass... seite 0004 zeile adr. obj.-code source-code 0Jf1 Off I 0Jf bit 0 dos-bank gelesen seedpt $8d errnum $8f ::s> externe ram-label <=== stack buf dosffl dosdsl dosffa dosfbl dosf21 dosds2 dosf2a dosfb2 dosbnk dosofl dosofh dosla dosfa dossa dosrcl dosdid didchk dosstr trmpos eormsk dfbank dolu tansgn ldaabs ldaadr hulp bnr enr dolr flag swe usgn uexp vn chsn llf nf posp fesp etof cform sno blfd begfd $0100 $0200 $0210 $021 I $0212 $0214 $0215 $0216 $0217 $0219 $021a $021b $021d $02" $0220 $0221 $0222 $0223 $0225 $0226 $0155 $0256 $0257 $0258 $0259 $0251 $025b $025e $025f $0260 $0261 $0262 $0263 $0264 $0265 $0266 $0267 $0268 $0269 $0261 $026b $02&c $026d $026e $026f $0270 addrl zeiger auf akt. Zufallszahl fehlernu.mer für 'trap 6509 cpu-stack basic input-puffer l-$2ff} dos Filename I lange dos disk drive I addrl dos filename I bank dos Filename 1 dos Filename 2 länge dos disk drive I addrl do1 Filename 2 bank do1 Filename 2 dos bank nummer addrl dos offset untergrenze lbsave,bloadl addrl dos offset obergrenze lbsave,bloadl dos logische adresse dos primir-adresse dos sekundär-adressa dos record-länge dos erstes zeichen 'id' dos did flag dos ausgebe string puffer cursor spalte auf bildschirm bitmaskefür wait' vorgebe für bank-nummer vorgabe für ausgabe-adresse flag für 'tan vorzeichen lda abs routine addrl modifiable adresse print using: zähler print using: zeiger auf beginn print using: zeiger auf ende print using: doller flag print using: komme flag print using: zihler print using: Vorzeichen exponent print using: zeiger auf exponent print using: anzahl stellen vor dezimalpunkt print using: justify flag print using: s position vor dez.pkt. print using: I position nach dez.pkt. print using: +/- flag (feld} print using: exponent flag lfeldl print using: switch print using: zeichen zihler (feld} print using: vorzeichen nummer print using: blank/stern flag print using: zeiger auf anfang feld

34 610/710 basic label-def. hard+soft ass/reass... seite 0005 zeile adr. obj.-code source-code lfor endfd pufill pucoma pudot pumony ierror imain icrnch iqplop igone ieval ifrmev ichrgo ichrge trapno errlin errtxt $0271 $0272 $0273 $0214 $0275 $0276 $0280 $0282 $0284 $0286 $0288 $028a $028c $028e $0290 $0296 $0298 $029a oldstk tmptrp dsptmp oldtok tmpdes highst $029c $029d $029e $0Z9f $0Za0 $0Za6 ===> externe rom-label <=== knwsys kvrese kfunky kioini kcint klkups klkupl kstmsg kmemtp kmembt kreast kstlfs kstnam kopen leelose kchkin leckout kclrch kbasin lebsaut kload ksave lesttim krdtim $ff6c $ff6f $ff75 $ff7b $ff7e $ff8a $ff8d $ff90 $ff99 $ff9c $ffb7 $ffba $ffbd $ffc0 $ffc3 $ffc6 $ffc9 $ffcc $ffcf $ffdz $ffd5 $ffd8 $ffdb $ffde print using: länge formatstrings print using: zeiger auf ende Feld print using: FÜllzeichen print using: kammazeichen print using: zeichen dez.punkt print using: Währungszeichen addrl fehler routine addrl basic-warteschleife addrl token-umwandlungsroutine addrl token ausgabe expander rout. addrl dispateher addrl beliebigen ausdruck auswerten addrl beliebigen ausdruck auswerten addrl chrgot routine addrl chrget routine addrl zeiger error trap lo-byte Zeilennummer akt. fehler addrl basic-text zeiger bei Fehlerbehandlung stackzeigervor "trap" ausführuns hi-byte zeilennummer "trap, resume temp. speieher "dispose' temp. speieher 'dispose temp. speieher 'instr$' lo-byte max. offset user bank transfer-of-execution jumper netz ein/aus reset-vector vector für Funktionstasten initialisierung ein-/ausgabe initialisierung bildschirm geriteadr. Über sekundiradr.suchen gerite- sekundäradr. Über logische file I suchen meldung des operating-syst. ausgeben höchste speichergrenze lesen/schreiben unterste speichergrenze lesen/schreiben ein-/ausgabe-status lesen/schreiben log. filenummer, gerite- und sekundiradr. eintragen länge und adresse des filenamens eintragen log. file Öffnen/befehl ausgeben logisches file schliessen eingabeleanal öffnen ausgabeleanal öffnen ein-lausgabeleanal schlieben eingabe I char vom akt. kanal ausgabe I char auf akt. lcanal einlesen vom logischen file abspeichern auf logisches file interne uhr stellen interne uhr ablesen

35 610/110 basic label-def. hard+soft ass/reass..... seit& 0006 zeile adr. obj.-code source-code 0217 kstop $ffel test stop-taste 0218 kgetin $ffe4 eingabe I char von tastaturpuffer 0219 kclall $ffe7 alle logischen files schliessen 0220 kplot $fff0 x,y-pos. des cursor lesen/schreiben 0221 hairq $fffe 6509 hardware-irq-vektor end 0224.lib b7 IObas. con

36 610/710 konstanten hard+soft ass/reass..... seite 0007 zeile adr. obj.-code source-code I I ===> ascii- und asc-codes <=== lf er clrscr home eom $Oa $0d $80 ===> system-konstanten und parameter <=== forsiz numlev bufsiz addprc addpr2 addpr4 addpr8 stkend clmwid pi strsiz ptrsiz numtmp I addprc+addprc addpr2+addpr2 addpr4+addpr4 $0 lfb 10 $ff 0254 ===> ieee-konstanten und parameter <=== I dc te ren attn dav eoi ndac nrfd ifc srq rddb tddb eoist tlkr lstnr utlkr ulstn toout toin eoist nodev sperr 3 3 $01 $02 $04 $08 $10 $20 $40 $80 $01 $02 ascii für "line feed" ascii für carriage return asc für clear screen asc für cursor home end-of-message-kennung erstes byte für stack Spaltenbreite für tabulation mit basic-token für pi anzahl speieherstellen für string-descriptor anzahl speieherstellen für speicher-zeiger 75160/75161 control line 75160/15161 control line remote enable attention data available end or identify not data accepted not ready for data interface clear service request nrfd+ndac+te+dc+ren direction for receiver eoi+dav+attn+te+dc+ren direction for transmit $40 $40 $20 $Sf $3f $01 $02 $40 $80 $10 eoi status test device is talker device is listener device untalk device unlisten timeout status on output timeout status on input eoi on input no device on bus verify error

37 610/710 konstanten hard+soft ass/reass.... seite 0008 zeile adr. obj.-code source-code ===> ===> ===> slock dibf $40 $80 vorbelegte speicher-segmente <=== sysbnk mxbank txtbnk varbnk arybnk strbnk $0f sysbnk+l I 3 2 dos-interface-konstanten <=== dosfnl dosdsk doslfn dosctl dos1st dosfnl+dosfnl+dosfnl+16 screen editor lack-out data in output buffer nummer der system-bank erste nicht erreichbare bank bank für basic-programme bank für einfache variablen (256k-version) bank für Variablenfelder I 256k-versionJ bank für strings (256k-versionJ länge von filenamen vorgabewert für disc-gerätenummer dos internal logical file nummer kernal coprozessor communications-variablen <=== ipb ipbsiz $ > offsets im ipc-puffer < I I 0312 ipccmd ipcjmp 03" ipcin ipcout 0316 ipcdat 5 ' end 0319.lib tokens basisadresse ipc-puffer kernal inter process communication puffer-länge ipc befehl ipc sprung-adresse anzahl ipc eingabe-bytes anzahl ipc ausgabe-bytes ipc data-puffer 18 bytesj

38 610/710 basic-tokens hard+soft ass/reass.... seite 0009 zeile adr. obj.-code source-code B BOOO BOOO BOOO BOOO BOOO B003 B003 B003 B003 B B B006 = $BOOO ===> basic kalt-start <=== 4c 27 bb jmp init ===> basic warm-start <=== 4c cc bb jmp warm ===> commodore rom-kennung 'cbm <=== B c BOO 7 c BOOB Cd 033B B B B B BOOb b b 0346 BOOb 0347 BOOb ba B BOOd do BOOf lb a BO II BOI3 BOIS BOI b 801d 55 a9 66 BB bc bb 73 a9 cb B9 5a 87 2c B BO!f B B7 B 7 Be 2a bb ef BO byte $c3, $c2, $cd warm-start ===> adress-kennzeichnungs-byte für rom-beginn '$B' <=== byte 'B ===> adress-tabelle <===.word evall.word eval2.word floats.word fretms.word getstk.word initv.word inpcom.word prit4.word newstt. word ptrget.word xeqdir.word gotoo.word inito.word res1st 0363 B027 ===> adress-tabelle der basic-befehle <=== B02b B02d 802f B B a9 Bb 93 Ba 05 Bb de Be 4a Bf 65 Bf Ob 91 e9 Bf B9 8d Be stmdsp.word end-!.word for-1.word next-1.word data-1.word inputn-1. word input- 1. word dim-1.word read-1.word let-1.word goto-1 umw. zahlenstring in gk-zahl folgenden ausdruck!keine ziffer) auswerten test stapelplatz standard-vektoren ins ram kopieren neues statement, stoptest variable suchen/anlegen, deren name folgt test gültiges befehlszeichen, weiter basic-befehlswort text-tabelle basic-routine 'end' basic-routine 'for basic-routine 'next' basic-routine 'data basic-routine 'input ' basic-routine 'input' basic-routine 'dim basic-routine 'read' basic-routine 'let' basic-routine goto

39 610/710 basic-tokens hard+soft ass/reass.... seite 0010 zeile adr. obj.-code source-code b 0376 B03b d f 0379 BOU 0310 B BOU 0382 BOH 0383 B B04b d 03B6 BOH 03B BOSJ 0319 B B B B05b 0393 B05d 0394 B05f 0395 B06, 0396 B B B B06b 0401 B06d 0402 B06f 0403 B B B B B B07b 0409 B07d 0410 B07f 0411 BOB I 0412 BOB BOB BOB BOB BOBb 0417 BOBd 041B 80Bf B B B B b 0425 B09d f BOa I 042B BOa BOa a BOa BOab 06 Be 41 Be 7B Bb 24 Be b7 Be 76 Be a 7 Bb 2a Bd c7 91 Ia 92 bb I Be 9c Be eb Bb Be 89 H Ba 7f Be e& Bf 2B Ba 7b Be e 93 ab 93 9d f d 93 c2 93 Cd 93 ao 92!il ao dd 93 Od 94 eb 93 7e 9 I 9c af 76 Be 15 Bd c3 Bd 23 Be bf a 7 10 a2 bl a2 2f a f5 9e stmdsl.ward run-1.ward if- I.word restor-1.ward gosub-1.word return-1.word rem-1.word stop-1.word ongoto-1.word fnwait-1.word eload-1.word esave-1. word cverf- 1.word defn-1.word poke- 1.word printn-1.word print-1.word eont-1.word list-1.word elear-1.word emd- I.word csys- I.word eopen-1. word cclos- I.word get-1.word scrath-1.ward go-1.word concat-1.word dopen-!.word dclose-1.ward record- I.word format-1.word colect-1.word backup-1.word deopy-1.word append-1. ward dsave- I. word dload- I.word dcat-1.word rename-1. ward scra tc- I.ward dcat-1.word dclear-1.ward cnbanl<-1. ward bload- I.ward bsave-1. word fkey- I. ward delete- I.ward rem- I.ward trap-1.word resume-1.ward dispos-1.ward puetrl-1.ward sgn.word int.ward abs.word usrpol<.ward fre basic-routine run basic-routine 'if' basic-routine 'restore' basic-routine 'gosub' basie-routine 'return' basic-routine basic-routine basic-routine basic-routine basic-routine basic-routine basic-routine basie-routine basic-routine basic-routine basie-routine basie-routine basic-routine rem stop' 'on - goto' 'wait' 'Load save 'verify' 'def' 'poke' 'printl' 'print' 'cont' 'list' basie-routine 'clr', zera=o rts basic-routine 'cmd' basic-routine sys basic-routine 'open basic-routine 'close' basic-routine 'get' basic-routine new basic-routine 'go to' disc-basic-routine 'concat' dise-basie-routine 'dopen' disc-basic-routine 'dclose' disc-basic-routine 'record' disc-basic-routine 'header' disc-basic-routine 'callect' disc-basic-routine disc-basic-routine disc-basic-routine disc-basic-routine dise-basie-routine 'backup eapy append 'dsave' 'dload disc-basic-rout. 'catalog-dir. disc-basic-routine 'rename' dise-basie-routine 'serateh' disc-basie-rout. 'catalog-dir. disc-basie-routine 'delear' basie-rautine 'bank' disc-basic-routine 'bload' dise-basie-routine 'bsave' basie-rautine 'key' basic-routine 'delete' basie-rautine rem basie-rautine 'trap' basic-routine basic-rautine basic-rautine basic-routine basic-routine basic-rautine resume 'dispose' pudef sgn fac=sgn(fac} int' fac=i41tl fac J 'abs' abs=abs(facj jmp code fur user-routine basic-rautine 'fre'

40 basic-tokens hard+soft asslreass seite 0011 zeile adr. obj.-code source-code ad 0434 BOaf bl b b BOb b9 OHO BObb OHI BObd OH2 BObf OH3 80c I 04H 80c3 OH5 80c c c BOcb OH9 80cd cf dl 0452 BOdl 33 9d 37 a5 59 a6 ca 9f b3 a5 a6 a6 ad a6 f8 a6 91 a e Be ab db a 7 ae ab 9d ab dl aa eb aa 22 ab 42 ab.ward pos.ward sqr.ward rnd.ward log.ward exp.ward cos.ward sin.ward tan.ward atn.ward peek. ward len.ward strd.ward val.ward asc.ward chrd.ward leftd.ward rightd.ward midd basic-routine 'pos basic-routine sqr fac=sqr(facl basic-routine 'rnd' basic-routine 'log' basic-routine exp fac=exp(facl basic-routine cos fac=coslfacl basic-routine s~n basic-routine 'tan' fac=tanlfacl basic-routine 'atn' fac=atnlfacl basic-routine 'peek' basic-routine 'len' basic-routine 'str$' basic-routine 'val basic-routine asc basic-routine 'ehr$' basic-routine 'left$' basic-routine 'right$' basic-routine 'mid$' 0453 BOdl ===> adresse I prioritätsflags der math. raut. <=== dl 0455 BOdl 19 optab.byte $ d2 4c 9e. ward faddt d d5 2f 9e d7 7b d8 SOda BOdb 80dd BOde 80e0 80el BOe3 Oa ao 7b e8 ao 7f 40 a5 50 6d B 80e4 6a B0e6 7d e7 79 a BOe9 5a ea f BOec ed a ef ef. byte $19. ward fsubt- I.byte $7b.ward fmultt-1.byte $7b.ward fdivt-1. byte $7f.ward fpwrt-1.byte $50.ward andop-1. byte $46.ward orop-1.byte $7d.ward negop-1.byte $5a.ward notop-1. byte $64. ward dorel- I 0477 BOef ===> basic-befehlswort text-tabelle <=== ef ef res1st.byte en'. $c fl f2. byte fo, $d f4 d2 OUI f5 80f8 80f9 80fc 80fd e d4 H cl 49 4e byte nex', $d4. byte 'dat ', Sc 1.byte 'input', $a3 adresse I prioritätsflags der math. raut. adresse I prioritätsflags der math. raut. basic-routine - (dez. subtr.j basic-routine ' (dez. multipl. I basic-routine 'I' (dez. divisionl basic-routine 'dez. potenz' basic operations-routine 'and' basic operations-routine or basic-routine negation basic operations-routine 'not' basic operations-routine '<=>'

41 610/710 basie-tokens hard soft ass/reass.... seite 0012 zeile adr. obj.-eode souree-eode a e 50.byte ~npu $d d H 49.byte 'di. $ed a ed 0486 BIOb e e4 ".byte rea $e f 4e 45.byte 'le, $d Bill d H H 54.byte got, $ef ef byte ru $ee ee byte. i. $e lla e llb byte restor, $e e 54 H e H H 53.byte gosu $e e byte retur See 0493 BIZa Bl2e ee d byte re $ed f ed H.byte sto $d do H.byte 0 See ee byte " wa~ $d d a 4e H.byte 'loa, $e d e4 " e byte sav', $e e5 " byte verif', $d d H 45.byte 'de, $e h e b 50 H 4b.byte pok', $e He e H byte print, $a e a byte pr~n $d e d a 43 H 4e.byte eon $d d d e 4e byte 'lis, $d d c.byte el ', $d d d.byte cm', $e e4

42 610/710 basie-tokens hard soft ass/reass.... seite 0013 zeile adr. obj.-eode souree-eode byte sy.' Sd a d b H byte ope', See e ee f 0 4e H.byte "elos SeS es H H 45.byte ge,' Sd d e H.byte ne', Sd d a 54 H.byte 'tab', $ab d ab " e 54. byte. t. $ef f ef byte 'f.' See I ee byte spe', $ab ab byte the ', See ee a h H.byte no ', $d BI Be d d byte ste ', $d do ab.byte $ab ad.byte $ad aa.byte $aa af.byte $af de.byte $de h.byte an $e e4 " H.byte 0 ' $d a d b be.byte $be c bd.byte $bd d be.byte $bc e 53 H.byte sg,' See 0531 BlaO ce a e.byte ~n $d a3 d a4 42.byte 'ab', $d a6 d3 " 0534 Bla byte us $d a9 d aa byte 'fr, Ses ac es 0536 Blad 50 H.byte po Sd af d b byte sq.' $d b2 d b3 52 h.byte rn', $d b5 c b6 4c H.byte 'lo, SeT b8 e b byte ex', $d bb do 0541 Blbe 0 H.byte CO $d3

43 610/710 basic-tokens hard+soft ass/reass..... seite 0014 zeile adr. obj.-code source-code 0541 Blbe d Blbf byte s~ $ce 0542 Blei ce 05H Blc byte "ta, $ce 05H Blc4 ce 05H Blc byte at, $ce 0544 Blc7 ce 0545 BlcB 50 H 45.byte pee $cb 0545 Blcb cb 0546 Blcc 4c H.byte "le, $ce 0546 Blce ce 0547 Blcf byte str $a Bld2 a Bld byte va $cc 054B Bld5 cc 0549 Bld byte as $c BldB c Bld9 43 4B 52.byte ehr $a Bldc a Bldd 4c byte "left, $a BleO Blei a Ble H. byte right, $a Ble Ble7 a BleB 4d 49 H.byte "mid", $a Bleb a4 0!154 Blec H.byte g"' $cf 0554 Bled cf 0555 Blee H H 4e.byte conca $d Blfl Blf3 d4 " 0556 BIH H H 50.byte "dope, $ce 0556 Blf BlfB ce 0557 Blf9 H 43 4c.byte "dclas, $c Blfc H Blfe es 055B Blff 52 H H.byte recor $c4 055B B202 H B B204 c B B20B H H ".byte heade, $d B20a d B20b H H 4c.byte collec $d B20e 4c B2" d B byte "backu, $d0 056 I B215 4b " B217 do 0562 B21B 43 H 50.byte COp $d B21b d B21c 4 I byte appen $c B21f 45 4e c B222 H B ".byte dsav, $c B226 c5

44 610/710 basic-tokens hard+soft ass/reass.... seite 0015 zeile adr. obj.-code source-code H 4c 4f.byte 'dloa, $c a b c4 " c byte 'catalo $c f " " 4c 4f c e.byte 'renam', $c " 4d c byte scratc $c c f c8 " H byte 'director $d f d H 43 4c.byte 'dclea, $d c e d2 " f 42 4e.byte 'ban, $cb cb " c 4f.byte 'bloa, $c c4 " ".byte 'bsav, $c b c c d 4b 45.byte 'ke, $d !if d H 45 4c.byte delet, $c c c 53.byte els $c c a d do ". byte tra, $d e byte resum, $c d c H byte dispos, $c f a c b H.byte pude $c e f c byte us~n $c e c byte err $a a e 53.byte inst ', $d2, $ c d d e f f f ===> ind. Sprungtabelle basic-/system fehlermeldungen <=== f

45 610/710 basic-tokens hard+soft ass/reass.... seite 0016 zeile adr. obj.-code source-code text: s top key detected text: "too many files" text: "file open tex t: f ile not open text: "file not found" text: "device not present text: "not input file" text: "not output file" Bf b 829d e7 82 f9 82 OB BJ 12 BJ 20 8J 2f BJ ebase.word amso.word amsl.word ams2.ward ams3.word ams4.ward ams5.word ams6.ward ams f 82a I 82aJ 82a5 B2a 7 61 BJ 7J BJ 89 8J 99 BJ de 84.word ams8.word ams9.word amsjo.word amsji.word reddy text: m~ss~ng text: ready a9 82ab 82ad 82af 82bl 82bJ 82b5 82b1 82b9 82bb 82bd 82bf 82cl 82cJ 82c5 B2c7 82c9 82cb 82cd B2cf 82dl 82dJ 82d5 82d7 82d9 B2db d9 84 e7 84 ee 84 fd Oe 85 BI bb a5 8J b6 BJ cj 83 db 83 e4 BJ f5 BJ fe 83 Oe e 84 Je 84 4d 84 Sc 84 6a 84 7a ab 84 bb 84.ward aintxt.word abrkt>c.word aexi.word atry.ward buf.word aremsg.word signon.word aernf.word aersn.word aerrg.word aerod.word aerfc.word aerov. word aerom.word aerus.word aerbs.word aerdd.word aerdvo.word aerid.word aertm.word aerls.word aerbd.word aerst.word aercn.word aeruf.word aerld text: in dd c9 84.word aervr 0628 B2df word aeros 0629 B2el 2d 85.word aercr 0630 B2eJ Je 85.word aerdi e word aerot 06J2 B2e B2e e1 ===> text: 'stop key detected" <=== 0635 B2e 7 06J6 82e f amso.byte 'stop key detected', $ J B2ea 82ed 82f0 82f3 B2f6 82f8 82( b H HH54 H " 00 06J8 82f f9 ===> text: "too many files' <=== file name" text: "illegal device number" text: are you sure?" text: bad disk text: break text: extra ignored' text: redo from start' basic input-puffer l-$2ffl text: more text: '*** cbm basic 128,v4.0 ***' text: next wi thout for text: 'syntax error text: 'return wi thout gosub' text: 'out of data' text: illegal quanti ty text: overf low text: 'out of memory' text: 'undefined statement' text: bad subscript text: 'red im' 'd array' text: 'division by zero' text: "illegal direct' text: type mismatch text: 'string too lang' text: 'file data' text: 'formula too comple>c' text: 'cannot continue' text: "undefined function' text: '?load error' text: "?verify error' text: out of stack' text: 'unable to resume' text: 'unable to dispose' text: out of text

46 610/710 basic-tokens hard+soft ass/reass.... seite 0017 zeile adr. obj.-code source-code f f9 54 H H amsl.byte too many files $ fc 20 4d ff 4e c ===> text: file open <=== c ams2.byte "file open $ b H e e ===> text: "file not open <=== c ams3.byte "file not open $ e H b H e 4e f ===> text: file not found' <=== c ams4.byte file not found, $ e H H c 4e H e f f f ===> text: 'device not present' <=== Zf f H ams5.byte 'device not present', $ e H b e 45 4e ===> text: not input file <=== e H 54 ams6.byte not input file $ e b e 4c

47 610/710 basic-tokens hard+soft ass/reass..... seite 0018 zeile adr. obj.-code source-code ===> text: "not output file <=== e H 54 ams7.byte not output file, $ H a d 49 4c ===> text: 'missing file name <=== d ams8.byte missing file name $ e H a 49 4c u d 20 4e " d u ===> text: "illegal device number <=== c 4c ams9.byte "illegal device number $00 " C 20 H c f e 55 4d ===> text: are you sure?" <=== Od ams30.byte $0d a byte are you sure? 0 $ d 20 " 59 H Jf ===> text: "bad disk <=== Od ams31.byte $0d a 42 H.byte "bad disk $0d, $ d 20 H 49 " Ja0 53 4b a3 Od 0693 B3a a a B3a5 ===> text: next without for <=== a a5 4e aernf.byte "next without for $ aB

48 610/710 basic-tokens hard+soft ass/reass seite 0019 zeile adr. obj.-code source-code ab ae H bl H b b b b6 oro r 83b6 ===> text: syntax error <=== b b e aersn.byte syntax error $ b9 H bc bf 52 H c c c c3 ===> text: 'return without gosub' <=== c c aerrg.byte return without gosub, $ c e c cc H cf d2 H H d d d d d8 ===> text: out of data <=== d d8 H aerod. byte out of data $ db 20 H de 20 H " e r e e e e e4 ===> text: 'illegal quantity <=== e4 49 4c 4c aerfc.byte 'illegal quantity $ e7 45 H 4 r ea 4c ed e f f ( f f5 012 r 83f5 ===> text: overflow <=== f f5 H aerov.byte overflow', $ f c fb H fd fe fe fe fe ===> text: out of memory <===

49 610/710 basic-tokens hard+soft ass/reass.... seite 0020 zeile adr. obj.-code source-code fe H aerom.byte out of memory, $ H d d H a HOb c c c ===> text: 'undefined statement' <=== c c 55 4e H aerus.byte undefined statement', $ B40f " "2 4e " "b 4d 45 4e "e "f ===> text: 'bad subscript' <=== " " aerbs.byte bad subscript, $ c d e e e ===> text: red im d array <=== e e d 27 " " 20 " aerdd.byte 'redim' 'd array $ a b c c c ===> text: 'division by zero' <=== 07H 843c c aerdvo.byte 'division by zero $ f " H 4e H a Hb H Hc Hd d d ===> text: 'illegal direct <=== d 0753 BHd 49 4c 4c aerid.byte 'illegal direct, $00 " UO H H c

50 610/710 basic-tokens hard+soft ass/reass.... seite 0021 zeile adr. obj.-code source-code b c c C ===> text: 'type mismatch' <=== c 0758 BHc aertm.byte type misma tch, $ f d d U BUa 0760 BUa a ===> text: string too long <=== a a aerls.byte string too long $ d 49 4e H H 20 4c H 4e a a a ===> text: 'file data' <=== a a c aerbd.byte 'file data, $ d H ===> text: 'formula too complex <=== u H 52 aerst.byte 'formula too complex $ d 55 4c a d H H H 4d c ===> text: cannot continue <=== e aercn.byte cannot continue $ b 4e H e H Ha I 4e a4 4e a a h a8 ===> text: undefined function <=== a a8 55 4e H aeruf.byte undefined function $ ab Hae 4e 45 H

51 610/710 basic-tokens hard+soft ass/reass.... seite 0022 zeile adr. obj.-code source-code bt 20 " b4 4e B4b7 49 H 4e 0783 B4ba B4bb B4bb bb ===> text: "?load error" <=== 0787 B4bb bb Od aerld.byte $0d 0189 B4bc 3f 4c H.byte "?load error $0d, $ B4bf 41 H B4c B4c5 H c7 Od 0789 B4c B4c c c9 ===> text: '?verify error <=== c B4c9 Od aervr.byte $0d ca 3f byte '?verify error $0d, $ cd B4d d H 0795 B4d B4d1 Od dB B4d B4d B4d9 ===> text: in <=== 0799 B4d B4d e aintxt.byte in $ B4dc B4dd de 0802 B4de 0803 B4de ===> text: 'ready. <=== 0/104 B4de 0805 B4de Od reddy.byte $0d 0806 B4df byte ready. $Od, $ Ze e5 Od e e e7 ===> text: break <=== e7 Od abrktx.byte $0d e byte break, $ B4eb 4 1 4b 0812 B4ed ee OB 14 84ee ee ee ===> text: 'extra ignored" <=== ee H aexi.byte extra ignored, $0d, $ BH H e

52 610/710 basic-tolcens hard+soft ass/reass.... seite 0023 zeile adr. obj.-code source-code H7 H 52 H Ha H Hb Od 0817 BHc BHd 0819 BHd 0820 BHd ===> text: redo from start" <=== 0821 BHd fd 52 H H atry.byte redo from start, $0d, $ H f 4d c Od " d B50e e e ===> text: more <=== e e 4d H 52 aremsg.byte more $0d, $ Od ===> text: out of staclc' <=== " H aeros.byte out of staclc', $ H a d 43 4b " ===> text: out of text' <=== H aerot.byte out of text ', $ H c d d d ===> text: 'unable to resume <=== d d 55,. " aercr.byte unable to resume $ c H d c d e 08H 853e e ===> text: 'unable to dispose <=== 0846 B53e e 55,. " aerdi.byte unable to dispose', $ c 45

53 610/710 basic-tokens hard+soft ass/reass seite 002' zeile adr. obj.-code source-code ' H H a H d 53 H H end lib contrl

54 610/710 basie-eontrl hard+soft ass/reass.... seite 0025 zeile adr. obj.-eode souree-eode ===> ausgabe '?out of memory error, ready <=== OB B559 OB64 855b e OB B e F OB 74 B B a2 34 omerr ldx 1$34 6e error jmp (ierror} ===> error-routine <=== B6 BF eo 36 FO d FO 32 ae eb FO 2e le Be 9d 02 ae lb ao FF Be a2 01 nerror stx errnum epx 1$36 beq errigd jsr tstdir beq errigd ldy trapno+l iny beq errigd dey sty linnum+l sty tmptrp ldy trapno sty linnum ldy I$FF sty trapno+l ldx 1$0 I OB B ===> Fehlerzeilen I abspeiehern <=== 0880 B578 OBBI 8578 b5 42 sots lda eurlin,x 0882 B57a 9d 9B 02 sta errlin,x 0883 B57d b5 46 lda oldtxt,x 0884 B57f 9d 9a 02 sta errtxt,x OBB B9 OB B58B 85B9 858e 85Bf ca 10 F3 ae 9e 02 9a 20 Be ba 20 ao Be 4e 80 B 7 dex bpl sots ldx oldstk txs jsr mapusr jsr luk4i t jmp nstt9 OB92 B B ===> Fehlermeldung ausgeben <=== B b 0901 B59d a a3 090, 85a aB ab a5 Ia fo cc ff a Ia 20 e8 Be b5 a6 Bf 20 cj aj Ba errigd lda channl beq error2 jsr kclrch lda 1$00 sta ehannl error2 jsr ocrlf jsr outqst ldx errnum jsr msg jsr stkini addrl Fehler routine ab ab ===> im prg-mode zeilenl-ausgabe, ready <=== Fehlernummer für 'trap' Fehlermeldung ausgeben test direktmodus, hi-byt zeile=$ff Fehlermeldung ausgeben addrh zeiger error trap fehlermeldung ausgeben hi-byte akt. zeilennummer hi-byte Zeilennummer 'trap, resume addrl zeiger error trap lo-byte akt. zeilennummer addrh zeiger error trap lo-byte akt. Zeilennummer lo-byte zeilennummer akt. fehler addrl zeiger letzter basie-befehl addrl basic-text zeiger bei fehlerbehandlung fahlerzeilen I abspeichern stack zeiger vor 'trap ausführung umsch. auf bank I I zeilen I > akt. suchen/abarb. speieherstelle für aktiven kanal ein-/ausgabekanal schließen speieherstelle für aktiven kanal ausgabe er (+lf} auf akt. kanal ausgabe '?' Fehlernummer für 'trap textzeiget xr, textaussabe reset stack- u. basicbefehl-zeiger

55 610/710 basic-contrl hard+soft ass/reass.... seite 0026 zeile adr. obj.-code source-code 0909 Uab ab ae b b b b Ub bb bd c c C c c c c c ca cd cd 20 Be ba a4 43 co fa bo Oe a2 Ia 20 c3 a3 a5 43 a b4 13 errfin jsr mapusr ldy curlin+l cpy 1$fa bcs ready ldx 1$1a jsr msg lda curlin+l ldx curlin jsr linprt ===> ausgabe ready ready-status <=== a c3 a3 a9 BO ff 6c ready main ldx 1$18 jsr msg lda 1$80 jsr kstmsg jmp limainl cd ===> hauptroutine basic-interpreter <=== 0931 B5cd cd 85cf 85dl B5d4 B5d7 B5d9 Udc B5de B5e0 B5e2 85e5 B5e6 85e8 B5ea 85ed a2 ff B6 43 Be 9B 02 Be Bf 20 e ba aa fo e bf ba nmain ldx l$ff stx curlin+ I stx errlin stx errlin+ 1 stx errnum jsr inlin sta txtptr sty txtptr+l stx txtptr+2 jsr chrget tax beq main bcc main I jsr crunch jsr chrgot f0 B5f3 4C jmp xeqdir f f3 ===> programmzeilen löschenleinfügen <=== 095 I 85f f3 20 4e Bd mainl jsr linget I f6 85f9 85fb 85fe B a 20 bf Oe 20 I f H ao 01 bl 6d a5 2f a5 6e jsr crunch sty count jsr fndlin bcc nodel ldy 1$01 lda (lowtrl,y sta indexl+l lda txtend sta indexl lda lowtr+l umsch. auf bank I I hi-byte akt. Zeilennummer ausgabe ready ready-status textzeiger + xr. textausgabe hi-byte akt. Zeilennummer lo-byte akt. Zeilennummer umw. hex/dez, lo=xr, hi=ac, druck zeilen I textzeiger + xr, textausgabe meldung des operating-syst. ausgeben addrl basic-warteschleife hi-byte akt. zeilennummer lo-byte Zeilennummer akt. Fehler hi-byte zeilennummer akt. Fehler Fehlernummer für "trap eingabe einer zeile addrl zeiger auf akt. term addrh zeiger auf akt. term bank zeiger auf akt. term nächstes zeichen nach ac lind.jmpl hauptroutine basic-interpreter programmzeilen löschenleinfügen ind.jmp umw. text in basic-tokens letztes zeichen erneut nach ac (indirekter sprungl test gültiges befehlszeichen. weiter zeilennummer lesen, in adressformat umwandeln ind.jmp umw. text in basic-tokens allgemeiner zähler startadr. von prg.zeile berechnen test: programmzeile einfügen addrl ursprunganfang (verschieben}/ temp. facl2 addrh indirekter index II addrl zeiger ende basic-text addrl indirekter index II addrh ursprunganfang (verschieben} temp. facl2

56 610/710 basic-contrl hard+soft ass/reass.... seite 0027 zeile adr. obj.-code source-code c e f bl 6d 86 II e5 6d ff f f b d a f 69 ff e5 6e aa a5 6d e5 2f 862b ab 862c bo e eb 862f c c sta index2+1 dey lda llowtr},y clc sbc lowtr eor #$ff clc adc txtend sta txtend sta index2 lda txtend+1 adc #$ff sta txtend+7 sbc lowtr+ 7 tax sec lda lowtr sbc txtend tay bcs qdect7 inx dec index2 7 qdect7 clc adc index7 bcc mloop dec index7 1 clc ===> verschiebeschleife <=== I b b d cb 863e do f e e H ca 8645 do f mloop lda lindex7j,y sta lindex2j,y iny bne mloop inc index1>1 inc index2 7 dex bne mloop ===> test: programmzeile einfügen <=== d H Ba 20 a4 86 ao 00 b 1 85 do 03 4c ca 85 nodel jsr clearc jsr lnkprg ldy #$00 lda ltxtptr},y bne nadele jmp main ===> programmzeile einfügen <=== nadele clc addrh indirekter index #2 addrl ursprunganfang (verschieben}/ temp. fac#2 addrl ursprunganfang lverschiebenl/ temp. fac#2 addrl zeiger ende basic-text addrl zeiger ende basic-text addrl indirekter index #2 addrh zeiger ende basic-text addrh zeiger ende basic-text addrh ursprunganfang (verschieben} temp. fac#2 addrl ursprunganfang (verschieben}/ temp. fac#2 addrl zeiger ende basic-text addrh indirekter index #2 addrl indirekter index #1 verschiebeschleife addrh indirekter index 11 addrl indirekter index #1 addrl indirekter index #2 verschiebeschleife addrh indirekter index #1 addrh indirekter index 12 verschiebeschleife basic-routine 'clr' Linkadressen berechnen addrl zeiger auf akt. term programmzeile einfügen hauptroutine basic-interpreter

57 670/710 basic-contrl hard+soft ass/reass.... seite 0028 zeile adr. obj.-code source-code ' ' loh ' ! b 865d 865f a 866c 866e a 867b 86 7d 867f Bb 86Bd 86Bf a5 2f a Oe c c ao oo a9 0 I 91 6d c8 91 6d c8 a5 lb 9' 6d a5 lc cb 91 6d cb d 85 6d e6 6e a4 Oe 88 b' d c6 Oe do f b b lda txtend ldy txtend+l sta hightr sty hightr l adc count bcc nodel I iny nodell clc adc 1$04 bcc nadele iny nadele sta highds sty highds+l jsr bltut ldy 1$00 lda 1$0 I sta {lowtr),y iny sta {lowtrl,y iny lda linnum sta llowtrl,y lda linnum+l iny sta llowtrl,y iny tya clc adc lowtr sta lowtr bcc main2 inc lowtr+l main2 ldy count dey stolop lda {txtptrl,y sta llowtrl,y dey dec count bne stolop b ===> linkadr. berechnen, ready <=== ' b 869b 869e 86al 20 a Ba 4c ca 85 fini jsr lnkprg jsr runc jmp main addrl zeiger ende addrh zeiger ende addrl ursprungende temp.facll addrh ursprungende temp.facll allgemeiner zähler basic-text basic-text I verschieben)/ {verschieben)/ addrl zielende lverschiebenll temp. facll addrh zielende {verschieben/ temp. facll blockverschiebe-rout. für programm addrl ursprunganfang lverschiebenll temp. facl2 addrl ursprunganfang lverschiebenll temp.facl2 lo-byte akt. zeilennummer addrl ursprunganfang lverschiebenll temp.facl2 hi-byte akt. zeilennummer addrl ursprunganfang lverschiebenll temp. facl2 addrl ursprunganfang lverschiebenll temp. facl2 addrl ursprunganfang lverschiebenll temp.facl2 addrh ursprunganfang {verschieben) temp.facl2 allgemeiner zähler addrl zeiger auf akt. term addrl ursprunganfang lverschiebenll temp.facl2 allgemeiner zähler Linkadressen berechnen basic-zeiger ini ti tial., clr hauptroutine basic-interpreter

58 610/710 basic-contrl hard+soft ass/reass... seite 0029 zeile adr. obj.-code source-code I a4 86a4 86a4 86a4 86a4 86a6 86a8 86aa 86ac 86ad 86af 86bl ===> Linkadressen berechnen <=== a5 2d a4 2e ao oo bl 22 do 05 c8 I b b4 bl b6 fo lc b8 ao ba 86bb c8 bl bd do fb bf c cO cl c3 aa c4 ao c6 9 I c c cb c cc 9 I ce d d2 90 d d d5 a d7 a d db dd c de 85 2f e e e e5 II 10 86e e9 II 12 86eb II 13 86ed ef II 15 86fl II 16 86f3 II 17 II 18 II lnkprg lda txttab ldy txttab+l sta indexl sty indexl l clc chead ldy 1$00 lda lindexll,y bne chea3 iny lda I index I I, y beq lnkrts chea3 ldy 1$04 czloop iny lda lindexll,y bne czloop iny tya adc indexl tax ldy 1$00 sta lindexl I,y tya adc indexl+l iny sta lindexl I,y stx indexl sta indexl+l bcc chead lnkrts clc lda indexl ldy indexl+l adc 1$02 bcc lmkrtl iny lmkrtl sta txtend sty txtend+l rts 86e2 86e3 86e3 86e3 ===> eingabe einer zeile <=== 86f6 86f8 86fa a5 88 a4 89 a ao oo 84 Oe 20 ee bb c9 Od fo Oe a4 Oe inlin lda buffpt ldy buffpt+ I ldx #$01 sta indexl sty indexl+l stx indexl+2 ldy #$00 inlinc sty count jsr basin cmp #$0d beq fiminl ldy count addrl zeiger anfang basic-text addrh zeiger anfang basic-text addrl indirekter index II addrh indirekter index II addrl indirekter index II addrl indirekter index II addrl indirekter index II addrl indirekter index II addrl indirekter index II addrh indirekter index II addrl indirekter index II addrl indirekter index II addrh indirekter index II addrl indirekter index II addrh indirekter index II addrl zeiger ende addrh zeiger ende basic-text basic-text addrl zeiger auf eingabe-puffer addrh ze~ger auf eingabe-puffer addrl indirekter index II addrh indirekter index #I bank indirekter index II allgemeiner zähler eingabe I char vom akt. kanal Iehn-vektor) 00 in puffer, ausgabe cr+llfl allgemeiner zähler

59 610/710 basic-contrl hard+soft ass/reass.... seite 0030 zeile adr. obj.-code source-code 1120 B6fc sta lindexl I, y addrl indirekter index II 1121 B6fe cb iny 1122 B6ff co a I cpy l$a I 1123 B ee bcc inlinc 1124 B703 4c B5 b7 jmp errlen ausgabe?string too long ready 1125 B B B706 ===> 00 in puffer, ausgabe cn(lfl <=== 112B B B706., Oe fiminl ldy count allgemeiner zähl er 1130 B10B a9 00 lda 1$ B70a sta lindexll,y addrl indirekter index 1132 B70c a5 Ia lda channl speieherstelle für aktiven " kanal 1133 B70e do 03 bne fimin I 113' B cb Be jsr ocrlf ausgabe er (df} auf akt. kanal 1135 B113 a4 23 fimin I ldy indexl+l addrh indirekter index 1136 B7 15 a6 22 ldx indexl addrl indirekter index " II 1137 B711 do 01 bne fimin2 113B B119 BB dey 1139 B71a ca fimin2 dex 1"0 B71b Ba txa IIH B71c a2 01 ldx 1$01 1"2 B7 le 60 rts 1143 B71f IIH B71f 1145 B71f ===> startadr. von prg.zeile berechnen <=== IH6 B11f IIH B71f a5 2d fndlin lda txttab addrl zeiger anfang basic-text IIU B12 I a6 2e ldx txttab+l addrh zeiger anfang basic-text IIU B B B B123 ===> startadr. der zeile in lowtr <=== 1153 B123 B5 6d fndlnc sta lowtr addrl ursprunganfang (verschieben}/ temp. facl B725 B6 6e stx lowtr+l addrh ursprunganfang (verschieben! temp. facl B 12 7 ao 00 ldy 1$ B129 bl 6d lda (lowtrl,y addrl ursprunganfang (verschieben}/ temp. facl B12b do 05 bne fndln3 115B B12d cb iny 1159 B72e bl 6d lda llowtrl,y addrl ursprunganfang (verschieben}/ temp. facl B130 fo Oa beq flnrt 116 I B732 ao 03 fndln3 ldy 1$ , bl 6d lda (lowtrl,y addrl ursprunganfang I verschieben!/ temp. facl c5 lc cmp linnum+l hi-byte akt. Zeilennummer fo 04 beq fndl a 90 Ob bcc affrts c 18 flnrt clc d 60 flnrts rts e e e 88 fndl20 dey f bl 6d lda llowtrl,y addrl ursprunganfang (verschieben}/ temp.facl2

60 610/710 basic-contrl hard+soft ass/reass.... seite 0031 zeile adr. obj. -code source-code b 874c 814d c5 lb fo f8 bo f5 ao 01 bl 6d aa 88 bl 6d cmp linnum beq flnrts bcs flnrt a ffrts ldy 1$0 1 lda llowtr),y tax dey lda llowtr),y Hf 90 d2 bcc fndlnc c B8 02 xeqcm jmp ligone) ===> dispatcher-routine <=== ba ngone jsr chrget a 875a 875a ===> test gültiges befehlszeichen, weiter <=== lo-byte akt. Zeilennummer addrl ursprunganfang (verschieben)/ temp. facl2 addrl ursprunganfang (verschieben)/ temp. facl2 startadr. der zeile in 'lowtr' addrl dispateher nächstes zeichen nach ac lind.jmp) 20 a8 87 xeqdir jsr xeqcm3 basic-befehl ltoken in ac) ausführen ===> neues statement, stoptest <=== a a 20 el ff newstt jsr kstop test stop-taste d do lc bne nsttl f 38 sec c af 8b jmp stopc a c f f bl B5 do OB cb b 1 85 do 03 4c co f ao bl B a b b b 8 77e c8 bl d fo Oe a5 85 a4 86 B ba B9 Be 9c 02 sav42 nstt3 lda I txtptr), y bne nstt4 iny lda { txtptr J, y bne nstt4 jmp ready ns t t4 ldy 1$03 lda { txtptr). y sta curlin iny lda {txtptr),y sta curlin+l rts nsttl nstt9 jsr tstdir beq nstt2 lda txtptr ldy txtptr+l sta oldtxt sty o1dtxt+1 tsx stx oldstk ansprung bei gedr. stop-taste, test 'trap 'break addrl zeiger auf akt. term addrl zeiger auf akt. term ausgabe ready ready-status addrl zeiger auf akt. term lo-byte akt. Zeilennummer addrl zeiger auf akt. term hi-byte akt. zeilennummer test direktmodus, hi-byt zeile=sff addrl zeiger auf akt. term addrh zeiger auf akt. term addrl zeiger letzter basic-befehl addrh zeiger letzter basic-befehl stack ze~ger vor 'trap ausführung

61 610/710 basic-contrl hard soft ass/reass.... seite 0032 zeile adr. obj.-code source-code Bc ao 00 nstt2 ldy 1$ e bl 85 lda ltxtptrj,y addrl zeiger auf akt. term do 3f bne morsts d jsr tstdir test direktmodus, hi-byt zeile=$ff fo d5 beq nsttj ao 01 ldy 1$ jsr sav BT9c 98 tya d 18 clc 1236 B79e adc txtptr addrl zeiger auf akt. term a sta txtptr addrl zeiger auf akt. term Ta2 90 ad bcc xeqcm TH e6 86 inc txtptr l addrh zeiger auf akt. term a6 do a9 bne xeqcm 1241 BTaB 1242 BTaB a8 ===> basic-befehl ltoken in acj ausführen <=== 12H B7a a8 fo 6a xeqcm3 beq ffrts Taa c9 ff xeqcm2 cmp l$ff ac fo za beq snerrl ausgabe '?syntax error ready ae 38 sec af e9 80 sbc 1$ Tb I 90 lb bcc glet sprung zur basicrout. 'let' Tb5 90 bcc nstt b3 c9 23 oa cmp 1$23 adr. der basic-routine auf stapel, ausführen TbT c9 4b cmp 1$4b Tb9 90 ld bcc snerrl ausgabe '?syntax error ready bb c9 67 cmp 1$ bd bo 19 bcs snerrl ausgabe '?syntax error ready lbf e9 27 sbc 1$ c I c I 1260 Blc I ===> adr. der basic-routine auf stapel, ausführen <=== 126 I 8 Tc I c I Oa nstt6 asl a lc2 ab tay c3 b lda stmdsp+ I, y adress-tabelle der basic-befehle lc6 48 pha c7 b lda stmdsp,y adress-tabelle der basic-befehle lca 48 pha cb 4c 26 ba jmp chrget nächstes zeichen nach ac find.jmp} 1269 Blce Tee 1271 BTce 4c Ba 8d glet jmp let sprung zur basicrout. 'Let' d I d I d I c9 3a morsts cmp #$3a d3 do 03 bne snerrl ausgabe '?syntax error ready d c jmp xeqcm ld d d8 4c 4f 97 snerr1 jmp snerr ausgabe '?syntax er rar. ready 1Z80 8 7db 128 I 87db 1282 Bldb ===> Stapel-suchroutine for-nextlgoto <=== db

62 610/710 basic-contrl hard+soft ass/reass.... seite 0033 zeile adr. obj.-code source-code db ba fndfor tsx dc eb inx dd eb inx de eb inx df eb inx e e eO ===> nächstes stapel-byte <=== e eO bd 01 0 I ffloop lda stack+ 1. x 6509 cpu-stack e3 c9 81 cmp 1$ e5 do 2d bne ffrts Te 7 a5 56 lda lstpnt+2 bank zeiger letzter string e9 10 Of bpl cmpfor mit "for-next"-zeiger vergleichen eb bd lda stack+2.x 6509 cpu-stack ee sta lstpnt addrl zeiger letzter string f0 bd lda stack+3.x 6509 cpu-stack f sta lstpnt+l addrh zeiger letzter string f5 bd 04 0 I lda stack+4.x 6509 cpu-stack f sta lstpnt+2 bank zeiger letzter string fa fa fa ===> mit "for-next"-zeiger vergleichen <=== fa fa dd cmpfor cmp stack+4,x 6509 cpu-stack fd do Oe bne addfrs Stapelzeiger um 19 erhöhen ff a5 55 lda lstpnt+l addrh zeiger letzter string dd 03 0 I cmp stack+3,x 6509 cpu-stack do 07 bne addfrs Stapelzeiger um 19 erhöhen a5 54 lda lstpnt addrl zeiger letzter string 13" 8808 dd cmp stack+2,x 6509 cpu-stack b fo 07 beq ffrts d d d ===> stapelzeiger um 19 erhöhen <=== d d Ba addfrs txa e 18 clc f adc 1$ aa tax do cc bne ffloop nächstes stapel-byte " 60 ffrts rts ===> blockverschiebe-rout. für programm <=== bo 88 bltut jsr reasnt test speicherplatz für programm f sta txtend addrl zeiger ende basic-text a sty txtend+l addrh zeiger ende basic-text c 90 Oa bcc bltu blockverschiebe-rout. akt. bank e e e variable <=== ===> blockverschiebe-rout. für e e bltuv jsr reason test speicherplatz für variable sta s trend addrl ende benutzter ram-bereich Ja sty strend+l addrh ende benutzter ram-bereich ba jsr mapvar umsch. auf bank I 2

63 610/710 basic-contrl hard+soft ass/reass... seite 003~ zeile adr. obj.-code source-code ===> blockverschiebe-rout. akt. bank <=== ~ a ~8 BB2b e5 6d d B82f ab a e5 6e aa eb I fo a b c e e bo c H a e b bo OB d c f bltu bltl sec lda hightr sbc lowtr sta indexl tay lda hightr+l sbc lowtr+l tax inx tya beq decblt lda hightr sec sbc indexl sta hightr bcs blt I dec hightr+l sec lda highds sbc indexl sta highds bcs morenl dec highds+l bcc morenl ===> verschiebeschleife <=== bl do f bl a c c e c ca do f2 bltlp lda lhightrl.y sta I highds I. y morenl dey bne bl tlp lda lhightr),y sta (highdsl,y decblt dec hightr+l dec highds+l dex bne morenl addrl ursprungende (verschieben)/ temp. fact! addrl ursprunganfang (verschieben)/ temp.fact2 addrl indirekter index 11 addrh ursprungende (verschieben)/ temp. fact! addrh ursprunganfang (verschieben) temp. fact2 addrl ursprungende (verschieben)/ temp.factl addrl indirekter index #I addrl ursprungende (verschieben}/ temp. fac#l addrh ursprungende (verschieben)/ temp. fac#l addrl zielende lverschiebenl/ temp. fac# I addrl indirekter index #I addrl zielende!verschieben)/ temp. fac#l addrh zielende!verschieben/ temp. fac#l addrl ursprungende!verschieben!/ temp. fac#l addrl zielende (verschieben}/ temp. fac#l verschiebeschleife addrl ursprungende (verschieben!/ temp.fac#l addrl zielende (verschieben)/ temp. fac#l addrh ursprungende (verschieben)/ temp. fac#l addrh zielende!verschieben/ temp. fac#l

64 610/710 basic-contrl hard+soft ass/reass.... seite 0035 zeile adr. obj.-code source-code b 886d 886e c Be ba jmp mapusr umsch. auf bank I I ===> test stapelplatz <=== Oa bo ba e4 22 bo 3d a c getstk asl a adc t$34 bcs oserr sta indexl tsx cpx indexl bcs rearts ===> ausgabe '?out of stack error ready <=== b d "10 887f " b Be a a BBa oserr ldx #$50 jmp error ===> test speicherplatz für variable <=== c4 Je do 04 c5 Jb 90 2e 48 az b5 63 ca 10 fa 20 b5 ad a2 f d e8 30 fa 68 ab c4 Je 889b BB9d do 04 B89f c5 Jb BBa I 90 Oe 88a3 4c a9 88ab 20 Zc reason cpy fretop+l bcc rearts bne trymor cmp fretop bcc rearts trymor pha ldx #$09 tya reasav pha!da jmper+2,x dex bpl reasav jsr garba2 ldx #$f1 reasto pla sta lowtr,x inx bmi reasto pla tay pla cpy fretop+l bcc rearts bne omerrc cmp fretop bcc rearts omerrc jmp omerr sa v 73 sav74 jsr ptrget sta lstpnt sty lstpnt+l ausgabe '?out of stack error addrl indirekter index tl addrl indirekter index #I ind. jmp zur Fehlerroutine addrh top of string free space addrl top of string free space addrh sprung zu functions-rout. garbage collect lmüll entfernen) ready addrl ursprunganfang (verschieben)/ temp. facll2 addrh top of string free space ausgabe '?out of memory error ready addrl top of string free space ausgabe '?out of memory error ready variable suchen/anlegen, deren name folgt addrl zeiger letzter string addrh zeiger letzter string

65 610/110 basic-contrl hard+soft ass/reass.... seite 0036 zeile adr. obj.-code source-code ad Baf b b b0 IH3 88b b0 c4 89 IH5 88b2 90 fb IH6 88b4 do Bb6 c5 88 IH8 88b8 90 f ba a bc 4c Bbf bf bf 6c cZ 1455 BBcZ stx lstpnt 2 rearts rts ===> test speicherplatz für programm <=== reasnt cpy buffpt+l bcc rearts bne omerrt cmp buffpt bcc rearts omerrt ldx 1$56 jmp error crunch jmp (icrnch} c2 ===> umwandlung text in basic-tokens <=== c c c c c c8 a a zo 29 ba 1'63 B8cb 'c dl 88 14H 88ce ce 1466 BBce ba dl 90 fb Bd3 c9 oo 1469 IHO IHJ Bd5 8Bd1 8Bd9 8Bdb BBdd 8Bdf 88el 88e3 88e5 8Be7 8Be9 8Beb 8Bed BBef BBfl BBH fo 59 c9 Ja fo f3 c9 Jf do OB a9 99 ao fo e7 c Ob c9 ff fo df ao f 89 fo dz Bf f Bf Bf Bf6 c Bf8 do Od 1491 BBfa ba Fd c ff fo Zf 149' 8901 c9 22 ncnnch lda txtptr pha lda txtptr l pha crun05 jsr chrgot jmp crunzo crunio jsr chrget crun20 bcc crunio cmp 1$00 beq crun90 cmp l$3a beq crunio cmp l$3f bne crun30 lda 1$99 ldy 1$00 sta ltxtptr},y beq crunio crun30 cmp 1$80 bcc crun40 cmp l$ff beq crunio ldy 1$01 jsr kloop beq crun05 ===> tokenroutine, test - <=== crun40 cmp 1$22 bne crun60 crun50 jsr chrget cmp 1$00 beq crun90 cmp 1$22 bank zeiger letzter string addrh Zeiger auf eingabe-puffer addrl zeiger auf eingabe-puffer ind. jmp zur fehlerroutine addrl token-umwandlungsroutine addrl zeiger auf akt. term addrh zeiger auf akt. term letztes zeichen erneut nach ac!indirekter sprung} nichstes zeichen nach ac (ind.jmpl token-umwandlung ende addrl zeiger auf akt. term tokenroutine, test - nächstes zeichen nach ac lind.jmpj token-umwandlung ende

66 610/710 basic-contrl hard+soft ass/reass.... seite 0037 zeile adr. obj.-code source-code B B B903 B905 B907 B90a B90c B90e B910 B B917 B919 B91b 891d B91f 8921 B B92a 1513 B92a fo c9 do f B9 90 c2 co 00 fo f 89 a5 Oe ao B5 c9 Bf fo Od c9 B3 do ad ba 20 df Be 4c cb BB beq crunio bne crun50 crun60 jsr reser bcc crunio cpy #$00 beq crun70 jsr kloop crun70 lda count ldy #$00 sta ltxtptrj,y cmp #$Bf beq crunbo cmp #$B3 bne crunio jsr chrget jsr data jmp crun B92a ba crunbo jsr chrget 1515 B92d Be jsr rem 1516 B B B B930 ===> token-umwandlung ende <=== 1519 B B B B B B936 a6 B5 6B B5 B6 6B B5 B B93B 3B 1526 B939 Ba 1527 B93a e5 B B93c ab 1529 B93d c B93e B93f f f B B B B B B B B94b d 1542 B94d 65 B a ao 00 crun90 ldx txtptr pla sta txtptr+l pla sta txtptr sec txa sbc txtptr tay kloop ~ny rts clc tya adc txtptr sta indexl lda txtptr+l adc #$00 sta indexl+l ldy #$ B94d ===> zeiger "indexl nach "txtptr" <=== 15H 894d d H 1547 B B B957 b I cb c9 00 do f7 60 kloop2 lda lindexll.y sta ltxtptri.y iny cmp #$00 bne kloop2 rts akt text mit befehlsworttabelle vergleichen allgemeiner zähler addrl zeiger auf akt. term nächstes zeichen nach ac lind.jmp/ basic-routine "data" nächstes zeichen nach ac lind.jmpl basic-routine rem addrl zeiger auf akt. term addrh zeiger auf akt. term addrl zeiger auf akt. term addrl zeiger auf akt. term addrl zeiger auf akt. term addrl indirekter index #I addrh zeiger auf akt. term addrh indirekter index #I addrl indirekter index #I addrl zeiger auf akt. term zeiger "indexl nach "txtptr"

67 610/710 basic-contrl hard+soft ass/reass.... seite 0038 zeile adr. obj.-code source-code ===> akt text mit befehlsworttabelle vergleichen <=== a9 80 reser lda S ao ef ldy l$ef b sta index!+! addrh indirekter index.i d sty indexl addrl indirekter index f ao 00 ldy soo " Oe sty count allgemeiner zähler 156 I dey cb reseio iny bl 85 rese20 lda ltxtptrl,y addrl zeiger auf akt. term sec ft 22 sbc lindex!j,y addrl indirekter index a fo f8 beq reseio c c9 80 cmp S8o e fo 18 beq rese ba rese30 jsr ldily lade lindex!j,y in ac! bmi rese es iny do f8 bne rese c8 rese40 iny e6 Oe inc count allgemeiner zähler b 18 clc c 98 tya d ab jsr sav clc ao 00 ldy Soo ba jsr ldi!y lade I index I I, y in ac 158 I 8986 do dd bne rese Oe rese60 count ora allgemeiner zähler a 85 Oe sta count allgemeiner zähler c 60 rts d d.end d.lib bverbs I

68 610/710 basic-bverbsl hard+soft ass/reass.... seite 0039 zeile adr. obj.-code source-code d d ===> basic-routine 'list' <=== d d 20 f4 af list 8990 do jsr range bne 1stend rts ===> pla,pla, test auf basic-textende <=== stend pla pla ===> test basic-textende erreicht <=== ao 01 list4 ldy ISO I bl 6d sty dores lda (lowtrl,y b 899d 899e 89a0 89a2 89a2 do b I 6d fo 4c bne listh dey lda I lowtr I, y beq grody a2 ===> stop-taste abfragenlausführen <=== a a2 89a4 89a7 89a9 89aa ao e I ff do c af 8b listh ldy 1$01 jsr kstop bne list5 clc jmp stopc ad ad ad ===> ausführung 'list' <=== ad ad 20 c8 Be list5 jsr ocrlf b0 c8 iny bl b I 6d lda llowtrl,y b3 89b4 89b5 aa c8 b! 6d tax iny lda I lowtr I, y zeilenbereich einlesen, test gültig pla,pla, test auf basic-textende flag für token o. ascii/garbage-flag addrl ursprunganfang (verschieben}/ temp. facl2 stop-taste abfragenlausführen addrl ursprunganfang (verschieben}/ temp. facl2 sprung nach ready test stop-taste ausführung 'list' ansprung bei gedr. stop-taste, test 'trap' 'break' ausgabe er (+lfl auf akt. kanal addrl ursprunganfang (verschieben}/ temp. facl2 addrl ursprunganfang (verschieben}/ temp.facl b7 89b9 c5 lc do 04 cmp linnum+l bne tstdun hi-byte akt. Zeilennummer carry= 1 ready, sonst test ob letzte prg.zeile llistl bb 89bd e4 lb fo 02 cpx linnum beq typlin lo-byte akt. Zeilennummer test ob letzte prg.zeile llistl bf bf bf ===> carry=1 ready, sonst test ob letzte prg.zeile (listl <=== bf bf bo 2d c I tstdun bcs grody sprung nach ready

69 610/110 basic-bverbsl hard soft ass/reass.... seite 0040 zeile adr. obj.-code source-code H 16U 16U I6H 16U cl 89cl 89cl B9cl B9c3 B9c6 89c8 89ca 89cc 89cc 89cc 89cc 89cc 89cf 89d1 89d3 B9d5 89d d d9 166 I 89d d d da dc de 89e0 89el 89e3 89e4 89e5 89e1 89e9 ===> test ob letzte prg.zeile llistl <=== typlin sty lstpnt jsr linprt prit4 lda 1$20 ldy lstpnt and l$1f ===> ausgabe I zeichen von ac, test <=== 20 3a b5 ploop C9 22 do ff jsr ochr cmp 1$22 bne ploopl lda dores eor 1$ff sta dores ===> test ob zeilenende erreicht <=== c8 fo 12 bl 6d do II ab bl 6d aa c8 bl 6d 86 6d 85 6e ploopl iny beq grody lda llowtrl,y bne qplop tay lda (lowtrl,y tax iny lda llowtrl,y stx lowtr sta lowtr eb 4c jmp lish ee ee ee 4c co 85 grady jmp ready fl t'l fl 6c qplop jmp (iqplopl f f f f f4 10 d6 nqglop bpl ploop f6 c9 ff cmp 1$ff f8 fo d2 beq ploop fa bit dares fc 30 ce bmi ploop fe aa tax ff 8454 sty lstpnt 1692 BaOI ao 80 ldy 1$80 ===> umwandlung basic-tokens in text <=== addrl zeiger letzter string umw. hex/dez, lo=xr, hi=ac, druck zeilen I addrl zeiger letzter string ausgabe 1 zeichen lin acl test ob zeilenende erreicht flag für token o. ascii/garbage-flag flag für token o. ascii/garbage-flag sprung nach 'ready addrl ursprunganfang lverschiebenl/ t-p.facl2 umwandlung basic-tokens in text addrl ursprunganfang (verschieben]/ temp. f'acl2 addrl ursprunganfang (verschieben]/ temp. flcl2 addrl ursprunganfang lverschiebenll temp.facl2 addrh ursprunganfang (verschieben/ temp. facl2 test basic-textende erreicht sprung nach 'ready' addrl taken ausgabe expander rout. ausgabe zeichen von ac. test ausgabe zeichen von ac, test flag für token o. ascii/garbage-flag ausgabe 1 zeichen von ac, test addrl zeiger letzter string

70 61D/71D basic-bverbsl hard+soft ass/reass.... seite DD41 zeile adr. obj.-code source-code 1693 BaDJ B BaD5 ad ef 1695 BaD7 B BaD9 ad DD 1697 BaDb Da 169B BaDe fd II 1699 BaDe I 7DD BaDe sty indexl+l ldy l$ef sty indexl ldy I$DD asl a beq prit3b 17DI BaDe ===> text zu token aus "res1st suchen <=== 17D2 BaDe I 7D3 17D4 I 7D5 17D B I 709 I 710 Ba Oe BaOf Ba II Ba 13 Bal5 Ba I 7 Bala Balc ca 10 Od e6 22 do 02 e ba 10 f5 30 fo resrch dex bpl prit3 rescrl inc indexl bne restr2 inc indexl+l restr2 jsr ldily bpl rescrl bmi resrch addrh indirekter index II addrl indirekter index II textausgabe zu token aus reslst" addrl indirekter index II addrh indirekter index II lade tindexll,y in ac text zu token aus res1st' suchen 1711 Bale 1712 Bale 1713 Bale ===> textausgabe zu token aus reslst" <=== 1714 Bale ale cb prit3 iny I 716 Balf ba prit3b jsr ldily lade {indexll,y in ac I 7 IB ausgabe I zeichen {in acl a27 do f5 bne prit3 textausgabe zu token aus reslst" I 7 I 7 Ba22 Ba24 3D a4 2D Ja b5 bmi prit4 jsr ochr 1720 Ba Ba Ba29 ===> basic-routine 'new' <=== 1723 Ba29 scrath scrtch Ba29 8a2b do 64 a9 oo bne stkrts lda 1$ Ba2d ab tay Ba2e 91 2d sta ltxttabl,y addrl zeiger anfang basic-text B BaJO Ba31 cb 91 2d iny sta {txttab},y addrl zeiger anfang basic-text 1730 Ba33 18 clc I 731 Ba34 a5 2d lda txttab addrl zeiger anfang basic-text 1732 Ba adc 1$ Ba f sta txtend addrl zeiger ende basic-text 1734 Ba Ja a5 2e lda txttab+ 1 addrh zeiger anfang basic-text 1735 Ba Je adc 1$ Ba Je sta txtend+ 1 addrh zeiger ende basic-text a40!73B 8a Ba Ba Ba Ba Ba a a a a45 17U BaH a BaH ===> basic-zeiger inititial., 20 bb b4 runc a9 00 jsr stxtpt lda 1$00 clr <=== ===> basic-routine clr zero=o rts <=== do 48 clear bne stkrts ===> basic-routine 'clr' <=== programmzeiger auf start

71 610/710 basic-bverbsl hard+soft ass/reass seite OOH zeile adr. obj. -code source-code 1751 BaH 17!2 8aH bb clearc jsr settop I 7!JJ 8ah a9 ff lda l$ff a4c Bd sta trapno+ I addrh zeiger error trap aH a2 03 ldx 1$ a51 bd 90 Ba clrpu lda pudefs,x printusing zeichen a54 9d sta pufill,x print using: füllzeichen aH ca dex 1159 Ba f7 bpl clrpu I 760 8a5a a9 Of lda l$0f I 76 I 8a5c Bd sta dfbank vorgabe für bank-nummer 1762 Ba5f a9 00 lda 1$ a s ta dsdesc länge disc-status string I 764 8a bc jsr clall alle logischen files schliessen I 765 8a66 a5 31 lda vartab addrl zeiger anfang einfache variable I 766 8a68 a4 32 ldy vartab+ I addrh zeiger anfang einfache variable I 767 8a6a sta strend addrl ende benutzter ram-bereich a6c 84 Ja sty strend+l addrh ende benutzter ram-bereich I 169 8a6e sta arytab addrl zeiger anfang array-tabelle 1170 Ba sty arytab l addrh zeiger anfang array-tabelle I 771 8a a a72 ===> reset read"-,stack-,befehl-zeiger <=== 1774 Ba T a Bb fload jsr resto I read -zeiger auf basicanfang I 7T6 Ba T a ===> reset stack- u. basicbefehl-zeiger <=== f1t9 Ba T Ba 15 a2 00 stkini ldx #$00 I 78 I Ba ld stx temmpt zeiger auf zeitw. stringdescriptor (rel. offset J 1182 Ba T9 68 pla I 783 8a7a ab tay 1784 Ba Tb 68 pla a7c a2 fe ldx #$fe 1186 Ba Te 9a txs f18t 8a7f H pha 1188 BaBO 98 tya I 789 8a81 H pha 1190 Ba82 a9 00 lda 1$ a sta oldtxt addrl zeiger letzter basic-befehl a86 85 H sta oldtxt+l addrh zeiger letzter basic-befehl a88 85 Ia sta channl speieherstelle für aktiven kanal 1194 Ba Ba Bd sta dolu vorgabe für ausgabe-adresse 1795 BaBd 85 sta subflg flag für indizierte variable a8f 60 stkrts rts " a a a90 ===> printusing Zeichen <=== a Ba c 2e pudefs.byte.. $ a a Ba a94 ===> basic-routine 'for' <===

72 610/710 basic-bverbsl hard+soft ass/reass.... seite 0043 zeile adr. obj.-code source-code IB05 IB06 I BOT I BOB IB09 IB 10 IBII IBI2 Ba94 Ba94 Ba96 Ba9B Ba9b Ba9e BaaO Baal a9 BO B Ba Bd 20 db B1 do 05 Ba for IB 13 Baa3 aa IB 14 Baa4 9a IBI5 Baa5 6B notol pla IB 16 Baa6 6B IBI1 Baa7 a9 09 IBIB Baa BB IBI9 Baac 20 ed Be IB20 Baaf IB IB21 BabO 9B 1822 IB IB IB27 IB28 IB29 IB30 IB Babl Bab3 Bab4 Bab6 Bab8 Bab9 8abb Babc 8abe Babf 8acl a5 B a5 43 4B a5 42 4B a9 a lda ti$bo sta subflg jsr let jsr fndfor bne notol txa adc tl$10 tax txs pla lda 1$09 jsr getstk jsr datan clc tya adc txtptr pha lda txtptr+l adc 11$00 pha lda cur lin +I pha lda curlin pha lda #$a4 jsr synchr IB IB IB IB42 IB43 IBH ac4 Bac7 Baca 8acc 8ace 8ad0 Bad2 Bad4 Bad6 BadB Ba da Badd Badd b b5 a f B5 12 a9 dd ao Ba B c 6d 96 jsr chknum jsr frmnum lda facsgn ora ll$7f and facho sta facho lda l$dd ldy #$Ba sta indexl sty indexl+l jmp forpsh IB46 Badd ===> step mit I vorbesetzen <=== IB41 IB IB50 IB IB IB58 Badd Badd Badf Bael 8ae4 Bae1 Bae9 a9 9c ao 9f a I ba c9 a9 do 06 ldfone lda ll$9c ldy l$9f jsr movfm jsr chrgot cmp l$a9 bne oneon flag fur indizierte variable basic-routine 'let' stapel-suchroutine for-next/goto test stapelplatz trennzeichen ':, zeilenende o suchen, offset yr addrl Zeiger auf akt. term addrh zeigerauf akt. term hi-byte akt. Zeilennummer lo-byte akt. Zeilennummer test:folgt asc~i o. token im akt. text, sonst error prüfen, ob numerische variable numerischen ausdruck holen fac II: Vorzeichen fac II: mantisse fac 111: mantisse addrl indirekter index II addrh indirekter index #I vari adr.lo=ac, hi=yr nach fac #I letztes zeichen erneut nach ac (indirekter sprungl vorzeichen, string-zeiger, 'for'-token auf stapel nächstes zeichen nach ac (ind.jmpl numerischen ausdruck holen Baeb Baee ba b5 jsr chrget jsr frmnum Bafl Bafl 8afl ===> vorzeichen, string-zeiger, 'for'-token auf stapel <===

73 610/710 basic-bverbsl hard+soft ass/reass.... seite OOH zeile adr. obj.-code source-code 1859 Bafl 1860 Bafl az oneon jsr sign Vorzeichentest fac ttl 186 I 8aH 20 5e 96 jsr pushf af7 a5 56 lda lstpnt+z bank zeiger letzter string af9 48 pha 1864 Bafa a5 55 lda lstpnt+l addrh zeiger letzter string 1865 Bafc 48 pha afd a5 54 lda lstpnt addrl zeiger letzter string aff 48 pha 1868 BbOO a9 81 lda tt$ BbOZ 48 pha b03 4c 5a 87 jmp newstt neues statement, stoptest b b b06 ===> basic-routine next' <=== b b06 do 04 next bne getfor basic-routine 'next' mit variable b08 az ff ldx #$ff b0a bmi stxfor basic-routine 'next' mit wert 1878 BbOc b0c 1880 BbOc ===> basic-routine next' mit variable <=== 188 I 8b0C b0c zo Zc 99 getfor jsr ptrget variable suchen/anlegen, deren name folgt b0f 1884 BbOf b0f ===> basic-routine next' mit wert <=== 1886 BbOf b0f 20 a9 88 stxfor jsr savh bl2 20 db 87 jsr fndfor stapel-suchroutine for-next/goto bl5 fo 05 beq havfor 1890 Bb 17 az 28 ldx tt$ bl9 4c jmp error ind. jmp zur fehlerroutine 1892 Bblc blc blc 9a havfor txs bld Ba txa 1896 Bble 18 clc blf adc tt$ b21 48 pha b adc tt$ b sta indexz addrl indirekter index # b26 68 pla b21 ao 0 I ldy #$ b a 1 jsr movfm vari adr.lo=ac, hi=yr nach fac #I b2c ba tsx b2d bd oa 01 lda stack+io,x 6509 cpu-stack b sta facsgn fac #1: vorzeichen b32 a5 54 lda lstpnt addrl zeiger letzter string b34 a4 55 ldy lstpnt+l addrh zeiger letzter string b36 a6 56 ldx lstpnt+2 bank zeiger letzter string b e ao jsr ucnupk 19" 8b3b 20 4d 9e jsr faddt basic-routine + (dez. add. J 19 IZ Bb3e zo 9f a I jsr movvf gk-zahl aus fac in variable b41 ao 01 ldy #$01 19" 8b a2 jsr fcompn b46 ba tsx

74 basic-bverbsl hard soft asslreass... seite 0045 zeile adr. obj.-code source-code BbH 8MB 8Mb Bb6c 1938 Bb6e 1939 Bb Bb Bb b Bb79 38 fd Oa 01 fo 17 c9 2c do fl ba 20 Oe Bb 4c 0 I b5 sec sbc stack.,o,x beq loopdn cmp l$2c bne newsgo jsr chrget jsr getfor jmp frmnum 1944 Bb79 ===> basic-routine restore <=== b b79 fo lc restor beq restot 1947 Bblb 20 e5 b4 jsr getpin Bble 8b80 8b82 8b85 Bb88 8b8a 8b8c 8b8e 8b90 84 lb 85 tc 20 Be ba 20 I f lb a5 6d e9 o I 85 4b a5 6e sty linnum sta linnum l jsr mapusr ]Sr fndlin bcc reserr lda lowtr sbc 1$01 sta datptr lda lowtr l sbc 1$00 sta datptr+ I rts 6509 cpu-stack daten vom stack, folgt nächstes for-next 6509 cpu-stack lo-byte akt. Zeilennummer 6509 cpu-stack hi-byte akt. Zeilennummer 6509 cpu-stack addrl zeiger auf akt. term 6509 cpu-stack addrh zeiger auf akt. term neues statement, stoptest b4d 8b50 Bb52 8b55 8b57 Bb5a Bb5c 8b5f Bb61 bd 10 0 I 85 H bd I I bd 13 0 I bd c 5a 8 7 lda stack 16,x sta curlin lda stack l7,x sta curlin l lda stack 19,x sta txtptr lda stack IB,x sta txtptr l newsgo jmp newstt b ===> daten vom stack, folgt bearb. nächstes for-next <=== Bb64 Ba loopdn txa 1933 Bb adc 1$ Bb67 aa tax b68 9a txs 1936 Bb ba jsr chrgot letztes zeichen erneut nach ac (indirekter sprung} Bb92 8b94 e c 1959 Bb b b9l b b9l b9l Bb98 a5 2d 1966 Bb9a e9 o I 1967 Bb9c 85 4b b9e a5 2e ===> 'read'-zeiger auf basicanfang <=== restot sec lda txttab sbc 11$01 sta datptr lda txttab l bearb. nächstes zeichen nach ac (ind.jmpl basic-routine 'next' mit variable numerischen ausdruck holen 'read'-zeiger auf basicanfang dezimal-zahl in klammer nach linnum einlesen lo-byte akt. zeilennummer h~-byte akt. Zeilennummer umsch. auf bank # I startadr. von prg.zeile berechnen addrl ursprunganfang (verschieben}/ temp. facl2 addrl zeigerauf data nach 'read' addrh ursprunganfang (verschieben} temp.facl2 addrh zeiger auf data nach 'read' addrl zeiger anfang basic-text addrl zeiger auf data nach 'read' addrh zeiger anfang basic-text

75 610/710 basic-bverbsl hard+soft ass/reass... seit& 0046 zeile adr. obj.-code source-code ba0 e9 00 sbc 11$ ba2 85 4c stl datptr+l ba4 60 runmfo rts ba ba ba5 4c cd Be reserr jmp userr ba8 8ba8 8bd 8ba8 ===> basic-routine 'stop' <=== ba8 bo 01 stop bcs stpz llbaa baa baa ===> basic-routine end' <=== 1983 llbu baa 8bab 8bad 18 do 59 fo 14 end stpz2 clc bne contx beq stopd b1f blf 1919 llbaf baf baf 08 stopc php 1992 llbbo ac ldy trapno+ I bb3 c8 iny bb4 fo Oa beq sa addrh zeigerauf data nach 'read' ausgabe '?undefined statement error' ready ===> ansprung bei gedr. stop-taste, test 'trap' 'break' <=== addrh zeiger error trap ausführuns 'break' bb bb llbb6 ===> bei 'trap warten auf stop, error-routine <=== 1998 llbb bb6 20 e I ff unstop jsr kstop 2000 llbb9 fo fb beq unstop zozo bbb 8bbd 8bc0 8bc0 8bc0 llbco 8bc0 Bbcl 8bc2 8bc3 llbc4 8bc7 8bc9 II beb 8bcd Bbcf Bbdf Bbd3 llbd5 Bbd7 8bd9 llbd9 8bd9 a2 IC 4c ldx l$1c jmp error ===> ausführuns 'break' <=== d (0 10 a5 85 a a5 42 a u sa stopd plp pha pha php jsr tstdir beq nsxx4 lda txtptr ldy txtptr+f sta oldtxt sty oldtxt+! lda curlin ldy curlin+! sta oldlin sty oldlin+! test stop-taste bei 'trap' warten auf stop, error-routine ind. jmp zur Fehlerroutine test direktmodus, hi-byt zeile=$ff plp, pla, pla, carry =0 ready, sonst ausgabe 'break' addrl zeiger auf akt. term addrh zeiger auf akt. term addrl zeiger letzter basic-befehl addrh zeiger letzter basic-befehl lo-byte akt. Zeilennummer hi-byte akt. zeilennummer lo-byte vorige zeilennummer (stopl hi-byte vorige zeilennummer lstop} ===> plp, pla, pla, carry =0 ready, sonst ausgabe 'break' <===

76 610/710 basic-bverbsl hard+soft ass/reass.... seite 0047 zeile adr. obj.-code source-code bf bf BbfB 2049 Bbfa 2050 Bbfc 2051 Bbfe 2052 BcOO c c04 8bd9 8bd9 28 8bda 68 8bdb 68 8bdc bde az lc 8be0 20 c3 a3 8be3 4c ab 85 8be6 nsxx4 plp pla pla bcc nsxx6 ldx l$1c jsr msg jmp errfin be be6 4c co 85 nsxx6 jmp ready be be be be be9 do lb cont bne contx beb a4 H ldy oldtxt+l 204 I 8bed do 09 bne contz bef a5 46 lda oldtxt 2043 Bbfl do 07 bne contz4 ZOH 8bf3 a2 48 ldx 1$ bf5 4c 52 B5 jmp error ===> basic-routine 'cont' <=== a5 46 B5 85 B4 B6 a5 H a4 45 B5 42 B c Bc Bc07 205B Bc c07 contz3 lda oldtxt contz4 sta txtptr sty txtptr+1 lda oldlin ldy oldlin+ 1 sta curlin sty curlin+l contx rts ===> basic-routine 'run' <=== 2060 Bc Be run c0a ba 2062 BcOd do BcOf 4c 40 Ba 2064 BeiZ cl Bc cl2 206B BeiZ Ba run Bc15 fo Bc c17 jsr runmod jsr chrgot bne run2 jmp runc ===> 'run mit zeilennummer <=== jsr clearc beq runc Bc17 ===> test direkt/run-modus, run eintr. <=== 2073 Be I 7 ZOH B 2079 Bc17 Bc!a Bc1c Bc1e BcZO Bc d do 8B a9 fe B5 0 a9 00 4c 90 ff runmod jsr tstdir bne runm1d lda #$fe sta curlin+1 lda #$00 jmp kstmsg ZOBO Bc25 sprung nach 'ready' textzeiger + xr. textausgabe im prg-mode zeilenl-ausgabe, ready sprung nach 'ready' addrh zeiger letzter basic-befehl addrl zeiger letzter basic-befehl ind. jmp zur fehlerroutine addrl zeiger letzter basic-befehl addrl zeiger auf akt. term addrh zeiger auf akt. term lo-byte vorige zeilennummer (stop} hi-byte vorige zeilennummer (stop} lo-byte akt. zeilennummer hi-byte akt. zeilennummer test direkt/run-modus, run eintr. letztes zeichen erneut nach ac (indirekter sprung} 'run mit Zeilennummer basic-zeiger inititial.. 'clr' basic-routine 'clr' test direktmodus. hi-byt zeile=$ff hi-byte akt. zeilennummer meldungdes operating-syst. ausgeben

77 610/710 basic-bverbsl hard+soft ass/reass.... seite 004B zeile adr. obj.-code source-code 20B I Bc25 20B2 Bc25 ===> basic-routine "gosub" <=== 20B3 Bc25 20B B6 20B7 20BB 20B Bc25 Bc27 Bc2a Bc2c Bc2d Bc2f Bc30 BcJZ Bc33 Bc35 Bc36 Bc3B Bc39 a BB a5 B6 48 a5 B5 48 a5 43 4B a5 42 4B a9 Bd ba gosub runc2 lda So3 jsr getstk lda txtptr+l pha lda txtptr pha lda curlin+ I pha lda curlin pha lda SBd pha jsr chrgot B Bc3c Bc3f 20 B4 Be 4c 5a 87 jsr goto jmp newstt 2099 Bc Bc Bc42 ===> basic-routine "if" <=== 2102 Bc Bc42 20 Cl 95 if jsr frmevl 2104 Bc45 24 II bit valtyp 2105 Bc c Bc4c e9 ab ba 210B Bc4f c Bc51 fo Bc53 a9 a Bc if50 bpl if50 jsr frefac jsr chrgot cmp SB9 beq okgoto lda Sa 7 jsr synchr test stapelplatz addrh zeiger auf akt. term addrl zeiger auf akt. term hi-byte akt. zeilennummer lo-byte akt. Zeilennummer letztes zeichen erneut nach ac (indirekter sprung} basic-routine "goto" neues statement, stoptest auswertung beliebiger ausdruck flag für variablen typ (O=num, l=stringl stringverwaltung, freier string letztes zeichen erneut nach ac (indirekter sprungl "goto" folgt auf erfülltes "if" test:folgt ascii o. token im akt. text, sonst error 2112 Bc5B 2113 Bc5B 2114 Bc5B ===> "goto" folgt auf erfülltes "if" <=== 2115 Bc5B 2116 Bc5B a5 71 okgoto lda facexp fac 1: exponent 2117 Bc5a do 13 bne docond 2 IIB Bc5c 2119 Bc5c 2120 Bc5c ===> testauf "else" nach "if" <=== 212 I Bc5c 2122 Bc5c 20 df Be lkelse jsr data 2123 Bc5f ao oo ldy soo 2124 Bc61 b I B5 lda ltxtptrl,y 2125 Bc63 fo 12 beq rem 2126 Bc ba jsr chrget 2127 Bc6B c9 e I cmp Se I 212B Bc6a do fo bne lkelse 2129 Bc6c ba jsr chrget 2130 Bc6f ba docond jsr chrgot 2131 Bc c74 4c ab B Bc77 bcc goto jmp xeqcm3 basic-routine "data" addrl zeigerauf akt. term basic-routine "rem nächstes zeichen nach ac lind.jmpl testauf "else" nach "if" nächstes zeichen nach ac lind.jmpl letztes zeichen erneut nach ac (indirekter sprung} basic-routine "goto" basic-befehl ltoken in acl ausführen

78 610/TIO basic-bverbsl hard+soft ass/re1ss.... seite 0049 zeile adr. obj.-eode souree-eode 2134 BeTT 2135 BeTT ===> basie-routine 'rem <=== 2136 BeTT 213T BeTT 20 fo Be rem jsr remn 2138 BeTa fo 66 beq addon 2139 BeTe 2140 BeTe 2141 BeTe ===> basic-routine go to <=== 2HZ 2143 BeTe BeTe ba 2144 Bclf a9 a BeB! ZO Be BcB4 go jsr ehrgot lda t$a4 jsr synchr c84 ===> basic-routine goto <=== 2149 BeB Be e Bd goto jsr linget 2151 BeBT 20 fo Be gotoo jsr remn Be Ba BcBb BcBd BcBf 8c91 8c93 8c95 Bc96 8e97 8c99 38 a5 42 e5 lb a5 43 e5 le bo Ob a6 86 sec lda eurlin sbc linnum lda curlin+l sbc linnum+l bes luk4it tya sec ade txtptr ldx txtptr+l e9b bee lukall 2163 Be9d es inx c9e bo 04 bes lukall 2165 Bcao 2166 Beau Beao ===> zeilen I > akt. suchen/abarb. <=== Bcao 2169 Bcao a5 2d 21TO 8ca2 a6 2e ca ea4 luk4it lda txttab ldx txttab+ I 21T3 8ca4 ===> zeilen I < akt. suchen/abarb. <=== ca4 21T5 8ea lukall jsr fndlnc ca bec userr ZIT1 8ca9 a5 6d cab Bcad Bcaf eb cb cb cb eb8 e a5 6e e9 oo c 11 Be lda lowtr sbc 1$01 sta txtptr lda lowtr+l sbe 1$00 sta txtptr+l jmp runmod basie-zeilenende suchen, offset yr textzeiger + yr letztes zeiehen erneut nach ac (indirekter sprungl test:folgt ascii o. token im akt. text, sonst error zeilennummer lesen, in adressformat umwandeln basie-zeilenende suchen, offset yr lo-byte akt. zeilennummer lo-byte akt. zeilennummer hi-byte akt. Zeilennummer hi-byte akt. zeilennummer zeilen > akt. suchen/abarb. addrl zeiger auf akt. term addrh zeiger auf akt. term zeilen I < akt. suchenlabarb. zeilen I < akt. suchen/abarb. addrl zeiger anfang addrh zeiger anfang basie-text basic-text startadr. der zeile in "lowtr' ausgabe '?undefined statement error ready addrl ursprunganfang lverschiebenl/ temp.facl2 addrl zeiger auf akt. term addrh ursprunganfang (verschieben/ temp. facl2 addrh zeiger auf akt. term test direkt/run-modus, run eintr.

79 610/710 basic-bverbs1 hard+soft ass/reass.... seite 0050 zeile adr. obj.-code source-code 2186 BebB :zz> basic-routine return' <=== 2187 BebB ScbB Beba Bebe Bebe do 32 a a9 ff return bne addrts lda B$10 sta lstpnt+2 lda l$ff 2192 sceo sta lstpnt Bec2 20 db s 7 jsr fndfor Bec5 Bee6 BeeB 91 c9 Bd fo OB txs cmp B$Bd beq retul " " Beea Becc Sced Beed Secd Bccd Sced Secf Scd2 Bed2 Scd2 Bed2 Bed2 Bcd3 Bcd4 Bcd6 Scd7 Scd9 Be da Scdc a2 2c 2c ldx B$2e.byte $2c bank zeiger letzter string addrh zeiger letzter string stapel-suchroutine for-next/goto zeilen- u. programm-zeiger vom stapel, weiter 'data' ===> ausgabe '?undefined statement error ready <=== a2 36 userr ldx 8$36 4e 52 B5 jmp error ind. jmp zur fehlerroutine ===> zeilen- u. programm-zeiger vom stapel, weiter 'data <=== S S5 S5 6B 2217 Bcdd Bcdf 2219 Bcdf retu1 pla pla sta curlin pla sta curlin+l pla sta txtptr pla sta txtptr+l 2220 Bcdf ===> basic-routine 'data <=== 2221 Bcdf 2222 Scdf 20 ed Be data jsr datan ce Sce Sce2 9S 222S 8ce ce Sce SeeS cea 2233 Scec ced 2235 Sced Z ce2 Bce2 ===> textzeiger + yr <=== Sced Bced Bced Scef BcfO ScfO 65 B5 S5 B e6 B6 60 addon tya clc adc txtptr sta txtptr bcc addrts inc txtptr+l addrts rts lo-byte akt. Zeilennummer hi-byte akt. Zeilennummer addrl zeiger auf akt. term addrh zeiger auf akt. term trennzeichen : zeilenende o suchen, offset yr addrl zeiger auf akt. term addrl zeigerauf akt. term addrh zeiger auf akt. term ===> trennzeichen : zeilenende o suchen, offset yr <=== az Ja 2c datan ldx l$3a. byte $2c

80 610/710 basic-bverbsl hard+soft ass/reass..... seite 0051 zeile adr. obj.-code source-code H H 2241 BcfO BcfO BcfO 8cf2 BcH Bcf6 ===> basic-zeilenende suchen, offset yr <=== a Oe ao oo 84 Od 2248 BcfB a5 Od Bcfa 8cfc Bcfe BdOO 8d02 8d04 8d d BdOa d0c d0d d0f 2261 Bdtf dl d d dl dl6 a6 Oe 85 Oe 86 Od a b I 85 fo Ob c5 Od fo 07 c8 c9 22 do ef fo e5 4c Be ba remn ldx #$00 stx charac ldy #$00 sty endehr exchqt lda endehr ldx charac sta charac stx endehr remer lda txtptr+2 sta i6509 lda I txtptr I, y beq remtxt cmp endehr beq remtxt iny cmp #$22 bne remer beq exchqt remtxt jmp mapusr ===> basic-routine "trap" <=== d a 9d trap d ba d1c fo d1e 20 e5 b4 221 I 8d d d25 22H 8d d2a d2b d2b Be c a9 ff Bd trap 1 jsr errdir jsr chrgot beq trap1 jsr getpin sty trapno.byte $2c lda l$ff sta trapno+1 rts 2278 Bd2b ===> basic-routine "on - goto" <=== d2b d2b 20 d6 b4 ongoto jsr getbyt d2e pha d2f c9 8d cmp #$8d d31 fo 07 beq onglop d33 c9 89 cmp #$ Bd35 fo 03 beq onglop d37 4c 4f 97 snerr3 jmp snerr d3a d3a d3a d3c d3e d3f d d d42 8d45 c6 75 do c aa ba 20 4e 8d onglop dec faclo bne onglp1 pla jmp xeqcm2 onglp1 jsr chrget jsr linget puffer für trennzeichen puffer für trennzeichen puffer für trennzeichen puffer für trennzeichen puffer für trennzeichen puffer für trennzeichen bank zeiger auf akt. term 6509 indirection register addrl zeiger auf akt. term puffer für trennzeichen umsch. auf bank # 1 test direkt, ausgabe "?illegal direct error", ready letztes zeichen erneut nach ac (indirekter sprungl dezimal-zahl in klammer nach linnum einlesen addrl zeiger error trap addrh zeiger error trap zahl < 256 aus akt. text nach xr ausgabe "?syntax error", ready fac #1: mantisse nachstes Zeichen nach ac (ind.jmp} zeilennummer lesen, in adressformat umwandeln

81 610/710 basic-bverbsl hard soft ass/reass.... seite 0052 zeile adr. obj.-code source-code d48 c9 2c d4a fo ee d4c d4d dU d4e cmp lt$2c beq onglop pla ongrts rts d4e ===> zeilennummer lesen, in adressformat umwandeln <=== dU d4e 8d50 8d52 8d54 8d56 8d58 8d5a 8d5c 8d5e 8d60 8d62 8d64 8d65 8d6 7 8d68 8d6a 8d6C 8d6e 8d70 8d72 8d74 8d76 8d78 8d7a 8d7c 8d7e 8d80 8d82 8d85 a lb 86 lc bo f7 e9 2f 85 Oe a5 lc c9 19 bo d5 a5 lb Oa Oa lb 85 lb a lc 85 lc 06 lb 26 lc a5 lb 65 Oe 85 lb e6 lc ba 4c 54 8d linget ldx lt$00 stx linnum stx linnum+l morlin bcs ongrts sbc lt$2f sta charac lda linnum I sta indexl cmp lt$19 bcs snerr3 lda linnum asl a rol indexl asl a rol indexl adc linnum sta linnum lda indexl adc linnum l sta linnum+l asl linnum rol linnum l lda linnum adc charac sta linnum bcc nxtlgc inc linnum l nxtlgc jsr chrget jmp morlin lo-byte akt. Zeilennummer hi-byte akt. zeilennummer puffer für trennzeichen hi-byte akt. Zeilennummer addrl indirekter index ltl lo-byte akt. Zeilennummer addrl indirekter index ltl addrl indirekter index ltl lo-byte akt. Zeilennummer lo-byte akt. Zeilennummer addrl indirekter index II hi-byte akt. zeilennummer hi-byte akt. Zeilennummer lo-byte akt. Zeilennummer hi-byte akt. Zeilennummer lo-byte akt. Zeilennummer puffer für trennzeichen lo-byte akt. zeilennummer d d d88 do ad d8a d8a 23H ressnr bne snerr d8a ===> basic-routine 'let' <=== d8a 8d8a 20 a6 88 let jsr sav73 8d8d a9 b2 lda l$b2 8d8f jsr synchr 8d92 8d94 8d95 a a5 II d d98 20 cl Bd9b d9c 2a d9d b da0 do le lda intflg pha lda valtyp pha jsr frmevl pla rol a jsr chkval bne copstr hi-byte akt. zeilennummer nächstes zeichen nach ac lind.jmpl test:folgt ascii o. token im akt. text, sonst error flag für integer-variable flag für variablen typ (O=num, l=stringl auswertung beliebiger ausdruck prüft ob richtiger variablentyp

82 610/710 basie-bverbsl hard+soft ass/reass.... seite 0053 zeile adr. obj.-eode souree-eode 2353 Bda Bda Bda BdaB 2357 Bdab 235B Bdad 2359 Bdaf dbl 2361 Bdb Bdb db db Bdba 2366 Bdbd 2367 Bdbd 236B 8dbd 2369 BdeO Bde Bde4 237B BO 23BI 6B 10 IB 20 f2 a I b a5 56 B5 01 ao oo a eb a e Be ba 4e 9f a I pla qintgr bpl eopflt jsr round jsr ayint lda lstpnt+2 sta i6509 ldy #$00 lda faemo sta I lstpnt I, y iny lda faelo sta llstpntl,y jmp mapusr eopflt jmp movvf BdeO BdeO Bdel 6B 4e 73 a9 eopstr pla jmp inpeom Bde4 Bde4 8de4 ===> basie-routine 'resume' <=== Bde7 Bdea Bdeb Bded 20 h 9d ae eb fo ba 23B2 8dd0 fo Zd 23B3 Bdd2 90 ld 23B4 Bdd4 e9 BZ 2385 Bdd6 do bo 23B6 BddB 20 ff Bd 23B7 Bddb 20 Be ba 23BB Bdde ao 00 23B9 BdeO bl B Bde2 do Bde4 eb 2392 Bde B BdeB Bdeb Bdee Bdf Bdfl 239B Bdfl 2399 Bdf Bdf Bdf Bdfe e2 Be ba 4e df Be 20 e5 b4 B5 1e 20 Oe Be 20 Be ba 4c ao Be Bdff Bdff Bdff a2 01 Be01 bd 9B 02 Be resume jsr errdir gooos ldx errlin+1 inx beq rescnt jsr chrgot beq resswp bcc resnum cmp #$B2 bne ressnr jsr resswp jsr mapusr ldy #$00 lda ltxtptrl,y bne resum2 iny jsr sav42 jsr addon resum2 jsr chrget jmp data resnum jsr getpin sta linnum+1 jsr resend jsr mapusr jmp luk4it resswp ldx #$0 1 resumo lda errlin,x sta curlin,x gk-zahl aus fac in variable fac #I rundung umwandlung real nach integer bank zeiger letzter string 6509 indirection register fac #1: mantisse addrl zeiger letzter string fac #1: mantisse addrl zeiger letzter string umsch. auf bank # 1 gk-zahl aus fac in variable test direkt, ausgabe '?illegal direct error', ready hi-byte Zeilennummer akt. fehler letztes zeichen erneut nach ac tindirekter sprung) umsch. auf bank # 1 addrl zeiger auf akt. term textzeiger + yr nachstes zeichen nach ac lind.jmpl basic-routine 'data' dezimal-zahl in klammer nach linnum einlesen hi-byte akt. zeilennummer umsch. auf bank # I zeilen # > akt. suchen/abarb. lo-byte Zeilennummer akt. fehler lo-byte akt. Zeilennummer

83 610/710 basic-bverbsl hard+soft ass/reass... seite 0054 zeile adr. ob;j.-code source-code 240B Be06 bd 9a 02 ldl errtxt,x addrl basic-text zeiger bei fehlerbehandlung 2409 Be09 95 B5 s ta txtptr,x addrl zeiger auf akt. term 2410 Be Ob Cl dex 241 I Be Oe 10 f3 bpl resumo 2412 Be Oe 12 H resend ldx IISH 241l BeiO 86 Of stx xcnt dos loop-zähler 2414 BeiZ Be 9B 02 stx errlin lo-byte zeilennummer akt. fehl er 2415 Bel5 Be stx errlin+l hi-byte Zeilennummer akt. fehl er 2416 BeiB ae 9d 02 ldx tmptrp hi-byte Zeilennummer "trap, resume 2417 Belb Be stx trapno+ 1 addrh zeiger error trap 24 IB Bele 60 rts 2419 Belf 2420 Belf 2421 Be lf a2 52 rescnt ldx 11$ Bell 4c ;jmp error ind. ;jmp zur fehlerroutine 242l Be Be Be24 ===> basic-routine 'dispose <=== 2426 Be Be24 c9 BI dispos cmp 11$81 242B Be26 fo 04 beq dispoo 2429 Be2B c9 Bd cmp II$Bd 2430 Be2a do aa bne gooos 2431 Be2c Bd 9f 02 dispoo sta oldtok temp. speieher "dispose" 2432 Be2f d jsr errdir test direkt, ausgabe '?illegal direct error', ready 243l Bell ba tsx 2434 Bell eb inx 2435 Bel4 eb inx 2436 Bel5 Ba txa 2437 Bel6 ab tay 243B Be37 9B dispo I tya 2439 Be3B aa tax 2440 Be39 co cpy II$H 2441 Be3b fo " 3B beq diserr 2442 Be 3d bd lda stack+ I, x 6509 cpu-stack 2443 Be40 c9 BI cmp 1$ e42 do 06 bne dispol 2445 BeH Ba txa 2446 Be adc 1$ BeH 4c 4e Be jmp dispol ZHB BeU 2449 Be4a 2450 BeU Ba dispol txa 2451 Be4b 18 clc 2452 Be4c adc 1$07 245l Be4e bo 25 dispol bcs diserr 2454 Be 50 ab tay 2455 Be51 bd 0 I 01 lda stack+ I, x 6509 cpu-stack 2456 Be 54 Cd 9f 02 cmp oldtok temp, speieher 'dispose' 2457 Be 57 do de bne dispo I 2458 Be 59 fo Ol beq dispo e5b ae 9e 02 dispo4 ldx dsptmp temp. speieher "dispose" e5e bd dispo5 lda stack,x 6509 cpu-stack e I sta stack,y 6509 cpu-stack 2462 Be64 B8 dey 246l 8e65 ca dex

84 610/TIO basic-bverbsl hard+soft ass/reass..... seite 0055 zeile adr. obj.-code source-code 2464 Be66 Be 9e 02 stx dsptmp temp. speieher dispose 2465 Be69 ba tsx 2466 Be6a ec 9e 02 cpx dsptmp temp. speieher "dispose 2467 Be6d do ec bne dispo4 246B Be6f 9B tya 2469 Be TO aa tax 2470 Be Tl 9a txs 2471 BeT2 4c 26 ba jmp chrget nächstes zeichen nach ac lind. jmpj 2HZ BeT BeT Be75 a2 54 diserr ldx 1$ BeTT 4c 52 B5 jmp error ind. jmp zur fehlerroutine ZH6 Be7a ZHT Be Ta.end ZHB BeTa.lib bverbsz

85 610/710 basic-bverbs2 hard+soft ass/reass.... seite 0056 zeile adr. obj.-code source-code 2480 Be7a 2481 Be7a ===> basic-routine 'printl' <=== 2482 Be7a Be7a Be7d Be 4c 59 Bf printn jsr cmd jmp iodone 2485 BeBO 2486 BeBO 2487 BeBO ===> basic-routine cmd' <=== 2488 BeBO BeBO BeB3 BeB5 20 d6 b4 fo cmd jsr getbyt beq cmnd2 jsr chkcom BeBB BeB9 Be Ba BeBd Be90 Be92 Be93 Be94 Be97 OB 48 Be Ia c 9d Be cmnd2 php pha stx dolu jsr patchl sta channl pla plp jmp print 250 I Be Be b5 strdon jsr strprt 2503 Be9a ba newchr jsr chrgot 2504 Be9d 2505 Be9d 2506 Be9d ===> basic-routine print' <=== Be9d Be9d Be9f Beal Bea3 Bea6 Bea6 fo 29 c9 e6 do 03 4c 26 bo 252B Bebe 30 d BecO 20 be a Bec3 20 2e b Bec6 do d BecB 2533 BecB print beq ocrlf cmp l$e6 bne printc jmp using 2514 Bea6 ===> test ob 'tab' spc 2515 Bea B Bea6 Be ab Beaa Beac Beae Beaf Beb! Beb3 Beb5 Beb7 Beb9 Bebe fo 31 c9 aj fo Je c9 a6 IB fo 39 c9 2c fo 25 c9 Jb fo c I II printc beq ocrlfx cmp l$a3 beq taber cmp l$a6 clc beq taber cmp #$2c beq comprt cmp #$3b beq notabr jsr frmevl bi t valtyp bmi strdon jsr outfac jsr ospc bne newchr basic-routine cmd' akt. kanal clr, tast. aktivieren zahl < 256 aus akt. text nach xr test 'komma sonst fehler ready vorgabe für ausgabe-adresse system-status schreiben, iec listen speieherstelle für aktiven kanal basic-routine 'print' ausgabe string -$00 (addr. in zeropage) letztes zeichen erneut nach ac (indirekter sprung) ausgabe er l lf) auf akt. kanal tes t ob 'tab spc folgt basic-routine printusing folgt <=== 2534 BecB ===> ausgabe er l lf) auf akt. kanal <=== tabulator ausführen tabulator ausführen 10-tabulierung bei print (,I nächstes zeichen lesen, drucken auswertung beliebiger ausdruck flag für variablen typ (O=num, l=stringl bei bs cursor rechts, sonst space

86 610/710 basic-bverbs2 hard+soft ass/reass.... seite 0057 zeile adr. obj.-code source-code ec8 25J6 8ec8 ll9 Od ocrlf lda Sod 2537 Beca 20 Ja b5 jsr ochr liusgabe 1 zeichen I in ac) 25J8 Becd ad ldll dolu vorgabe für ausgabe-<~dresse 25J9 BedO bpl crfin ed2 a9 Oa ldll soa ed4 20 Ja b5 jsr ochr ausgabe 1 zeichen I in ac J ed7 49 ff crfin eor Sff ed9 60 ocrlfk rts 25H Beda 2545 Beda 2546 Be da ===> 10-tabulierung bei print I' J <=== 2541 Be da 2548 Be da JB comprt sec edb 20 fo ff jsr kplot K,y-pos. des cursor lesen/schreiben 2550 Bede 98 tya 2551 Bedf JB sec 2552 BeeO e9 Oa morco1 sbc t$oa 255J Bee2 bo fc bcs morco Bee4 49 ff eor l$ff 2555 Bee adc Sol 2556 Bee8 do 18 bne aspac funktion 'tab' eea eea eea ===> tabulator ausführen <=== 2560 Beea 2561 Beea 08 taber php 2562 Beeb JB sec 256J 8eec 20 fo ff jsr kplot K,y-pos. des cursor lesen/schreiben 2564 Beef Sc sty trmpos cursor spalte auf bildschirm 2565 Bef2 20 dj b4 jsr gtbytc charget, I byte-zahl in Kr ef5 c9 29 cmp 1$ ef7 do 19 bne snerr ef9 28 plp efa bcc Kspac funktion space 2570 Befc Ba txa efd ed sbc trmpos cursor spalte auf bildschirm 2572 BfOO 90 Oa bcc notabr nächstes zeichen lesen, drucken 257J 8f f f02 ===> funktion tab <=== f f02 aa aspac tax 2578 BfOJ 2579 BfOJ 2580 Bf03 ===> funktion space <=== f BfOJ e8 xspac inx f04 ca xspac2 dex f05 fo 05 beq notabr nächstes zeichen lesen, drucken f e b5 jsr ospc bei bs cursor rechts, sonst space 2586 BfOa do f8 bne xspac BfOc 2588 BfOc f0c ===> nächstes zeichen lesen, drucken <=== 2590 BfOc f0c ba notabr jsr chrget nächstes zeichen nach ac lind.jmpi f0f 4c a6 Be jmp printc test ob tab spc folgt

87 610/710 basic-bverbs2 hard+soft ass/reass.... seite 0058 zeile adr. obj.-code source-code fl fl fl fl fl5 4C H 97 snerr2 jmp snerr fl5 ===> basic-routine "get" <=== fl fl5 20 4a 9d get jsr errdir fl ba II flb 8fld 8flf 8f22 8f25 8f28 8f2a 8f2c Bf2e 8f30 8f31 Bf33 8f34 8f36 8f38 8f3a 8f3c 8f3d 8f3f 8f41 8H3 8H6 8H BHa Hb f4b c9 23 do Ob 20 d3 b Be Ia a9 0 I a4 89 a6 88 eb do 01 cb ao oo 98 9 I 22 a4 23 a f3 Bf a6 Ia do II jsr chrgot cmp #$23 bne getoio jsr gtbytc jsr chkcom jsr patch2 sta channl getoio lda #$01 ldy buffpt I ldx buffpt inx bne get020 iny get020 stx indexl sty indexl+l sta indexl+2 ldy #$00 tya sta I index II, y ldy indexl+l lda #$40 jsr inpcol ldx channl bne iorele rts f4b ===> basic-routine "input#" <=== Hb Hb He f f f f f59 20 d6 b Be Ia Bf inputn jsr getbyt jsr chkcom jsr patch2 sta channl jsr notqti f59 ===> akt. kanal clr, tast. aktivieren <=== f f59 a5 Ia f5b f5b iodone lda channl f5b ===> in ac kanal clr, tast. aktivieren <=== f5b 26H 8f5b 2645 Bf5e f60 26H 8f f65 20 cc ff a Ia Be iorele jsr kclrch ldx #$00 stx channl stx dolu rts ausgabe '?syntax error', ready test direkt, ausgabe '?illegal direct error', ready letztes zeichen erneut nach ac (indirekter sprung) charget, 1 byte-zahl in xr test 'komma sonst fehler ready system-status schreiben, iec-talk speieherstelle für aktiven lcanal addrh zeiger auf eingabe-puffer addrl zeiger auf eingabe-puffer addrl indirekter index #I addrh indirekter index #I bank indirekter index #I addrl indirekter index #I addrh indirekter index #I speieherstelle für aktiven kanal in ac kanal clr, tast. aktivieren zahl < 256 aus akt. text nach xr test 'komma sonst fehler ready system-status schreiben, iec-talk speieherstelle für aktiven kanal speieherstelle für aktiven kanal ein-lausgabeleanal schließen speieherstelle für aktiven kanal vorgabe für ausgabe-adresse

88 610/710 basic-bverbs2 hard+soft ass/reass.... seite 0059 zeile adr. obj.-code source-code 2649 Bf Bf Bf66 ===> basic-routine input <=== 2652 Bf Bf66 c9 22 input cmp 1$ f68 do Ob bne notqti 2655 Bf6a 20 e7 96 jsr strtxt... string in erfassen f6d a9 3b lda l$3b f6f jsr synchr test:folgt ascii o. token im akt. text, sonst error f b5 jsr strprt ausgabe string -$00 (addr. in zeropagel f a 9d notqti jsr errdir test direkt, ausgabe "?illegal direct error ready f78 20 ab Bf getagn jsr qinlin druck 0? 0. eingabeschleife 2661 Bf7b a5 Ia lda channl speieherstelle für aktiven kanal 2662 Bf7d fo Od beq bufful f7f 20 dd bb jsr readst system-status in ac lesen f and 1$ BfB4 fo 06 beq bufful f Bf jsr iodone akt. kanal clr, tast. aktivieren 2667 BfB9 4c df Be jmp data basic-routine "data 266B Bf8c 2669 BfBc 2670 BfBc ao 00 bufful ldy 1$ BfBe bl 22 lda I index II, y addrl indirekter index II 2672 Bf90 fo 06 beq buffu f92 20 Je 9e buffu I jsr sav Bf95 4c fl Bf jmp inpcon 2675 Bf Bf98 8f9B a5 Ia buffu2 lda channl speieherstelle für aktiven kanal f9a do 03 bne buffu Bf9c 4c df Be jmp data basic-routine "data 26BO Bf9f f9f f9f 20 dd bb buffu3 jsr readst system-status in ac lesen 2683 Bfa and 1$ fa4 fo d2 beq getagn fa6 do ea bne buffu I 26B6 8fa BfaB 26BB 8fa8 ===> druck.?. eingabeschleife <=== fa Bfa8 a5 Ia qinlin lda channl speieherstelle für aktiven kanal bne ginlin 2692 Bfac 20 3B b5 jsr outqst ausgabe.? Bfaf 20 2e b5 jsr ospc bei bs cursor rechts, sonst space 2694 Bfb2 4c e3 86 ginlin jmp inlin eingabe einer zeile faa do fb fb Bfb5 ===> bearbeitung read' <=== 2699 Bfb5 20 ed Be datlop jsr datan trennzeichen : zeilenende. 0. suchen, offset yr fb BfbB cb iny 2 70 I Bfb9 aa tax fba do le bne nowlin

89 610/710 basie-bverbs2 hard+soft ass/reass.... seite 0060 zeile adr. obj.-eode souree-eode 2703 Bfbe a5 B Bfbe B BfeO bl B Bfe2 do Oa Bfe4 eb 270B Bfe5 bl B Bfe7 do Bfe9 az Ze 27 II Bfeb 4e 52 B Bfee 2713 Bfee 2 7" Bfee 2715 Bfef 2716 BfdO 2717 Bfd2 271B Bfd Bfd Bfd BfdB 2722 Bfda 2723 Bfdd 2724 BfeO fe Bfe Bfe6 272B 8fe Bfea 2730 Bfea eb eb b I B5 B5 49 eb b I B5 eb B5 4a 20 Be ba 20 e2 Be ba aa eo 83 do ed fo H dtlpo dtlpl lda txtptr+2 sta i6509 lda ( txtptr I, y bne dtlpo iny lda (txtptrl,y bne dtlpl ldx #$2e jmp error iny iny lda (txtptrl,y sta datlin iny lda ( txtptr I, y iny sta datlin+l nowlin jsr mapusr jsr addon jsr ehrgot tax epx #$B3 bne datlop beq datbkl 2731 Bfea ===> basie-routine 'read' <=== fea Bfea 8fee 8fee BffO a6 4b a4 4e a9 98 2e read ldx datptr ldy datptr+l lda #$98.byte $2e B H 2745 Bffl 8ff3 8ff5 8ff7 8ff9 Bffe 8ffe a d 84 4e 20 a6 88 a5 85 a inpcon lda #$00 inpcol sta inpflg stx inpptr sty inpptr l inloop jsr sav73 lda txtptr ldy txtptr+l sta opptr sty opptr a6 'd ldx inpptr a4 'e ldy inpptr+l stx txtptr a 900e 8' ba sty txtptr l jsr chrgot f 90 II do eb bb c 9e b d bne datbk1 bit inpflg bvc qdata jsr getin jsr sav75 stx indexl sty indext+1 bank zeiger auf akt. term 6509 indirection register addrl zeigerauf akt. term addrl zeiger auf akt. term ind. jmp zur fehlerroutine addrl zeiger auf akt. term addrl data-zeilennummer addrl zeiger auf akt. term addrh data-zeilennummer umsch. auf bank # 1 textzeiger + yr letztes zeichen erneut nach ac (indirekter sprungl bearbeitung 'read' addrl ze~ger auf data nach 'read' addrh zeigerauf data nach 'read' flag für eingabe (input,get,readl addrl input-zeilennummer addrh input-zeilennummer addrl zeiger auf akt. term addrh zeiger auf akt. term addrl zeiger akt. operator-routine addrh ze~ger akt. operator-routine addrl input-zeilennummer addrh input-zeilennummer addrl zeiger auf akt. term addrh zeiger auf akt. term letztes zeichen erneut nach ac (indirekter sprungl flag für eingabe (input,get,readl eingabe 1 char vom akt. kanal (queue-vektorl addrl indirekter index #1 addrh indirekter index #I

90 610/710 basic-bverbs2 hard soft ass/reass..... Seite 0061 zeile adr. obj. -code source-code f ao 01 ldy #$ sta I index I}, y addrl indirekter index II a4 23 ldy index lol addrh indirekter indek #I c jmp datbk b qdata bmi datlop bearbeitung read' a a5 Ia lda channl speieherstelle für aktiven kanal c do 03 bne getnth e b5 jsr outqst ausgabe 0? a8 8f getnth jsr qinlin druck? I eingabeschleife aa tax datbk StK txtptr addrl zeiger auf akt. term sty txtptr l addrh zeiger auf akt. term ba datbk I jsr chrget nächstes zeichen nach ac lind.jmpl c 24 II bit valtyp flag für variablen typ IO=num, l=stringl e bpl numins bit inpflg flag für eingabe linput,get,read} bvc setaut H e8 inx stx txtptr addrl zeiger auf akt. term a9 00 lda #$ Oe sta charac puffer für trennzeichen b fo Oe beq resetc d 85 Oe setaut sta charac puffer für trennzeichen H c9 22 cmp #$ fo 07 beq nowget a9 3a lda #$3a Oe sta charac puffer für trennzeichen a9 2c lda #$2c resetc clc Od nowget sta endehr puffer für trennzeichen c 20 6b 90 jsr sav30 bank akt. text nach xr. wenn carry=l textzeiger increment f a8 jsr strlt f3 ab jsr st2txt a9 jsr inpcom c 7f 90 jmp strdn b b b ===> bank akt. text nach xr, wenn carry=l textzeiger increment <=== b b a5 85 sav30 lda txtptr addrl zeiger auf akt. term d a4 86 ldy txtptr l addrh zeiger auf akt. term f #$00 adc bcc nowgel cb iny a6 81 nowgel ldx txtptr 2 bank zeiger auf akt. term rts db a2 numins jsr fin umw. zahleostring in gk-zahl a a5 12 lda intflg flag für integer-variable c 20 a3 Bd jsr qintgr f ba strdn2 jsr chrgot letztes zeichen erneut nach ac!indirekter sprung} fo 04 beq trmok

91 610/710 basic-bverbs2 hard+soft ass/reass.... seite 0062 zeile adr. obj.-code source-code a 908c 908e c9 2c do lb a5 85 a d 84 h a5 57 a ba b fo 2e d a0 4c f9 Bf a a a a a a ab ad af bl b b4 a5 15 fo Od 10 OB a5 49 a4 h c H 97 trmok cmp ft$2c bne trmnok lda txtptr ldy txtptr- I sta inpptr sty inpptr+l lda opptr ldy opptr+l sta txtptr sty txtptr+l jsr chrgot beq endvar jsr chkcom jmp inloop trmnok lda inpflg beq trmnol bpl snerr6 lda datlin ldy datlin+l sta curlin sty curlin+l snerr6 jmp snerr b4 ===> behandlung eingabefehler <=== b b b b8 2BH 90ba bd bd bd 90bd 90bd 90bf 90c2 90c4 90c6 90c8 90ca 90cb 90cb 90cb 90cd 90cf 90dl 90d3 90d5 90d7 90d d d da a5 Ia fo 05 a2 H 4c trmnol lda channl beq doagin ldx I$H jmp error addrl zeiger auf akt. term addrh zeiger auf akt. term addrl input-zeilennummer addrh input-zeilennummer addrl zeiger akt. operator-routine addrh zeiger akt. operator-routine addrl zeiger auf akt. term addrh zeiger auf akt. term letztes zeichen erneut nach ac (indirekter sprung) test "komma sonst fehler +ready flag für eingabe (input,get,read) behandlung eingabefehler addrl data-zeilennummer addrh data-zeilennummer lo-byte akt. Zeilennummer hi-byte akt. zeilennummer ausgabe "?syntax error", ready speieherstelle für aktiven kanal ausgabe "?redo from start", zeiger "oldtxt" nach "txtptr' ind. jmp zur fehlerroutine ===> ausgabe "?redo from start, zeiger "oldtxt" nach "txtptr" <=== a cj aj a5 46 a H a5 4d a4 4e a b H 4c 60 ao 00 b I 4d doagin ldx tt$20 jsr msg lda oldtxt ldy oldtxt+l sta txtptr sty txtptr+l rts endvar lda inpptr ldy inpptr+l ldx inpflg bpl varyo sta datptr sty datptr+l inprts rts varyo ldy #$00 lda I inpptr I, y textzeiger + xr, textausgabe addrl zeiger letzter basic-befehl addrh zeiger letzter basic-befehl addrl zeiger auf akt. term addrh zeiger auf akt. term addrl input-zeilennummer addrh input-zeilennummer flag für eingabe (input,get,read) addrl zeiger auf data nach 'read' addrh zeigerauf data nach 'read' addrl input-zeilennummer

92 610/710 basic-bverbs2 hard+soft ass/reass... seite 0063 zeile adr. obj.-code source-code dc fo f9 beq inprts de a5 Ia lda channl speieherstelle für aktiven kanal e0 do f5 bne inprts e2 a2 le ldx l$1e e4 4c c3 a3 jmp msg textzeiger + xr, textausgabe e e e7 ===> basic-routine sys <=== e e7 20 es b4 csys jsr getpin dezimal-zahl in klammer nach linnum einlesen ea a5 01 lda i6s indirection register ec 48 pha ed ad lda dfbank vorgabe für bank-nummer f0 c9 Of cmp l$0f f2 fo Ob beq fligm f4 a6 lb ldx linnum lo-byte akt. zeilennummer f6 a4 lc ldy linnum+l hi-byte akt. zeilennummer f8 20 6c ff jsr knwsys transfer-of-execution jumper fb fb fb ===> bankl vor sys nach i6509 <=== fb fb 68 csysrz pla fc sta i indirection register fe 60 rts ff ff ff a9 90 fligm lda 1$ pha a9 fa lda 1$fa pha c lb 00 jmp llinnuml lo-byte akt. zeilennummer 290, rts dim3 jsr chkcom test "komma sonst fehl er + ready c c c ===> basic-routine "dim <=== c c aa dim tax d 20 3, 99 jsr ptrgtl ba jsr chrgot letztes zeichen erneut nach ac (indirekter sprungl do f4 bne dim rts ===> basic-routine "def <=== Sc 9d defn jsr getfnm "fn variable suchen I anlegen a 9d jsr errdir test direkt, ausgabe '?illegal direct error ready c 20 2d 97 jsr chkopn test. I., sonst fehler + ready f a9 80 lda 1$80

93 610/710 basic-bverbs2 hard+soft ass/reass.... seite 0064 zeile adr. obj.-code source-code B c 912e c 293B 913d f B c b5 zo 2a 97 a9 b a5 53 4B a a a5 B6 48 a5 B df Be 4c eb 9d sh subflg jsr ptrget jsr chknum jsr chkcls lda l$b2 jsr synchr lda varpnt+2 pha lda varpnt+l pha lda varpnt pha lda txtptr+l pha lda txtptr pha jsr data jmp deffin ===> basic-routine 'poke' <=== ca b4 poke jsr getnum Ba 914a txa jsr sav d 914f lb B sta (linnuml,y stx i6509 rts ===> basic-routine 'wait' <=== Cl b4 fnwait jsr getnum B Z Be B a a ba 915d fo f 20 cd b Be b1 1b 916a 4d d 2d fo f B stx trmpos ldk 1$00 jsr chrgot beq stordo jsr combyt stordo stx eormsk jsr sav32 waiter lda llinnuml,y eor eormsk and trmpos beq waiter stx i6509 rts flag fur indizierte variable variable suchen/anlegen, deren name folgt prufen, ob numerische variable tast' I', sonst fehler +ready test:folgt ascii o. token im akt. taxt, sonst error bank zeiger auf variable im ram addrh zeiger auf variable im ram addrl zeiger auf variable im ram addrh zeiger auf akt. term addrl zeiger auf akt. term basic-routine 'data' funktionen-zeiger vom stack holen 2 byte-zahl in 'linnum', kommatest, byte-zahl in xr i6509 in xr, vorgabe-bank I in i6509, yr=o lo-byte akt. Zeilennummer 6509 indirection register 2 byte-zahl in 'linnum', kommatest, I byte-zahl in xr cursor spalte auf bildschirm letztes zeichen erneut nach ac tindirekter sprungl kommatest. holt lbyte in xr bitmaske fur 'wait' i6509 in xr, vorgabe-bank # in i6509, yr=o lo-byte akt. Zeilennummer bitmaskefür 'wait' cursor spalte auf bildschirm 6509 indirection register ===> i6509 in xr, vorgabe-bank I in i6509, yr=o <=== a6 01 sav32 ldx i indirection register

94 610/710 basic-bverbs2 hard+soft ass/reass.... seite 0065 zeile adr. obj.-code source-code a c e f f ac ao oo 60 ldy dfbank sty i6509 ldy 11$00 rts f ===> basic-routine "key <=== I 7f 29B3 917f do 04 29B ao oo B3 fo 26 Z9B6 91B5 20 d6 b BB Ba do Bb 4c a7 9b Be Be e c9 15 bo f b B B b a d a f a al B a a a7 6B aB a ab 300B 91ae b b b b b5 60 ab a ff a2 34 6c fkey bne key20 ldy 11$00 beq keygo key20 jsr getbyt txa bne key40 fcerr3 jmp fcerr key40 keygo cmp 11$15 bcs fcerr3 pha jsr chkcom jsr savl3 sta highds lda indexl ldx indexl+l ldy indexl+2 sta highds+l stx highds+2 sty hightr pla tay lda 11$64 jsr kfunky bcc bakrts ldx 11$34 jmp (ierrorl bakrts rts b b b6 20 cl 95 savl3 jsr frmevl b9 4c e6 ab jmp frestr 301B 91bc bc bc ===> basic-routine verify <=== bc 91bc 91be 91bf 91cl 91c4 91c6 a9 4e 48 a fo 20 6B cverf lda ll$4e pha lda 11$80 jsr ldver beq cvfl pla vorgabe für bank-nummer 6509 indirection register zahl < 256 aus akt. text nach xr ausgabe "?illegal quantity error ready test "komma sonst fehler +ready addrl zielende (verschieben)/ temp. faclll addrl indirekter index 111 addrh indirekter index 111 bank indirekter index 111 addrh zielende (verschieben/ temp. faclll bank zielende!verschieben/ temp. faclll addrl ursprungende!verschieben)/ temp. faclll vector für funktionstasten addrl fehler routine auswertung beliebiger ausdruck alten string entfernen

95 610/710 basic-bverbs2 hard+soft ass/reass.... seite 0066 zeile adr. obj.-code source-code c7 60 rts c c c8 ===> basic-routine 'load' <=== c c ca cd cf d d d d d db dd 30H 91df e I e e e e eb ed ee f fl f f f f f f9 91fb 91fd 91fe a c e b b a fo a bb b4 4c 72 Ba ad 5b 02 c9 01 do Ia 86 2f a9 4c dd bb do a aa 20 c3 a3 4c 9b 86 a6 56 do f6 48 fo b2 b9 20 e I ff fo fb a6 2d a4 2e bc bo 29 8d 5b 02 4c 57 9d cload lda 1$00 jsr ldver loadck beq cl fl jsr lnkprg jsr stxtpt jmp fload elf! cvfl cld2 cld3 lda ldaadr cmp 1$0 I bne cld4 stx txtend sty txtend+l lda #$4c pha jsr readst and 1$10 bne cld2 pla lda 1$18 pha pla tax jsr msg jmp fini cld4 ldx lstpnt+2 bne cld3 loadnp pha beq lvrl ldver pha lvrl jsr plsv jsr kstop beq lvrl pla ora #$0 I ldx txttab ldy txttab+l jsr load bcs ldsver sta ldaadr jmp tstdir b ===> basic-routine 'save' <=== b b 20 b2 b9 csave jsr plsv e a6 2d a4 Ze a9 0 I savenp ldx txttab ldy txttab+l lda #$0 I stx highds Linkadressen berechnen programmzeiger auf start reset 'read'-,stack-,befehl-zeiger addrl modifiable adresse addrl zeiger ende addrh zeiger ende basic-text basic-text system-status in ac lesen textzeiger + xr, textausgabe linkadr. berechnen, ready bank zeiger letzter string test stop-taste addrl zeiger anfang basic-text addrh zeiger anfang basic-text einlesen vom logischen file addrl modifiable adresse test direktmodus, hi-byt zeile=$ff addrl zeiger anfang addrh zeiger anfang basic-text basic-text addrl zielende lverschiebenl/ temp. fac#l

96 610/110 basic-bverbsz hard+soft ass/reass.... seite 0061 zeile adr. obj.-code source-code sty highds+1 addrh zielende (verschieben/ temp. faclll 30B6 922B B5 66 sta highds+z bank zielende!verschieben/ temp. flclll a a6 Zf ld>< t><tend addrl zeiger ende basic-te><t c a4 30 ldy t><tend+l addrh zeiger ende basic-te><t Ze e e ===> teil der save-routine <=== Ze e B6 67 savenb st>< hightr addrl ursprungende (verschieben!/ temp. faclll 30!H sty hightr+l addrh ursprungende (verschieben}/ temp. faclll B5 69 s ta hightr+2 bank ursprungende (verschieben! a2 64 ld>< 11$ ao 67 ldy 11$ B 923B 20 oc bc jsr save abspeichern auf logisches file b bo 01 bcs ldsver d 60 rts e e e Oa ldsver asl a f aa ta>< c jmp error ind. jmp zur fehlerroutine ===> basic-routine open <=== az 00 copen ldk 11$ Bb stx parsts das analyse-byte Be st>< dosfll das Filename 1 länge a Be stx dossa das sekundär-adresse d eb inx e Be zo 02 stx dosfa das primär-adresse ba jsr plsv3z d6 b4 jsr getbyt zahl < 256 aus akt. text nach xr 311B 9257 Be lf 02 st>< dosla das logische adresse Z5a jsr cops d Be stx dosfa das primiir-adresse ao 00 ldy 11$ eo 03 cpx 11$ bcc copl BB dey Be copl sty dossa das sekundär-adresse a jsr cops d Be st>< dossa das sekundär-adresse ba jsr chrgot letztes zeichen erneut nach ac (indirekter sprung} fo 06 beq COP I< ba jsr plsv c b9 jsr sav b 20 d6 b9 cop>< jsr plsvi< e 20 cc ff globtt jsr kclrch ein-/ausgabekanal schließen el bb jsr open log. file offnen/befehl ausgeben ZB4 4c Jmp dcato B 7

97 610/710 basic-bverbs2 hard+soft ass/reass.... seite 0068 zeile adr. obj.-code source-code ba cops jsr chrgot letztes zeichen erneut nach ac (indirekter sprungl a do 05 bne copg c 68 pla d 68 pla e 'c 7b 92 jmp copk H ' ba copg jsr plsv30 31H 929, 'c d6 b' jmp getbyt zahl < 256 aus akt. tekt nach Kr 31H H 9297 ===> basic-routine close <=== ' ba cclos jsr plsv a 20 d6 b' jsr getbyt zahl < 256 aus akt. tekt nach Kr d Ba tka 31H 929e 'c 12 bc jmp close carry= I, log. file schliessen al a 1.end a I.lib bverbs3

98 610/110 basic-bverbs3 hard+soft ass/reass.... seite 0069 zeile adr. obj.-code source-code al a I a I a I a a a8 ===> disc-basic-rout. 'catalog-dir. <=== b5 dcat a5 Bb 29 e6 fo aa 4c 4f ad ad ad 92af 92bl 92b3 92b5 92b1 92b8 92ba 92bb 92bc 92bd 92be 92cl 92c3 92c5 92c1 92ca 92cc 92ce 92d0 92d3 92d6 92d8 92db 92dd 92eO 92e2 92e5 92e7 92e9 92ea 92ec 92ef 92f1 92f3 92f6 92f8 92fb 92fe ao 01 a2 01 a5 Bb 29 II fo 06 4a e8 eb e8 Ba bb a Of ao b 93 ao b a2 Oe 20 fa bb 20 ee bb 85 7c 20 dd bb do 6b 20 ee bb 85 1d 20 dd bb do 61 a4 7b 88 do eo a6 7c a5 1d 20 b4 a3 a " bb 20 cc ff dcat4 a2 Oe 20 fa bb 20 ee bb dd bb jsr dospar lda parsts and #$e6 beq dcatoo jmp snerr dcatoo ldy #$01 ldx #$0 I lda parsts and #$11 beq dcat2 lsr a bcc dcatl inx inx dcatl inx dcat2 txa jsr sendp dcat3 lda #$15 sta xcnt ldy #$60 jsr ochanl ldy #$03 sty argmoh ldx #$Oe jsr chkin jsr basin sta argmo JSr readst bne dcatio jsr basin sta arglo jsr readst bne dcatio ldy argmoh dey bne dcat3 JSr dcato ldx argmo lda arglo jsr linprt lda #$20 jsr bsout JSr kclrch ldx #$Oe jsr chkin jsr basin pha jsr readst ersatzwerte vor disk-befehl init. dos analyse-byte I ausgabe '?syntax error', ready das analyse-byte I das befehlsstring zusammensetzen u. ausgeben dos loop-zähler fac-arg ungepackt: mantisse eingabekanal öffnen, Fehlertest eingabe I char vom akt. kanal Iehn-vektor} fac-arg ungepackt: mantisse system-status in ac lesen eingabe I char vom akt. kanal Iehn-vektor} fac-arg ungepackt: mantisse system-status ~n ac lesen fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse umw. hex/dez, lo=xr, hi=ac, druck zeilen # ausgabe I char auf akt. kanal ein-/ausgabekanal schließen eingabekanal öffnen, Fehlertest eingabe 1 char vom akt. kanal Iehn-vektor} system-status in ac lesen

99 610/710 basic-bverbs3 hard+soft ass/reass... seite 0010 zeile adr. obj.-code source-code a do 3b bne dcat c jsr dcato 32" 930f &B pla (0 05 beq dcat f4 bb jsr bsout ausgabe I char auf akt. kanal e4 bcc dcat4 321B 9311 c& Of dcat5 dec xcnt dos loop-ziihler a9 Od lda l$0d b 20 bb jsr bsout ausgabe I char auf akt. kanal e 20 cc " jsr kclrch ein-/ausgabekanal schließen el " ff jsr kstop test stop-taste fo 22 beq dcatio Of lda xcnt dos loop-ziihler B do 19 bne dcatb a a9 15 lda 1$ c BS Of sta xcnt dos loop-ziihler 322B 932& d jsr tstdir test direktmodus, hi-byt zeile=$ff do 10 bne dcatb a& Ia ldx channl speieherstelle für aktiven kanal eo 00 cpx 1$ do Oa bne dcatb a2 24 ldx 1$ b 20 c3 a3 jsr msg textzeiger + xr. textausgabe e 20 e8 bb dcat7 jsr getin eingabe I char vom akt. kanal (queue-vektorl fo fb beq dcat ao 02 dcatb ldy 1$02 323B 9345 do 85 bne dcat dcat9 pla cc ff dcatio jsr kclrch ein-/ausgabekanal schließen b a9 Oe lda #$Oe d bc jsr close carry= I, log. file schliessen cc ff dcato jsr kclrch ein-/ausgabekanal schließen ae ldx dolu vorgabe für ausgabe-adresse fo 4b beq goorat B 4c 00 bc jmp chkout ausgabekanal öffnen, fehlertest b Sb b ae ochanl ldx dosfa dos primär-adresse Se do 02 bne ochlio a2 OB ldx 1$ a9 Oe ochlio lda I$ Oe ba " jsr kstlfs log. filenummer, geriite- und sekundäradr. eintragen cc ff jsr kclrch ein-/ausgabekanal schließen a 4c el bb jmp open log. file Öffnen/befehl ausgeben d d 325B 936d ===> disc-basic-routine 'dopen' <=== d d a9 22 dopen lda #$ ( 20 Be 93 jsr sav ao 02 ldy 1$ az 04 ldx 1$ Bb bit parsts dos analyse-byte I B 50 Od bvc dopz 326& 937a a2 OB ldx #$0ß c do 09 bne dop2

100 610/710 basic-bverbs3 hard+soft ass/reass.... seite 0071 zeile adr. obj.-code source-code 326B 937e e e ===> disc-basic-routine append' <=== e e a9 e2 append lda l$e BO 20 Be 93 jsr sav B3 ao 03 ldy 1$ B5 a2 05 ldx 1$ B7 Ba dop2 txa B bb jsr sendp dos befehlsstring zusammensetzen u. ausgeben 327B 93Bb 4c 7e 92 jmp globtt Be 32BO 93Be 32BI 93Be b5 sav9 jsr dosprs 32B b9 jsr chk6 32B ao 61 ldy 1$ cb fsca 10 iny co 6f cpy l$6f 32B fo 09 beq fsca b 20 Ba ff jsr klkups geräteadr. über sekundäradr.suchen 32BB 939e 90 f6 bcc fscaio 32B9 93a0 Be sty dossa dos sekundär-adresse a3 60 goorat rts a a a4 az 02 fsca20 ldx 1$ a6 4c 52 B5 jmp error ind. jmp zur fehlerroutine a a a9 ===> disc-basic-routine dclose <=== 329B 93a a9 a9 f3 dclose lda l$f ab b5 jsr dosprs ae b9 jsr oldclr länge disk.status =0, system-status schreiben bl a5 Bb lda parsts dos analyse-byte I b and 1$ b5 fo 06 beq dclall dos-ger;t log. file schliessen b7 ad lf 02 lda dosla dos logische adresse ba 4c 12 bc jmp close carry=l, log. file schliessen bd 330B 93bd bd ===> dos-ger;t log. file schliessen <=== bd 33 II 93bd ad dclall lda dosfa dos primär-adresse c0 4c jmp patch3 alle logischen files schliessen c3 33" 93c c3 ===> disc-basic-routine 'dsave <=== c c3 a9 66 dsave lda 1$66 331B 93c b5 jsr dosprs cB 20 Ob bb jsr sav cb 4c le 92 jmp savenp ce ce ce ===> disc-basic-routine dload' <===

101 basic-bverbs3 hard+soft ass/reass.... seite 0072 zeile adr. obj.-code source-code ce ce d d d d db de de a9 e6 20 H b5 20 Ob bb a fd 97 4c cd 97 dload lda ll$e6 jsr dosprs jsr sav20 lda 11$00 jsr loadnp jmp loadck de ===> basic-routine 'bank' <=== de de e e e e e9 33" 93e e ec JJH 93ec 20 d6 M eo 10 bo 04 Be cnbank jsr getbyt cpx 1$70 bcs xbkerr stx dfbank bsvrts rts xbkerr jmp fcerr ec ===> disc-basic-routine 'bsave <=== 33'S 93ec ec a9 66 JJU 93ee a2 fb 33H 93f0 20 4b b f3 20 Ob b f6 ae lb f9 93fc 93ff ac lc 02 ad Ia ae 7d ac le b 4c 2e e e bsave lda 11$66 ldx l$f8 jsr dosprx jsr sav20 ldx dosofl ldy dosof l+ 7 lda dosbnk stx highds sty highds+l sta highds+2 ldx dosofh ldy dosofh+ 1 jmp savenb e ===> disc-basic-routine 'bload' <=== e e n b c a9 e6 a2 fc 20 4b b5 20 Ob b8 ad Ia ae lb f ac lc 02 bload lda ll$e6 ldx 1$fc jsr dosprx jsr sav20 lda dosbnk clc ldx dosofl ldy dasafl l zahl < 256 aus akt. text nach xr vorgabe für bank-nummer ausgabe '?illegal quantity error', ready addrl dos offset untergrenze lbsave,bloadl addrh dos offset untergrenze lbsave,bloadl dos bank nummer addrl zielende /verschieben)/ temp. facll addrh zielende (verschieben/ temp.faclll bank zielende (verschieben/ temp.faclll addrl dos offset obergrenze lbsave,bloadl addrh dos offset obergrenze (bsave,bloadl teil der save-routine das bank nummer addrl dos offset untergrenze (bsave,blaad) addrh das affset untergrenze (bsave, blaadl

102 610/710 basic-bverbs3 hard+soft ass/reass.... seite 0073 zeile adr. obj.-code source-code H bc 90 er jsr load bcc bsvrts ===> disc-basic-routine 'header <=== a b5 20 f3 b8 format jsr dospar jsr chkl d 29 " and #$1 I f c9 I I cmp #$I I b 943d 943f do bd b b9 bo ad ao 04 a9 0' ae fo 02 a b9 frmt6 bne rec5 jsr dclall jsr rusure bcs bsvrts ldy #$04 lda #$0' ldx dosdid beq frmt6 lda #$06 jsr trans jsr errchl ''c d 339' 9''f do d ba ,5, ao oo ,56 b I I ,00 3,0, 3' a 945c 9'5f 945f c9 32 bo 03 'c Be ba f a2 16 3,0, 946 I 'c , , frmtb jsr tstdir bne bsvrts jsr mapstr ldy #$00 einlesen vom logischen file ersatzwerte vor disk-befehl init. syntaxprüfung disk-basic dos-ger;t log. file schliessen bearbeitung are you sure?' dos erstes zeichen 'id' statusstring über sek.adr. 15 einlesen test direktmodus, hi-byt zeile=$ff umsch. auf bank # 2 lda ldsdesc+l),y addrl disc-status string cmp #$32 bcs frmtb jmp mapusr umsch. auf bank # I ldx #$16 jmp error 3' ===> disc-basic-routine 'scratch' <=== , 3, " 3" a 946d b5 20 f3 bb 20 5b b9 bo 2b scratc jsr dospar jsr chkl jsr rusure bcs zxit f ao Oa ldy #$0a 9471 a9 0' lda #$0' 3"' jsr trans 3" b9 jsr errchl 3" " ,2, c 94 7e a 9'8c 948f d do lc a9 Od 20 H bb 20 7d ba ao 00 b I I 7 fo f4 bb c8 do f6 jsr tstdir bne zxit lda #$0d jsr bsout jsr mapstr ldy #$00 ind. jmp zur fehlerroutine ersatzwerte vor disk-befehl init. syntaxprüfung disk-basic bearbeitung 'are you sure?' statusstring Über sek.adr. 15 einlesen test direktmodus, hi-byt zeile=$ff ausgabe I char auf akt. kanal umsch. auf bank # 2 sctcl lda (dsdesc+l),y addrl disc-status string beq sctc2 jsr bsout ausgabe I char auf akt. kanal iny bne sctcl

103 610/710 basic-bverbs3 hard+soft ass/reass... seite 007~ zeile adr. obj.-code source-code a 3~32 9Ub b a9 Od sctc2 lda l$0d 20 f4 bb jsr bsout 20 Be ba jsr mapusr 60 zxi t rts 3~3~ 949b ~c ~f 97 rec e e jmp snerr 3~37 9~9e ===> disc-basic-routine "record" <=== e e a9 01 record lda 1$ a0 Bd sta dosrcl 34~1 94a ba jsr chrgot 3H2 94a6 a9 23 lda 1$ a jsr synchr 34H 3H5 3H6 3H 7 94b2 3HB 94b5 3H9 94b ba bc bf c2 345~ 9~c cB cB 20 Bd b 7 eo oo fo 16 Be 1f fo e 1 90 " 20 2d e5 b4 20 2a 9 7 4c d3 9~ ~cB ~c 1b b7 rec4 345B 94cb cb 94cb a2 06 rec6 94cd 94d0 4c 52 B d ~d0 20 e5 b4 rec d ba rec B H H5 94d6 9~dB 94db 9~dd eB 94eb e H77 9HO H3 fo IB fo be 20 Bd b7 eo 00 fo e4 eo ff fo eo Be ba do ab ad 1f Bd ff aaaa rec3 jsr gtvl2 cpx 1$00 beq rec4 stx dosla jsr chkcom beq rec5 bcc rec 1 jsr chkopn jsr getpin jsr chkcls jmp rec2 jmp qtyerr ldx 1$06 jmp error jsr getpin jsr chrgot beq rec3 jsr chkcom beq rec5 jsr gtvl2 cpx 1$00 beq rec~ cpx l$ff beq rec4 stx dosrcl jsr chrgot bne rec5 lda dosla jsr klkupl ausgabe 1 char auf akt. kanal umsch. auf bank I I ausgabe "?syntax error", ready dos record-länge letztes zeichen erneut nach ac tindirekter sprung} test:folgt ascii o. token im akt. text, sonst error dos logische adresse tes t 'komma sonst fehl er + ready test I, sonst fehler + ready dezimal-zahl in klammer nach linnum einlesen test' I', sonst fehler +ready ausgabe "illegal quantity error", ready ind. jmp zur fehlerroutine dezimal-zahl in klammer nach linnum einlesen letztes zeichen erneut nach ac (indirekter sprungi test 'komma sonst fehler ready dos record-länge letztes zeichen erneut nach ac (indirekter sprung} dos logische adresse geräte- sekundäradr. über logische file I suchen

104 610/710 basic-bverbs3 hard+soft ass/reass.... seite 0075 zeile adr. obj.-code source-code f6 bo d f8 Be fb Be fe 20 ba ff b ao Ob a do 6e a a bcs rec6 sty dossa stx dosfa jsr kstlfs jsr oldclr ldy #$Ob lda #$04 bne trans dos sekundär-adresse dos primär-adresse log. filenummer, geräte- und sekundäradr. eintragen länge disk.status =0, system-status schreiben a ===> disc-basic-routine 'dclear <=== a a b5 dclear jsr dospar ersatzwerte vor disk-befehl init d ao oo ldy #$ f 9511 a9 02 do 65 lda #$02 bne trans ===> disc-basic-routine 'collect' <=== b5 colect jsr dospar ersatzwerte vor disk-befehl init b9 jsr chk bd 93 jsr dclall dos-ger;t log. file schliessen c ao 05 ldy #$ e a2 01 ldx lt$ a5 Bb lda parsts dos analyse-byte and #$ fo 01 beq clct eb inx Ba clct2 txa do 4e bne trans a a a ===> disc-basic-routine 'copy' <=== a a b5 dcopy jsr dospar ersatzwerte vor disk-befehl init d and #$ f c9 30 cmp lt$ do 06 bne dcpy a5 8b lda parsts dos analyse-byte c7 and #Sc fo 07 beq dcpy a5 Bb dcpy2 lda parsts dos analyse-byte b 20 Oa b9 jsr chk e a5 Bb lda parsts das analyse-byte ao 01 dcpy4 ldy #$ a9 OB lda #$ H do 32 bne trans ===> disc-basic-routine 'concat' <=== b5 concat jsr dospar Oa b9 jsr chk c ao 08 ldy #$ e a9 Oe lda #$Oe ersatzwerte vor d1sk-befehl 1nit.

105 basic-bverbs3 hard+soft ass/reass... seite 0076 zeile adr. obj.-code source-code do 26 bne trans ===> disc-basic-routine rename <=== ' a9 e' rename lda #$e' H b5 jsr dosprs 35' b9 jsr chk a ao 09 ldy #$09 35H 955c a9 OB lda #$ e do 18 bne trans 35H ===> disc-basic-routine 'backup' <=== a9 c7 backup lda #$c H b5 jsr dosprs and #$ c9 30 cmp #$30 355, 9569 do 83 bne aaaa b 20 5b b9 jsr rusure bearbeitung are you sure? e bcc bupl rts bd 93 bupl jsr dclall dos-ger;t log. file schliessen ao 06 ldy #$ a9 0' lda #$0, bb trans jsr sendp dos befehlsstring zusammensetzen u. ausgeben 35H 957b 20 cc ff jsr kclrch ein-/ausgabekanal schlieben e 38 sec f 20 e2 bb jsr opnio 'c jmp dcato end lib mathl

106 610/710 basic-mathl hard+soft ass/reass.... seite 0077 zeile adr. obj.-code source-code ===> prüfbyte rom $8000-$9fff <=== forfix.byte $ ===> system-status schreiben, iec Listen <=== b9 patchl jsr oldclr c 00 bc Bc c jmp chkout c ===> system-status schreiben, iec-talk <=== c c b9 patch2 jsr oldclr f 4c fa bb jmp chkin ===> alle logischen files schliessen <=== patch3 sec c e7 ff jmp kclall = $2b cl länge disk.status =0, system-status schreiben ausgabekanal offnen, Fehlertest länge disk.status =0, system-status schreiben eingabekanal öffnen, Fehlertest alle logischen files schliessen cl 6c Be 02 frmevl jmp lifrmevl addrl beliebigen ausdruck auswerten c c c4 ===> auswertung beliebiger ausdruck <=== c c c c ca cc ce cf cf a6 85 do 02 c6 86 c6 85 a nfrmev ldx txtptr bne frmevl dec txtptr+l frmevl dec txtptr ldx #$00.byte $ cf ===> schleifenanfang <=== cf cf H 95d0 Ba dl d d d7 a ae da a dc 85 5a de ba e I 95e2 95e4 95e6 38 e9 bl c9 03 lpoper pha txa pha lda #$0 I jsr getstk jsr eval tstop lda #$00 sta opmask jsr chrgot loprel sec sbc #$bl bcc endrel cmp #$03 addrl zeiger auf akt. term addrh zeiger auf akt. term addrl zeiger auf akt. term test stapelplatz jmp: folgenden beliebigen ausdruck auswerten vom akt. operator erzeugte bit-maske letztes zeichen erneut nach ac!indirekter sprungl

107 basic-mathl hard soft asslreass... seite 007B zeile adr. obj.-code source-code eB ea 362B 95ec ed ef fl f f f fa fd fd 363B fd 95ff bo 13 c9 01 2a a c5 5a B5 5a ba 4c e 1 95 a6 5a do 2c bo 7f b 65 II do b 4c 7a aa e e e 69 ff B Oa ab B 9617 d9 dl BO a 961c 961f b 962d f Ba B b 963d 963f ao H 36 1B bo 6b b B a aa fo 5a do II 2a a6 B5 do 02 c6 B6 c6 B5 lb 85 5a do d1 d9 d I 80 bo 4c 90 d9 bcs endrel cmp #$0 I rol a eor #$0 I eor opmask cmp opmask bcc snerr5 sta opmask jsr chrget jmp loprel endrel ldx opmask bne finrel bcs qop adc #$0 7 bcc qop adc val typ bne endrel jmp cat endre I adc #$ff sta indexl asl a adc indexl tay qprec pla cmp optab.y bcs qchnum jsr chknum doprec pha negprc jsr doprel pla ldy opptr bpl qprecl tax beq qopgo bne pulstk finrel lsr valtyp txa rol a ldx txtptr bne finre2 dec txtptr l finre2 dec txtptr ldy #$lb sta opmask bne qprec qprecl cmp optab,y bcs pulstk bcc doprec vom akt. operatorerzeugte bit-maske vom akt. operator erzeugte bit-maske ausgabe '?syntax error', ready vom akt. operator erzeugte bit-maske nächstes zeichen nach ac (ind.jmpj vom akt. operator erzeugte bit-maske flag für variablen typ (O;num, l;s tringl string verketten addrl indirekter index #I addrl indirekter index #I adresse I prioritätsflags der math. raut. prüfen, ob numerische variable op-rout.adr. u. operand auf stapel addrl zeiger akt. operator-routine flag für variablen typ (O;num, l;string! addrl zeigerauf akt. term addrh zeigerauf akt. term addrl zeigerauf akt. term vom akt. operatorerzeugte bit-maske adresse I prioritätsflags der math. rout.

108 basic-mathl hard+soft asslreass... seite 0079 zeile adr. obj.-code source-code ===> op-rout.adr. u. operand auf stapel <=== b9 d3 80 doprel lda optab+l+l,y adresse I prioritätsflags der math. rout a b9 d d e a5 5a 4c cf pha lda optab+ I, y pha jsr pushfl lda opmask jmp lpoper adresse I prioritätsflags der math. rout. operanden auf stapel legen vom akt. operatorerzeugte bit-maske schleifenanfang c 4f 97 snerrs jmp snerr ausgabe "?syntax error", ready ===> operanden auf stapel legen <=== a5 76 pushfl lda facsgn Sb be dl 80 ldx optab,y I e 96Sf b 966d b 967c 96 7e 967f 9682 ab e6 22 do 02 e f2 a I a as a as a c 22 oo ao ff b 968e fo 24 c9 64 fo bs a Bd pushf tay pla sta indexl pla sta indexl+l tya pha inc indexl bne forpsh inc indexl+l forpsh jsr round lda faclo pha lda facmo pha lda facmoh pha lda facho pha lda facexp pha jmp ( index I J qop ldy #$ff pla qopgo beq qoprts qchnum cmp #$64 beq unpstk ]Sr chknum unpstk sty opptr pulstk pla pulst! lsr a sta tansgn pla sta argexp pla fac #1: vorzeichen adresse I prioritätsflags der math. rout. addrl indirekter index #I addrh indirekter index #I addrl indirekter index #I addrh indirekter index #I fac #I rundung fac #1: mantisse fac #1: mantisse fac #1: mantisse fac #I: mantisse fac #I: exponent addrl indirekter index #I prüfen, ob numerische variable addrl zeiger akt. operator-routine flag für 'tan' vorzeichen fac-arg ungepackt: exponent

109 610/710 basic-mathl hard+soft ass/reass.... seite 0080 zeile adr. obj.-code source-code T H b 969c 969e 969f 96al 96a2 96a4 96a5 96a T 96a T41 96ab 96ad ae 3T49 96ae ae b' b' 85 Ta Tb Tc d Te 45 T6 85 Tf a sta argho pla sta argmoh pla sta argmo pla sta arglo pla sta argsgn eor facsgn sta arisgn qoprts lda facexp rts 6c Ba 02 eval jmp lievall bl ===> folgenden num. ausdruck auswerten <=== b' b I a 9 00 neval lda 1$ b3 85 '' sta valtyp fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac-arg ungepackt: vorzeichen fac II: vorzeichen fac-arg ungepackt: Vorzeichenduplikat fac #1: exponent addrl beliebigen ausdruck auswerten flag für variablen typ IO=num. l=string} b b b5 ===> folgenden beliebigen ausdruck auswerten <=== b b ba evalo jsr chrget nächstes Zeichen nach ac lind.jmpl b8 bo 16 bcs eval2 folgenden ausdruck (keine zifferl auswerten ba 4c d8 a2 evall jmp fin jmp: umw. zahlenstring in gk-zahl bd bd bd ===> prüfen ob konstante pi <=== bd bd bf cl c c c cb c9 ff do 16 a9 cb ao al 4c 26 ba eval22 cmp #$ff bne qdot lda #$cb ldy #$96 jsr movfm jmp chrget prüfen ob ausdruck mit beginnt vari adr.lo=ac, hi=yr nach fac II nächstes zeichen nach ac lind.jmpl cb cb ===> konstante pi <=== cb cb 82 pival.byte $82, $49, $0f, $da, $al cc cd Of ce da cf al d d d0 ===> folgenden ausdruck (keine zifferl auswerten <=== d0 96d0 96d3 96d5 20 bf e8 bo 7d eval2 jsr isletc bcc eval22 bcs isvar test ac = buchstabe, ja carry=l prüfen ob konstante pi vorber. für variablensuche

110 610/710 basic-mathl hard+soft ass/reass... seite OOBI zeile adr. obj.-code source-code 37B6 37B7 96d7 96d7 37BB 96d7 ===> prüfen ob ausdruck mit beginnt <=== ' H N ' erfassen <=== 37B9 96d d7 96d9 c9 2e fo df beq evall qdot cmp 1$2e jmp: umw. zahlenstring in gk-zahl db c9 ab cmp l$ab dd fo Je beq domin basic-routine df c9 aa cmp l$aa el fo d2 beq evalo folgenden beliebigen ausdruck auswerten e3 c9 22 cmp 1$ e5 do 09 bne eval3 prüfen ob token not 379B 96e e7 3BOO 96e7 ===> string in 3BOI 96e7 3B02 96e7 20 6b 90 strtxt jsr sav30 bank akt. text nach xr, wenn carry=l textzeiger increment 3B03 96ea 20 lf ab jsr strlit sucht elemente von zeichenkette 3B04 96ed 4c f3 ab jmp st2txt 3B05 96f0 3B06 96f0 3B07 96f0 ===> prüfen ob token not' <=== 3BOB 96f0 3B09 96f0 c9 ab eval3 cmp l$ab 3BIO 96f2 do 13 bne eval4 prüfen ob token 'fn 3B 11 96H ao IB ldy I$1B 3BI2 96f6 do 27 bne gonprc not 0. - bearbeiten 3BI3 96f8 3B" 96f8 3BI5 96f8 ===> basic operations-routine not' <=== f f b notop jsr ayint umwandlung real nach integer 3BI8 96fb a5 75 lda faclo fac II: mantisse fd 49 ff eor 1$ff ff ab tay a5 74 lda facmo fac II: mantisse ff eor l$ff c 39 9d jmp givayf umw. integer nach real 3B ===> prüfen ob token 'fn <=== c9 a5 eval4 cmp l$a do 03 bne eval5 auswerten math. Funktion b 4c 71 9d jmp fndoer umwandlung fnx e e 970e auswerten math. funktion <=== ===> e e c9 b4 eval5 cmp #$b bcc parchk.. test (. I., sonst fehler, ready c9 e7 cmp #$e " bo 04 bcs eval6 sprung nach Funktionsart-test c9 cb cmp #$cb bo 35 bcs snerr ausgabe '?syntax error ready a 4c eval6 jmp isfun sprung nach Funktionsart-test

111 610/710 basic-mathl hard+soft ass/reass seite 0082 zeile adr. obj.-code source-code d d d ===> basic-routine - <=== d d ao 15 domin ldy 1$ f f f ===> not" o. - bearbeiten <=== f f 68 gonprc pla pla I 4c jmp negprc ===> test "I J, sonst fehler. ready <=== a a a a a c d d d d d 38 7 I 9 12f 20 2d c I 95 parchk jsr chkopn jsr frmevl ===> test'j ', sonst fehler +ready<=== a9 29 2c chkcls lda 1$29.byte $2c ===> test "I. sonst fehler +ready <=== a9 28 chkopn lda 1$28 2c.byte $2c ===> test "komma sonst fehler +ready <=== a9 2c chkcom lda 1$2c test "(", sonst fehler +ready auswertung beliebiger ausdruck ===> test:folgt ascii o. token im akt. text, sonst error <=== d 5b 02 a4 01 Be 5c 02 a ao 00 b 1 85 synchr sta ldaadr ldy i6509 sty ldaadr+1 ldy txtptr+2 sty i6509 ldy 1$00 lda ltxtptrj,y addrl modifiable adresse 6509 indirection register addrh modifiable adresse bank zeiger auf akt. term 6509 indirection register addrl zeiger auf akt. term ac 5c 02 ldy ldaadr+1 addrh modifiable adresse 84 u' sty i indirection register cd 5b 02 cmp ldaadr addrl modifiable adresse do 03 bne snerr ausgabe "?syntax error ready 4c 26 ba jmp chrget nächstes zeichen nach ac lind.jmpj 388, a c e a c H H H H H I ===> ausgabe '?syntax error ready <=== a2 2a 4c snerr ldx #$2a jmp error ind. jmp zur fehlerraueine

112 610/710 basic-mathl hard+soft ass!reass... seite 0083 zeile adr. obj.-code source-code ===> vorber. für variablensuche <=== b 975d 975f c 976e c " a6 H a4 50 a5 II fo Je a Oe ba bo 2b eo 54 do 07 co c9 do c 5c ac isvar ===> test 'ds$ <=== eo Tb do d co d f do Oe a 978d 978d 20 9a 9 7 a5 17 a4 18 a6 19 4c lf ab jsr ptrget sta facmo s ty faclo stx facsgn ldx varnam ldy varnam+l lda valtyp beq goo lda #$00 sta fa-cov jsr tstrom bcs isvrts cpx #$54 bne isvds cpy #$c9 bne strrts jmp gettim isvds cpx #$44 bne strrts cpy #$d3 bne strrts jsr chkds lda dsdesc+l ldy dsdesc+2 ldx dsdesc+3 jmp strlit variable suchen/anlegen, deren name folgt fac #1: mantisse fac #1: mantisse fac #1: vorzeichen erstes zeichen akt. variablenname zweites zeichen akt. Variablenname flag für variablen typ (O=num, l=string) num. variable auswerten fac overflow-byte test 'ds$' d ===> 3 byt-vektor top-ram memtop nach $74 <=== d d a5 3f strrts lda memtop f 85 " sta facmo a5 40 lda memtop+l a a s ta faclo lda memtop+2 sta facsgn isvrts rts 3 byt-vektor top-ram memtop nach $14 interne uhrzeit nach ti$ 3 byt-vektor top-ram memtop nach $14 3 byt-vektor top-ram memtop nach $14 test/übernahm& diskstatus addrl disc-status string addrh disc-status string bank disc-status string sucht elemente von zeichenkette addrl höchste ram-speicherstelle fac #1: mantisse addrh höchste ram-speicherstelle fac #1: mantisse bank höchste ram-speicherstelle fac #1: vorzeichen a a ===> test/übernahme diskstatus <=== a a a5 16 chkds lda dsdesc länge disc-status string c do fb bne isvrts e 4c 22 b9 jmp errchl statusstring Liber sek.adr. 15 einlesen a 1

113 610/710 basic-mathl hard+soft ass/reass.... seite OOB4 zeile adr. obj.-code source-code a I a I ===> num. variable auswerten <=== a I a I goo bi t intflg flag für integer-variable a bpl gooo gk-variable bearbeiten a5 a5 76 lda facsgn fac II: vorzeichen 395B 9 7a 7 B5 01 sta i indirection register a9 ao 00 ldy #$ ab bl 74 lda (facmo},y fac II: mantisse ad aa tak ae c8 iny af bl 74 lda (facmoj,y fac #I: mantisse b I ab tay b2 20 Be ba jsr mapusr ums eh. auf bank # b5 Ba tka b6 4c 39 9d jmp givayf umw. integer nach real 396B 97b b b9 gk-variable bearbeiten <=== ===> b b9 20 Oe ba gooo jsr tstrom bc bcc qstatv status-variable st' bearbeiten be a5 74 lda facmo fac #I: mantisse c0 a4 75 ldy faclo fac II: mantisse c2 a6 76 ldk facsgn fac #I: Vorzeichen c4 4c 6B a I jmp movfum c c 7 39BO 9 7c7 ===> status-variable st' bearbeiten <=== 39BI 97c c 7 eo 53 qstatv CpK #$53 39B3 97c9 do Oa bne qerlin fehlerzeile-variable el bearbeiten cb co 54 cpy #$54 39B5 97cd do 06 bne qerlin fehlerzeile-variable el bearbeiten cf 20 dd bb jsr readst system-status in ac lesen 39B 7 97d2 4c 13 a2 jmp float status-byte in fac 39BB 97d d d5 ===> fehlerzeile-variable el bearbeiten <=== d d5 eo 45 qerlin CPK #$ d7 do I 7 bne qdsav diskstatus-variable ds bearbeiten d9 co 52 cpy #$ db fo Od beq qnumer fehlernummer-variable er bearbeiten dd co 4c cpy #$4c df do Of bne qdsav diskstatus-variable 'ds bearbeiten 399B 9 7e I ad lda errlin+1 hi-byte zeilennummer akt. fehl er e4 ac 9B 02 ldy errlin lo-byte zeilennummer akt. fehl er e 7 4c 2C 9d jmp nosl ft ea ea ea ===> fehlernummer-variable er bearbeiten <=== ea lea a5 Bf qnumer lda errnum fehlernummer für 'trap' ec,. lsr a ed 4c 13 a2 ]mp float status-byte in fac f0

114 610/710 basic-mathl hard+soft ass/reass.... seite 0085 zeile adr. obj.-code source-code f f0 ===> diskstatus-variable 'ds' bearbeiten <=== f f0 97f2 97f4 97f6 97f8 97fb 97fe eo 44 do 26 co 53 do a d ba ao 00 b Of qdsav Oa Oa Oa b d e a a a c e cb b Be ba 29 Of c 13 a2 a5 74 a c 66 a 1 cpx #$H bne gomovf cpy #$53 bne gomovf jsr chkds jsr mapstr ldy #$00 lda (dsdesc+l),y and l$0f asl a sta dores asl a asl a adc dores sta dores iny test/übernahme diskstatus umsch. auf bank I 2 addrl disc-status string flag für token o. ascii/garbage-flag flag für token o. ascii/garbage-flag flag für token o. ascii/garbage-flag lda (dsdesc l),y addrl disc-status string jsr mapusr umsch. auf bank # 1 and #$0f adc dores jmp floa t gomovf lda facmo ldy faclo jmp movfm ===> Funktionsart Überprüfen <=== Oa isfun asl a pha W b 982d 982f b 983c 983e H a 984b 984c aa ba eo Bf 90 2b eo ce fo d c b5 68 c9 do fo 62 aa a a a Ba d6 b4 tax jsr chrget cpx l$8f bcc oknorm cpx #$ce beq errjmp JSr chkopn jsr frmevl jsr chkcom jsr chkstr pla cmp #$d0 beq ins]mp tax lda facsgn pha lda faclo pha lda facmo pha txa pha jsr getbyt flag für token o. ascii/garbage-flag status-byte in fac fac 11: mantisse fac 11: mantisse vari adr.lo=ac, hi=yr nach fac 11 nächstes zeichen nach ac lind.jmpl sprung basic-routine 'err$ (x)' test '(, sonst fehler ready auswertung beliebiger ausdruck tes t komma sonst fehl er ready prüfen, ob stringvariable basic-routlne 'instring fac 11: vorzeichen fac #1: mantisse fac #1: mantisse zahl < 256 aus akt. text nach xr

115 610/710 basic-mathl hard+soft ass/reass... seite 0086 zeile adr. obj.-code source-code B B H ab 9851 Ba c 5b 9B 9B56 9B B59 9B5a 985b 9B5e 9B B65 9B b b B ab b9 3b BO B5 62 b9 Je BO c 04 b5 pla tay txa pha jmp fingo oknorm jsr parchk pla tay fingo lda stmdsl,y sta jmper+l lda s tmds I+ I, y sta jmper+2 jsr jmper jmp chknum 40B5 986b ===> basic operations-routine or <=== b B6b ao ff 40BB 986d 2c e e orop ldy l$ff.byte $2c e ===> basic operations-routine and' <=== e e B B78 409B 98 7b d f 410 I B Ba c f B B a "" c f 98a2 "" Ba a a Ba Ba a Ba8 ao oo Be b a5 74 4d Oe a5 75 4d Od 20 d3 al b a5 75 4d Od 4d ab a5 74 4d Oe 4d c 39 9d 4c e9 ae 4c 00 ac andop ldy 1$00 sty eormsk jsr ayint lda facmo eor eormsk sta charac lda faclo eor eormsk sta endehr jsr movfa jsr ayint lda faclo eor eormsk and endehr eor eormsk tay lda facmo eor eormsk and charac eor eormsk jmp givayf insjmp jmp incopo errjmp jmp errd a8 ===> basic operations-routine '<=>' <=== tes t ' ( 'I ', sonst fehler, ready addrl sprung zu functions-rout. addrh sprung zu functions-rout. $4c wert für 'jmp (functions-rout. I prüfen, ob numerische variable bitmaskefür wait' umwandlung real nach integer fac tl: mantisse bitmaske für wait' puffer für trennzeichen fac tl: mantisse bitmaske für wait' puffer für trennzeichen copy arg nach fac tl, yr umwandlung real nach integer fac tl: mantisse bitmaske für 'wait' puffer für trennzeichen bitmaske für wait fac II: mantisse bitmaske für wait' puffer für trennzeichen bitmaske für wait' umw. integer nach real basic-routine 'instring sprung basic-routine err$ (xl 9Ba8 98a b5 dorel jsr chkval prüft ob richtiger variablentyp

116 670/770 basic-math7 hard+soft ass/reass.... seite OOB7 zeile adr. obj.-code source-code Bab bo 73 strcmp bcs routine. <=>. für string Bad a5 7e lda argsgn fac-arg ungepackt: vorzeichen Baf 09 7f ora ll$7f 412B 9Bb7 25 7a and argho fac-arg ungepackt: mantisse Bb3 B5 7a sta argho fac-arg ungepackt: mantisse Bb5 a9 79 lda 11$ Bb7 9Bb9 ao a2 jsr fcomp ldy #$00 vergleich fac 17 mit var1 (ac!yrl 4 73' Bbc aa tax 9Bbd 4c jmp qcomp bringt wahrheitswert nach fac Bc Bc Bc0 routine. <=>. für string <=== ===> 473B 9BcO Bc0 a9 00 strcmp lda #$ Bc2 B5 77 sta valtyp flag für variablen typ IO=num, 7=stringl Bc' c6 5a dec opmask vom akt. operator erzeugte bit-maske Bc6 20 e9 ab jsr frefac stringverwaltung, freier string Bc9 B5 70 sta dsctmp zeitweise descriptoren-ablage 47H 9Bcb a2 02 ldx #$ Bcd b5 22 grrk lda index 7. x addrl indirekter index facexp,x fac 17: exponent " Bcf sta Bd7 ca dex Bd2 70 f9 bpl grrk Bd4 a5 7c lda argmo fac-arg ungepackt: mantisse d6 a4 7d ldy arglo fac-arg ungepackt: mantisse BdB a6 7e ldx argsgn fac-arg ungepackt: vorzeichen Bda 20 ef ab jsr fretmp Bdd a6 22 ldx index 7 addrl indirekter index 117 addrh indirekter index Be7 B6 7c stx fac-arg ungepackt: mantisse Be3 B4 7d sty arglo fac-arg ungepackt: mantisse Be5 a4 24 ldy index 7 2 bank ind1rekter index 117 sty argsgn fac-arg ungepackt: vorzeichen 475B 9Be7 B4 7e Bdf a4 23 ldy index7+7 argmo Be9 aa tax Bea 3B sec eb e5 70 sbc dsctmp zeitweise descriptoren-ablage ed fo OB beq stasgn Bef a9 07 lda 11$ f bcc stasgn f3 a6 70 ldx dsctmp zeitweise descriptoren-ablage FT stasgn sta facsgn fac 117: vorzeichen f ba jsr mapdst umsch. auf bank (# in $ f5 a9 ff lda #Sff fc ao ff ldy ll$ff "70 98fe eb inx "7 7 98ff cb nxtcmp iny " ca dex do 07 bne getcmp a6 76 ldx facsgn fac 117: vorzeichen 4 I " ===> bringt wahrheitswert nach fac <=== " qcomp bmi docmp clc bcc docmp

117 610/710 basic-mathl hard+soft ass/reass..... seite 0088 zeile adr. obj. -code source-code 41B2 41B3 41B4 41B5 41B6 41B 7 41BB 41B a 990c 990f B 991a 991c 991f 9920 bl 71 Bd 5b 02 b I 7c Cd 5b 02 fo e9 a2 ff bo 02 a Be ba eb Ba a d fo a9 ff getcmp lda tfacexpl,y sta ldaadr lda targmol,y cmp ldaadr beq nxtcmp ldx #$ff bcs docmp ldx #$01 docmp jsr mapusr inx txa rol a and tansgn beq goflot lda #$ff c 13 a2 goflot jmp float c c fac #1: exponent addrl modifiable adresse fac-arg ungepackt: mantisse addrl modifiable adresse umsch. auf bank # I flag für 'tan' vorzeichen status-byte in fac c ===> variable suchen/anlegen, deren name folgt <=== c c a2 00 ptrget ldx #$ e ba jsr chrgot ptrgtl stx dimflg ===> sucht variable oder legt sie an <=== 420B B5 H ptrgt2 sta varnam ba jsr chrgot " B B 993b 993d H b 994e b 995d 995f bf 99 bo 03 4c H 97 a2 00 B6 II B ba bf Ob aa ba 90 fb 20 bf 99 bo f6 c9 24 do 06 a9 ff B5 II do c do 13 jsr isletc bcs ptrgt3 interr jmp snerr ptrgt 3 ldx #$00 stx valtyp issec eatem stx intflg jsr chrget bcc issec jsr isletc bcc nosec tax jsr chrget bcc eatem jsr Lsletc bcs eatem nosec cmp #$24 bne notstr lda #$ff sta valtyp bne turnon notstr cmp #$25 bne strnam letztes zeichen erneut nach ac tindirekter sprungl dim-flag für zeigersuche auf variable erstes zeichen akt. variablenname letztes zeichen erneut nach ac tindirekter sprungl test 'ac'= buchstabe, ja carry=l ausgabe '?syntax error', ready flag für variablen typ to=num, l=stringl flag für integer-variable nächstes zeichen nach ac tind.jmpl test ac = buchstabe, ja carry= I nächstes zeichen nach ac tind.jmp) test 'ac'= buchstabe, ja carry=l flag für variablen typ to=num, l=stringl

118 610/710 basic-math1 hard+soft ass/reass.... seite 0089 zeile adr. obj.-code source-code b 996d 996f c 99 7e 997f a 998c 998e a a5 14 do do a H 85 H Ba aa ba e9 28 do 03 4c 28 9b lda subflg bne interr lda #$80 sta intflg ora varnam sta varnam turnon txa ora #$80 tax jsr chrget strnam stx varnam+1 sec ora subflg sbc #$28 bne s trna 1 jmp isary flag für indizierte variable flag für integer-variable erstes zeichen akt. variablenname erstes zeichen akt. variablenname nächstes zeichen nach ac (ind.jmp} zweites zeichen akt. Variablenname flag für indizierte variable floating variable gefunden, namenzuwe~sung suchenleinrichten von feldern ===> floating variable gefunden. namenzuweisung <=== ao a5 31 a e 85 6d e4 36 do 04 c5 35 fo 2d c ba f b1 6d a 1 99a3 99a5 99a6 99a8 99aa 99ac c5 H do Od cb b1 6d c5 50 do 05 4c df 9a af af af fo Be b b2 20 Be ba 9 9b b6 a5 6d 99b8 99ba 99bc 99bd d6 e8 do d1 strnal ldy #$00 sty subflg lda vartab ldx vartab+1 stxfnd stx lowtr+1 lopfnd sta lowtr lopfn cpx arytab+1 bne lopfn cmp arytab beq notfns jsr mapvar lda (lowtrl.y cmp varnam bne notit iny lda llowtr},y cmp varnam+1 bne nxtptr jmp finptr gobadv beq interr nxtptr dey notit jsr mapusr clc lda lowtr adc #$07 bcc lopfnd inx bne stxfnd flag für indizierte variable addrl zeiger anfang einfache variable addrh zeiger anfang einfache variable addrh ursprunganfang (verschieben} temp.fac#2 addrl ursprunganfang (verschieben}/ temp. fac#2 addrh zeiger anfang array-tabelle addrl zeiger anfang array-tabelle umsch. auf bank # 2 addrl ursprunganfang (verschieben}/ temp. fac#2 erstes zeichen akt. variablenname addrl ursprunganfang (verschieben}/ temp.fac#2 zweites zeichen akt. variablenname zeiger auf gefundene variable umsch. auf bank # 1 addrl ursprunganfang (verschieben}/ temp. fac#2

119 610/710 basic-math1 hard+soft ass/reass... seite 0090 zeile adr. obj. -code source-code bf bf bf ===> test ac = buchstabe, ja carry= 1 <=== bf bf c9 41 isletc cmp #$ c bcc islrts c3 e9 5b sbc #$5b c5 38 sec c6 e9 a5 sbc #$a c8 60 islrts rts c c c9 68 notfns pla ca 48 pha cb c9 56 cmp #$ cd do Of bne notevl cf ba tsx d0 bd lda stack+2,x 6509 cpu-stack d3 c9 97 cmp #$ d5 do 07 bne notevl d7 a9 10 ldzr lda #$ d9 ao a5 ldy #$a db a2 Of ldx #$0f dd 60 rts de de Oll 99de a5 H notevl lda varnam erstes zeichen akt. variablenname e0 a+ 50 ldy varnam I zweites zeichen akt. variablenname e2 c9 54 cmp #$ e4 do 04 bne qstavr e6 co c9 cpy #$c e8 fo ed beq ldzr ea c9 53 qstavr cmp #$ ec do 04 bne qeravr ee co 54 cpy #$ f0 fd bd beq gobadv f2 c9 45 qeravr cmp #$ (4 do 08 bne qdsvar f6 co 52 cpy #$ f8 fo b5 beq gobadv fa co 4c cpy #$4c fc fo bl beq gobadv fe c9 qdsvar cmp #$ aOO do 08 " bne varok a02 CO 53 cpy #$ a04 fd a9 beq gobadv 031 9a06 co d3 cpy #$d a08 fo a5 beq gobadv a0a a5 35 varok lda arytab addrl zeiger anfang array-tabelle a0c., 36 ldy arytab l addrh zeiger anfang array-tabelle a0e 85 6d sta lowtr addrl ursprunganfang /verschieben}/ temp. fac# aiO 84 6e sty lowtr+l addrh ursprunganfang /verschieben} temp. fac# a 12 a5 39 lda strend addrl ende benutzter ram-bereich a 14., Ja ldy strend+1 addrh ende benutzter ram-bereich a sta hightr addrl ursprungende /versch~ebenll temp.fac#l

120 610/710 basic-math1 hard+soft ass/reass.... seite 0091 zeile adr. obj.-code source-code a1B B4 6B a7a 1B a1b a1d B a 1f 9a20 9a22 9a24 9a27 9a29 9a2b 9a2c 9a2e 9a30 9a32 9a34 9a B a3B 9a3a 9a3c 9a3e 9a a a a a a a4a 436B 9a4c a4e aH a a a a a a5B cb B e BB a5 64 a4 65 cb B5 35 B4 36 B5 64 B4 65 a5 64 a6 65 e4 Ja do 07 c5 39 do 03 4c co 9a B5 22 B B7 ba ao oo b 1 22 aa cb b 1 22 OB cb b B a5a cb 437B 9a5b b a5d BO 9a5f B B1 43B2 43B3 43B4 9a61 9a62 9a64 9a65 2B 10 do Ba 30 Cd sty hightr+1 clc adc #$07 bcc noteve iny noteve sta highds sty highds+7 jsr bltuv lda highds ldy highds+1 iny sta arytab sty arytab+1 sta highds sty highds+1 aryva2 lda highds ldx highds+7 aryva3 cpx strend+7 bne aryvgo cmp strend bne aryvgo jmp arydon aryvgo sta index1 stx index1+1 jsr mapvar ldy #$00 lda lindex1 I,y tax iny lda I index 1 I, y php ~ny lda (index1 I,y adc highds s ta highds iny lda I index 11, y adc highds 1 s ta highds + 1 plp bpl aryva2 txa bmi aryva2 addrh ursprungende (verschieben}/ temp.fac#1 addrl zielende (verschieben}/ temp.fac#1 addrh zielende (verschieben/ temp.fac#1 blockverschiebe-rout. für variable addrl zielende (verschieben}/ temp.fac#1 addrh zielende (verschieben/ temp.fac#1 addrl zeiger anfang array-tabelle addrh zeiger anfang array-tabelle addrl zielende (verschieben}/ temp.fac#1 addrh zielende (verschieben/ temp.fac#1 addrl zielende (verschieben}/ temp.fac#1 addrh zielende (verschieben/ temp.fac#1 addrh ende benutzter ram-bereich addrl ende benutzter ram-bereich addrl indirekter index #1 addrh indirekter index #1 umsch. auf bank # 2 addrl indirekter index #1 addrl indirekter index #1 addrl indirekter index #1 addrl zielende (verschieben}/ temp.fac#1 addrl zielende (verschieben}/ temp. fac#1 addrl indirekter index #1 addrh zielende (verschieben/ temp. fac#1 addrh zielende (verschieben/ temp. fac#1

121 610/710 basic-mathl hard+soft ass/reass.... seite 0092 zeile adr. obj.-code source-code HOO HOl H02 H03 HU HOS H06 HOT HOB 4409 HIO HIS HIB &68 9a6a 9a6c 9a6d 9a6f 9a71 9a 13 9a 7S 9a 77 9a 79 9a7b 91 7d 9a7f 9a81 9a84 9a86 9aBB 9a8a 9a8d 9a8e 9a a 94 9a96 9a97 9a98 9a9a 9a9c 9a9e 9a9f 9aa I 9aa3 9aa4 9aa6 c8 b I 22 ao 00 Oa 69 OS e6 23 a6 23 e4 6S do 04 es 64 fo b ba ao oo bl 22 fo 29 Bd Sb 02 c8 bl d 5b aa c8 bl c8 bl ao oo bl aa aaa H22 9aac cb aad bl aaf S 9abl iny lda I index I I. y ldy #$00 asl a adc #$05 adc indexl sta indexl bcc aryget inc indexl+l aryget ldx indexl+l cpx highds I gogo bne gogo cmp highds beq aryva3 jsr mapvar ldy #$00 lda lindex I J. y beq dvarts sta ldaadr iny lda I index 11. y clc adc ldaadr sta hightr tax iny lda lindexl},y adc #$00 sta hightr+l iny lda lindexl},y sta i6509 clc ldy #$00 lda {hightr},y adc #$0 7 sta lhightr},y iny lda I hightr J, y adc 11$00 sta lhightrj,y ab3 a9 04 dvarts lda #$04 H27 9ab5 18 clc H28 9ab adc indexl ab sta indexl aba 90 bb bcc aryget H31 9abc e6 23 inc index abe do b1 bne aryget ac ba arydon jsr mapvar H34 9ac3 ao 00 ldy #$00 addrl indirekter index #I addrl indirekter index #I addrl indirekter index #I addrh indirekter index #I addrh indirekter index #I addrh zielende {verschieben/ temp. faclll addrl zielende {verschieben}/ temp. fac#l umsch. auf bank # 2 addrl indirekter index #I addrl modifiable adresse addrl indirekter index II addrl modifiable adresse addrl ursprungende {verschieben}/ temp. fac#l addrl indirekter index II addrh ursprungende lverschiebenl/ temp. fac#l addrl indirekter index indirection register addrl ursprungende lverschiebenj/ temp.fac#l addrl ursprungende tverschiebenl/ temp. facll addrl ursprungende lverschiebenji temp. fac#l addrl ursprungende lverschiebenl/ temp. fac#l addrl indirekter index #1 addrl indirekter index #1 addrh indirekter index 111 umsch. auf bank I 2

122 610/710 basic-mathl hard+soft ass/reass.... seite 0093 zeile adr. obj.-code source-code H35 9ac5 a5 H lda varnam erstes zeichen akt. Variablenname H36 9ac d sta I lowtr J, y addrl ursprunganfang!verschieben)/ temp. fac#z ac9 c8 iny H38 9aca a5 50 lda varnam+ 1 zweites zeichen akt. Variablenname acc 91 6d sta llowtr), y addrl ursprunganfang!verschieben)/ temp.fac# ace a9 00 lda #$00 H41 9ad0 c8 iny ad I 91 6d sta llowtrj,y addrl ursprunganfang!verschieben)/ temp. fac# ad3 cb iny HH 9ad4 91 6d sta llowtr).y addrl ursprunganfang!verschieben)/ temp. fac# ad6 c8 iny 4H6 9ad7 91 6d sta I lowtr J. y addrl ursprunganfang I verschieben)/ temp.fac# ad9 c8 iny 4HB 9ada 91 6d sta llowtr),y addrl ursprunganfang!verschieben)/ temp. fac#z adc c8 iny H50 9add 91 6d sta I lowtr J. y addrl ursprunganfang!verschieben)/ temp.fac#z adf adf H53 9adf ===> zeiger auf gefundene variable <=== adf H55 9adf 20 Be ba finptr jsr mapusr ums eh. auf bank # I ae2 a5 6d lda lowtr addrl ursprunganfang!verschieben)/ temp.fac# ae4 18 clc ae adc #$ ae 7 a4 6e ldy lowtr+l addrh ursprunganfang (verschieben) temp.fac# ae I bcc finnow aeb cb iny aec finnow sta varpnt addrl zeiger auf variable im ram aee sty varpnt+l addrh zeiger auf variable im ram H64 9af0 a2 02 ldx #$ a f stx varpnt +2 bank zeiger auf variable im ram H66 9a f4 60 rts af af5.end af5.lib math2

123 610/710 basic-math2 hard+soft ass/reass..... seite 0094 zeile adr. obj. -code source-code H71 9af af5 ===> setzt zeiger $64 auf l.feldvari <=== H 73 9af af5 a5 Oe fmaptr lda count allgemeiner zähler H 75 9af7 Oa asl a af adc 1$ afa 65 6d adc lowtr afc a4 6e H 79 H80 H81 9afe 9b00 9b c b jsrgm ldy lowtr+l bcc jsrgm iny sta highds sty highds+l H83 9b05 60 rts H84 9b06 H85 9b b06 ===> umw. reallfac) in integer <=== H87 9b06 H88 9b ba intidx jsr chrget H89 9b09 20 c I 95 jsr frmevl H90 9b0c b5 posint jsr chknum H91 9b0f a5 76 lda facsgn H92 9bll 30 Od bmi nonono addrl ursprunganfang {verschieben)/ temp.facl2 addrh ursprunganfang {verschieben) temp. facl2 addrl zielende {verschieben)/ temp. facll addrh zielende {verschieben/ temp. facll nächstes zeichen nach ac lind.jmp) auswertung beliebiger ausdruck prüfen, ob numerische variable fac II: vorzeichen H93 9bl3 H94 9bl bl3 ===> umwandlung real nach integer <=== H96 9bl3 H97 9bl3 a5 71 ayint lda facexp fac II: exponent H98 9bl5 c9 90 cmp 1$90 H99 9bl bcc qintgo bl9 a9 Od lda l$0d b1b ao a5 ldy 1$a bld a2 jsr fcomp b20 do 03 nonono bne fcerr b22 4c 80 a2 qintgo jmp qint b b b25 4c a7 9b fcerr8 jmp fcerr b b b28 ===> suchenleinrichten von feldern <=== 45 II 9b b28 a5 10 isary lda dimflg b2a b2c H 9b2d a5 11 9b2f 9b30 9b32 H a b33 a b35 H b36 a5 4f ora intflg pha lda valtyp pha lda #$00 pha indlop lda varnam+l pha lda varnam vergleich fac II mit vari {ac/yr) umw. gk-zahl in integer ausgabe '?illegal quantity error ready dim-flag für zeigersuche auf variable flag fur integer-varlable flag für variablen typ IO=num, l=string) zweites ze~chen akt. variablenname erstes zeichen akt. variablenname

124 610/710 basic-math2 hard+soft ass/reass seite 0095 zeile adr. obj.-code source-code b38 9b b pha jsr intidx umw. real(facl in integer b3c 68 pla b3d 85 4f sta varnam erstes zeichen akt. Variablenname b3f 68 pla b sta varnam+f zweites zeichen akt. variablenname b42 68 pla b43 ab tay bH ba tsx b45 bd lda stack+2,x 6509 cpu-stack b48 48 pha b49 bd 01 0 I lda stack+ 1, x 6509 cpu-stack b4c 48 pha b4d a5 74 lda facmo fac #I: mantisse bH 9d 02 0 I s ta stack+2,x 6509 cpu-stack b52 a5 75 lda faclo fac #I: mantisse b54 9d sta stack+ I, x 6509 cpu-stack b57 c8 iny b58 98 tya b59 48 pha b5a ba jsr chrgot letztes zeichen erneut nach ac (indirekter sprungl b5d c9 2c cmp #$2c 45H 9b5f fo d2 beq indlop b61 68 pla b62 85 Oe sta count allgemeiner zähler 45H 9b a 97 jsr chkcls tes t I, sonst Fehler + ready b67 68 pla b68 85 II sta valtyp flag für variablen typ IO=num, l=stringl b6a 68 pla b6b sta intflg flag für integer-variable b6d 29 7f and #$7f b6f sta dimflg dim-flag für zeigersuche auf variable b 7 I a6 35 ldx arytab addrl zeiger anfang array-tabelle b73 a5 36 lda arytab+l addrh zeiger anfang array-tabelle b d lopfda stx lowtr addrl ursprunganfang /verschieben}/ temp.fac# b e sta lowtr+l addrh ursprunganfang /verschieben} temp.fac# b79 c5 Ja cmp strend+l addrh ende benutzter ram-bereich b7b do 04 bne lopfdv b7d e4 39 cpx strend addrl ende benutzter ram-bereich 456 I 9b7f fo H beq notfdd b ba lopfdv jsr mapary umsch. auf bank # b84 ao 00 ldy #$ b86 bl 6d lda llowtrl,y addrl ursprunganfang (verschieben}/ temp.fac# b88 c8 iny b89 c5 H cmp varnam erstes zeichen akt. variablenname b8b do 06 bne nmaryl b8d bl 6d lda llowtrl,y addrl ursprunganfang (verschieben}/ temp.fac# b8f es 50 cmp varnam+t zweites zeichen akt. variablenname b91 fo 19 beq gotary 457 I 9b93 c8 nmaryl iny b94 bl 6d lda llowtrl,y addrl ursprunganfang I verschieben I/ temp. fac#2

125 610/710 basic-math2 hard+soft ass/reass... seite 0096 zeile adr. obj.-code source-code b96 18 clc b d adc lowtr addrl ursprunganfang I verschieben I/ temp.facl b99 tax b9a c8 iny b9b b1 6d lda (lowtrl,y addrl ursprunganfang (verschieben!/ temp.factz 457B 9b9d 20 Be ba jsr mapusr ums eh. auf bank s I ba0 65 6e adc lowtr+l addrh ursprunganfang (verschieben} temp. fac#2 45BO 9ba2 90 dl bcc lopfda ba ba ba4 ===> ausgabe "?bad subscript error ready <=== ba ba4 a2 38 bserr ldx #$ ba6 2c.byte $2c ba ba 7 45B9 9ba7 ===> ausgabe "?illegal quantity error, ready <=== ba ba7 a2 30 fcerr ldx #$ ba9 4c errgo3 jmp error ind. jmp zur Fehlerroutine bac bac bac 20 Be ba gotary jsr mapusr ums eh. auf bank # I baf a2 3a ldx #$3a bbl a5 10 lda dimflg dim-flag fur zeigersuche auf variable bb3 do f4 bne errgo bb5 20 f5 9a jsr fmaptr setzt zeiger $64 auf 1. feldvari bbB 20 B2 ba jsr mapary ums eh. auf bank I bbb ao 04 ldy #$ bbd bl 6d lda (lowtrl, y addrl ursprunganfang (verschieben}/ temp.fac# bbf c5 Oe cmp count allgemeiner zähler bc1 do el bne bserr ausgabe "?bad subscript error ready bc3 4c 58 9c jmp getdef suche nach richtigem matrixelement bc bc bc sav44 bpl sav bc8 ca dex bc9 a5 4f lda varnam erstes zeichen akt. variablenname bcb bpl sav bcd ca dex bce ca dex bcf 60 sav45 rts bd bd bd0 20 f5 9a notfdd jsr fmaptr setzt zeiger $64 auf I. feldvari bd B8 jsr reason test speicherplatz fur variable bd ba jsr mapary ums eh. auf bank # bd9 ao oo ldy #$ bdb sty fbufpt+l addrh zeiger fac-puffer lfout-rout. I bdd a5 4f lda varnam erstes zeichen akt. variablenname bdf 91 6d sta (lowtr},y addrl ursprunganfang (verschieben}/ temp. fac#2

126 670/770 basic-math2 hard+soft ass/reass.... seite 0097 zeile adr. obj.-code source-code be7 cb iny be2 a2 05 ldx 1$ be4 a5 50 lda varnam+7 zweites zeichen akt. variablenname be d sta I lowtr J, y addrl ursprunganfang I verschieben)/ temp. facl2 462B 9beB 20 c6 9b jsr savh beb B6 B2 stx fbufpt addrl zeiger fac-puffer lfout-rout.l bed a5 Oe lda count allgemeiner zähler bef cb iny bf0 cb iny bf7 cb iny bf d sta llowtrj,y addrl ursprunganfang (verschieben)/ temp. facl bH a2 Ob loppta ldx l$0b bf6 a9 00 lda #$ bfB bit dimflg dim-flag für zeigersuche auf variable 463B 9bfa 50 OB bvc notdim bfc 6B pla bfd 7B clc bfe adc 1$ cOO aa tax 460 9c07 6B pla 46H 9c adc 1$ c04 cb notdim iny c d sta llowtr),y addrl ursprunganfang I verschieben)/ temp.facl c07 cb iny cOB Ba txa c d sta I lowtr J, y addrl ursprunganfang (verschieben)/ temp.facl c0b 20 c4 9c jsr umult feldgrösse berechnen c0e B6 B2 stx fbufpt addrl zeiger fac-puffer lfout-rout. J c70 B5 B3 sta fbufpt+7 addrh zeiger fac-puffer lfout-rout.) c72 a4 22 ldy index7 addrl indirekter index # c 74 c6 Oe dec count allgemeiner zähler c76 do dc bne loppta c7B adc highds + 7 addrh zielende!verschieben/ temp. facll c7a bo 60 bcs omerr7 ausgabe '?out of memory error ready 465B 9c7c B5 65 sta highds+7 addrh zielende I verschieben/ temp.fac#l c7e ab tay c 7f Ba txa c adc highds addrl zielende (verschieben)/ temp.fac# c bcc grease c24 cb iny c25 fo 55 beq omerr7 ausgabe '?out of memory error ready c27 20 Be ba grease jsr mapusr umsch. auf bank # c2a BB jsr reason test speicherplatz für variable c2d B5 39 sta strend addrl ende benutzter ram-bereich c2f 84 Ja sty strend+1 addrh ende benutzter ram-bereich c ba jsr mapary umsch. auf bank # c34 a9 00 lda #$ c36 e6 83 inc fbufpt+7 addrh zeiger fac-puffer lfout-rout. J

127 610/710 basic-math2 hard+soft asslreass... seite 009B zeile adr. obj.-code source-code c3B a4 B2 ldy fbufpt addrl zeiger fac-puffer (fout-rout.} c3a fo 05 beq deccur c3c BB zeri ta dey c3d sta (highds},y addrl zielende (verschieben!/ temp.facll c3f do fb bne zerita c41 c6 65 deccur dec highds+ I addrh zielende (verschieben/ temp. facll 467B 9c0 c6 B3 dec fbufpt+l addrh zeiger fac-puffer ( fout-rout. I cH do f5 bne zerita 46BO 9cH e6 65 inc highds+ I addrh zielende (verschieben/ temp. fac#l 46BI 9c49 3B sec 46B2 9c4a a5 39 lda strend addrl ende benutzter ram-bereich 46B3 9c4c e5 6d sbc lowtr addrl ursprunganfang (verschieben}/ temp. facl c4e ao 02 ldy 1$02 46B5 9c d sta (lowtrl,y addrl ursprunganfang (verschieben!/ temp. facl2 46B6 9c52 a5 3a lda strend+l addrh ende benutzter ram-bereich c54 cb iny 46BB 9c55 e5 6e sbc lowtr+l addrh ursprunganfang (verschieben} temp. facl2 46B9 9c d sta (lowtr},y addrl ursprunganfang (verschieben}/ temp. facl c59 a5 10 lda dimflg dim-flag für zeigersuche auf variable c5b do 64 bne dimrts c5d cb iny c5e c5e c5e ===> suche nach richtigem matrixelement <=== c5e c5e bl 6d getdef lda (lowtr}.y addrl ursprunganfang (verschieben!/ temp. facl c60 B5 Oe sta count allgemeiner zahler c62 a9 00 lda 1$00 HOO 9c64 B5 B2 sta fbufpt addrl zeiger fac-puffer (fout-rout. I HOl 9c66 B5 B3 inlpnm sta fbufpt+ I addrh zeiger fac-puffer ( fout -raut. I c6B cb iny H03 9c69 6B pla c6a aa tax H05 9c6b B5 H sta facmo fac II: mantisse c6d 6B pla H07 9c6e B5 75 sta faclo fac II: mantisse HOB 9c70 bl 6d lda (lowtrl,y addrl ursprunganfang (verschieben}/ temp.facl c72 c8 iny c73 c5 75 cmp faclo fac II: mantisse c75 fo OB beq inlpno c77 bo Oe bcs inlpn I c79 4c a4 9b bserr7 jmp bserr ausgabe "?bad subscript error ready c7c c7c c7c 4c omerr1 jmp omerr ausgabe "?out of memory error ready c7f

128 610/710 basic-math2 hard+soft ass/reass... seite 0099 zeile adr. obj.-code source-code c7f c7f H c81 9c83 9c85 9c87 9c89 9c8b 9c8c 9c8e 9c91 9c92 9c94 9c95 9c96 9c98 9c9a 9c9c 9c9e 9ca0 9ca2 9ca4 9ca6 9ca9 9cab 9cad 9cbO 9cbl 9cb3 9cb5 9cb cbB cba cbb cbd cbf cc I cc cc4 bl 6d c5 74 fo f4 90 f2 a B2 IB fo Oa 20 c4 9c Ba aa 9B a B6 B2 c6 Oe do c6 B5 83 a2 05 a c6 9b B6 2a a cd 9c Ba B5 51 9B B5 52 ab a5 51 a2 02 B6 53 4c Be ba inlpno lda (lowtr),y cmp facmo beq bserr7 bcc bserr7 inlpnl lda fbufpt+l ora fbufpt clc beq addind jsr umult txa adc facmo tax tya ldy index I addind adc faclo s tx fbufpt dec count bne inlpnm sta fbufpt+ I ldx #$05 lda varnam+l jsr savh stx resmo lda #$00 jsr umultd txa adc highds sta varpnt tya adc highds+l sta varpnt+ I tay lda varpnt ldx #$02 stx varpnt+2 dimrts jmp mapusr cc4 ===> feldgrösse berechnen <=== cc cc4 B cc6 bl 6d ccB 9cca 9ccb 9ccd 9ccf 9cdl B5 2a BB b I 6d B5 2b a9 10 B5 6b cd3 a cd5 ao oo cd7 Ba umult sty indexl lda (lowtr),y s ta resmo dey lda (lowtr),y umultd sta reslo lda #$10 sta lowds+1 ldx 11$00 ldy #$00 umultc txa addrl ursprunganfang (verschieben)/ temp. facll2 fac 111: mantisse addrh zeiger fac-puffer (fout-rout.) addrl zeiger fac-puffer (fout-rout.j feldgrösse berechnen fac #1: mantisse addrl indirekter index #1 fac 111: mantisse addrl zeiger fac-puffer (fout-rout. J allgemeiner zähler addrh zeiger fac-puffer (fout-rout. J zweites zeichen akt. variablenname Zwischenergebnis multipl./division addrl zielende (verschieben)/ temp. fac#l addrl zeiger auf variable im ram addrh zielende (verschieben/ temp.fac#1 addrh zeiger auf variable im ram addrl zeiger auf variable im ram bank zeiger auf variable im ram umsch. auf bank # 1 addrl indirekter index #1 addrl ursprunganfang (verschieben)/ temp.fac#2 Zwischenergebnis multipl.ldivision addrl ursprunganfang (verschieben)/ temp. fac#2 zwischenergebnis multipl./division addrh zielanfang (versch. )/ bytes vor dez.punkt

129 610/710 basic-math2 hard+soft ass/reass.... seite 0100 zeile adr. obj.-code source-code cd8 oa asl a cd9 aa tax cda 98 tya cdb 2a rol a cdc ab tay Cdd bo 9d bcs omerrl ausgabe?out of memory error ready cdf asl fbufpt addrl zeiger fac-puffer lfout-rout. I ce7 26 B3 rol fbufpt+ 1 addrh zeiger fac-puffer lfout-rout.j ce3 90 Ob bcc umlcnt ce5 IB clc ce6 Ba txa ce7 65 2a adc resmo Zwischenergebnis multipl./division ce9 aa tax cea 9B tya ceb 65 2b adc reslo zwischenergebnis multipl./division ced a8 tay cee bo Be bcs omerrl ausgabe "?out of memory error ready cf0 es Sb umlcnt dec lowds+l addrh zielanfang lversch. II bytes vor dez.punkt cf2 do e3 bne umultc cf4 60 rts cf cf cf5 ===> basic-routine fre <=== cf!i cf5 a5 11 fre lda valtyp flag für variablen typ IO=num. l=stringl cf7 fo 08 beq frefio cf9 20 e9 ab jsr frefac stringverwaltung, freier string cfc a2 02 ldx #$02 419B 9cfe 4c 19 9d jmp frefst garbage, freien platz berechnen d d d01 20 d9 b4 frefio jsr conint zahl < 256 aus akt. text nach xr d04 eo 01 cpx #$ d06 do Od bne frefbo d08 38 sec d09 a5 88 lda buffpt addrl zeiger auf eingabe-puffer d0b es 2f sbc txtend addrl zeiger ende basic-text d0d ab tay d0e a5 89 lda buffpt+l addrh zeiger auf eingabe-puffer d10 e5 30 sbc txtend+l addrh zeiger ende basic-text dl2 4c 2c 9d jmp nos1ft dl d dl5 eo 02 fref80 cpx #$ dl 7 do 10 bne fref dl dl dl9 ===> garbage. freien platz berechnen <=== 4BI8 9d dl9 20 b5 ad frefst jsr garba2 garbage collect (müll entfernen} d1c 38 sec dld a5 3b lda fretop addrl top of string free space dlf e5 39 sbc strend addrl ende benutzter ram-bereich d21 ab tay

130 610/710 basic-math2 hard+soft ass/reass.... seite 0101 zeile adr. obj.-code source-code d22 a5 3c lda fretop+l addrh top of string free space d24 e5 3a sbc strend+l addrh ende benutzter raro-bereich d26 4c 2c 9d jmp noslft d d d29 a9 00 fref70 lda 11$ d2b ab tay d2c 20 3f 9d nos1ft jsr stoint umwandlung integer nach real d2f 38 sec d30 4c 20 a2 jmp floate ende umw. fliesskomma d d d33 ===> basic-routine pos <=== d d33 38 pos sec d34 20 fo ff jsr kplot x,y-pos. des cursor lesen/schreiben d37 a9 00 sngflt lda 11$ d d d39 ===> umw. integer nach real <=== d d f 9d givayf jsr stoint umwandlung ~nteger nach real d3c 4c lb a2 jmp floats d3f d3f d3f ===> umwandlung integer nach real <=== d3f d3f a2 00 stoint ldx 11$ d41 86 II stx valtyp flag für variablen typ IO=num, l=string) d sta facho fac 111: mantisse d sty facmoh fac 111: mantisse d47 a2 90 ldx 11$ d49 60 storts rts d4a d4a d4a ===> test direkt, ausgabe '?illegal direct error ready <=== d4a d4a d errdir jsr ts tdir test direktmodus, hi-byt zeile=$ff d4d do fa bne storts d4f a2 3e ldx 11$3e d51 2c.byte $2c d d d52 ===> ausgabe '?undefined function error ready <=== d d52 az 4a errguf ldx ll$4a d54 4c jmp error ind. jmp zur Fehlerroutine d d d57 ===> test direktmodus, hi-byt zeile=$ff <=== d d57 a5 43 tstdir lda curlin+l hi -byte akt. Zeilennummer d59 c9 ff cmp ll$ff d5b 60 rts d5c d5c d5c ===> fn variable suchen I anlegen <===

131 610/710 basic-math2 hard+soft ass/reass... seite 0102 zeile adr. obj.-code source-code d71 9d5c 9d5c a9 a5 9d5e d d d d b 9d6a 84 5c 9d6c 86 5d 9d6e 4c 04 b5 9d71 getfnm lda lt$a5 jsr synchr ora lt$80 sta subflg jsr ptrgt2 sta defpnt sty defpnt+l stx defpnt+2 jmp chknum d71 ===> umwandlung 'fnx <=== d d dl d d d d7a d7c d7d d d d d d d d8a d8c 49 II 9d8e d d d d d d d9a d9c d9e 9d9f 9da I 9da3 9da5 9da 7 9da8 9da9 9dab 9dad 9daf 9db2 9db4 9db5 9db7 9db8 9dba 20 5c 9d a5 5d 48 a5 5c 48 a5 5b b b c d ao 02 b I 5b aa c8 b I 5b fo b4 c8 b I 5b bl fa a4 52 a a5 a I a a a5 5d fndoer jsr getfnm lda defpnt+2 pha lda defpnt+l pha lda defpnt pha jsr parchk jsr chknum pla sta defpnt pla sta defpnt+l pla sta defpnt+2 sta i6509 ldy lt$02 lda ldefpntl,y s ta varpnt tax iny lda (defpntl,y sta varpnt+l ora varpnt beq errguf iny lda ldefpntl,y sta varpnt+2 sta i6509 fndo50 lda lvarpntl,y pha dey bpl fndo50 ldy va rpn t >I lda varpnt+2 jsr movumf lda txtptr+l pha lda txtptr pha lda defpnt+2 sta i6509 test:folgt ascii o. token im akt. text, sonst error flag für indizierte variable sucht variable oder legt sie an addrl zeiger funkt.-def./ temp.faclt3 addrh zeiger funkt.-def./ temp.fac#3 bank zeiger funkt.-def./ temp.fac#3 prüfen, ob numerische variable 'fn' variable suchen I anlegen bank zeiger funkt.-def./ temp.fac#3 addrh zeiger funkt.-def./ temp.faclt3 addrl zeiger funkt.-def./ temp.fac#3 test I' 'I', sonst fehler, ready prüfen, ob numerische variable addrl zeiger funkt.-def./ temp.fac#3 addrh zeiger funkt.-def./ temp.fac#3 bank zeiger funkt.-def./ temp.fac# indirection register addrl zeiger funkt.-def./ temp.fac#3 addrl zeiger auf variable im ram addrl zeiger funkt.-def./ temp.fac#3 addrh zeiger auf variable im ram addrl zeiger auf variable im ram ausgabe '?undefined function error', ready addrl zeiger funkt.-def./ temp.fac#3 bank zeiger auf variable im ram 6509 indirection register addrl zeiger auf variable im ram addrh zeiger auf variable im ram bank zeiger auf variable im ram fac #I runden,nach xr, yr addrh zeigerauf akt. term addrl zeiger auf akt. term bank zeiger funkt.-def./ temp.fac# indirection register

132 670/770 basic-mathz hard+soft asslreass... seite 0103 zeile adr. obj.-code source-code B B dbc 9dbe 9dc0 9dc1 9dc3 9dc5 9dcB 9dca 9dcb 9dcd 9dce 9dd0 9dd1 9dd4 9dd5 9dd7 9ddB 9dda 9ddb 9ddd B 9de0 9de de de5 bl Sb BS BS cb bl Sb B5 B6 20 Be ba a5 53 4B as 52 4B a5 57 4B b5 6B B5 Sb 6B BS 5c 6B B5 5d ba fo 03 4c H 97 lda ldefpntl,y sta txtptr iny lda (defpntl,y sta txtptr l jsr mapusr lda varpnt+z pha lda varpnt+l pha lda varpnt pha jsr frmnum pla sta defpnt pla sta defpnt+l pla sta defpnt+z jsr chrgot beq deffi jmp snerr de5 ===> prg./funkt.-zeiger vom stack holen <=== de de5 6B de6 B5 B deB 6B de9 B5 B deb 496B 9deb deffi pla sta txtptr pla sta txtptr+l deb ===> Funktionen-zeiger vom stack holen <=== deb deb ded def df df df df5 497B 9df dfB 49BO 9df9 49B7 9dfa 49B2 9dfc 49B3 9dfd 49B4 9dfe 49BS 9e00 49B6 9e0 7 49B7 9e02 49BB 9e04 49B9 9e e e e e07 as 5d BS 01 ao 00 6B 91 Sb 6B cb 91 Sb 6B cb 91 5b 6B cb 97 Sb 6B cb 91 Sb 4c Be ba deffin lda defpnt+z sta i6509 ldy #$00 pla sta (defpntj,y pla iny sta (defpntl,y pla iny sta (defpntj,y pla iny sta (defpnt},y pla iny sta (defpnt I. y jmp mapusr ===> basic-routine "peek" <=== as lc peek lda linnum+l addrl zeiger funkt.-def./ temp.facl3 addrl zeiger auf akt. term addrl zeiger funkt.-def./ temp.facl3 addrh zeiger auf akt. term umsch. auf bank I 1 bank zeiger auf variable im ram addrh zeiger auf variable im ram addrl zeiger auf variable im ram numerischen ausdruck holen addrl zeiger funkt.-def./ temp.facl3 addrh zeiger funkt.-def./ temp.facl3 bank zeiger funkt.-def./ temp.facl3 letztes zeichen erneut nach ac (indirekter sprung} prg./funkt. -zeiger vomstackholen ausgabe "?syntax error, ready addrl zeiger auf akt. term addrh zeiger auf akt. term bank zeiger funkt.-def./ temp.facl indirection register addrl zeiger funkt.-def./ temp.fac#3 addrl zeiger funkt.-def./ temp.facl3 addrl zeiger funkt.-def./ temp.fac#3 addrl zeiger funkt.-def./ temp.facl3 addrl zeiger funkt.-def./ temp.fac#3 umsch. auf bank # 7 hi-byte akt. zeilennummer

133 610/710 basic-math2 hard+soft ass/reass.... seite 0104 zeile adr. obj.-code source-code e09 U e0a a5 lb e0c e0d 20 eb b el el el el el elb elc eld elf e e e e e27 a6 01 ad ao oo bl lb ab lb lc c 3 7 9d pha lda linnum pha jsr getadr ldx i6509 lda dfbank sta i6509 ldy 1$00 lda I linnum I, y tay pla sta linnum pla sta linnum+l stx i6509 jmp sngfl t lo-byte akt. Zeilennummer gk-zahl in fac als adresse nach $11.$ indirection register vorgabe für bank-nummer 6509 indirection register lo-byte akt. Zeilennummer lo-byte akt. Zeilennummer hi-byte akt. Zeilennummer 6509 indirection register e27 ===> fac II <=== e e27 a9 Oe faddh lda l$0e e29 ao a5 ldy l$a e2b do ld bne fadd konstante in arg, fac arg+fac e2d e2d e2d ===> konstante in arg, fac = arg-fac <=== e2d e2d 20 5c ao fsub jsr conupk holt arg lo=ac, hi=yr in fac e e e30 ===> basic-routine - (dez. subtr. I <=== e e30 9e33 9e e a e 85 7f fsubt jsr sav41 eor argsgn sta arisgn e37 9e e3c e3c e3c e3e e e e eH e e45 a5 71 4c 4d 9e a4 89 a6 88 do ca 60 lda facexp jmp faddt sav75 ldy buffpt+l ldx buffpt bne sav76 dey sav76 dex zerrts rts 'facsgn' invertieren fac-arg ungepackt: vorzeichen fac-arg ungepackt: Vorzeichenduplikat fac #1: exponent basic-routine + (dez. add. I addrh zeiger auf eingabe-puffer addrl zeiger auf eingabe-puffer e45 ===> exp. gleichsetzen, konstante holen, fac = arg+fac <=== e e f fadd5 jsr shi ftr schiebt fac rechts bis exp. 50H 9e c bcc fadd e4a 9e4a e4a ===> konstante in arg, fac = arg+fac <=== e4a e4a 20 5c ao fadd jsr conupk holt arg lo=ac, hi=yr ~n fac #2 0

134 610/710 basic-mathz hard+soft ass/reass.... seite 0105 zeile adr. obj.-code source-code e4d e4d e4d 9e4d ===> basic-routine (dez. add.l <=== e4d do 03 faddt bne faddb eH 4c d3 al jmp movfa e52 copy arg nach fac " yr e e52 a6 80 faddb ldx facov fac overflow-byte e stx jmper+2 addrh sprung zu functions-rout e56 az 79 ldx 1$ e58 a5 79 lda argexp fac-arg ungepackt: exponent e5a ab faddc tay e5b fo e7 beq zerrts e5d 38 sec e5e e5 71 sbc facexp fac II: exponent e60 fo 24 beq fadd e bcc fadda e sty facexp fac #1: exponent e66 a4 Te ldy argsgn fac-arg ungepackt: vorzeichen e6B sty facsgn fac #1: vorzeichen e6a 49 ff eor l$ff e6c adc 1$ e6e ao 00 ldy 1$ e sty jmper+2 addrh sprung zu functions-rout e12 a2 71 ldx 1$ e74 do 04 bne faddl e76 ao 00 fadda ldy tf$ e sty facov fac overflow-byte e7a c9 (9 faddl cmp 1$f e7c 30 c7 bmi fadd5 exp. gleichsetzen, konstante holen, fac = arg+fac e7e ab tay e7f a5 80 lda facov fac overflow-byte eB I lsr i6509,x 6509 indirection register e f jsr rolshf schiebt fac bitweise nach rechts e f fadd4 bit arisgn fac-arg ungepackt: Vorzeichenduplikat eBB bpl fadd2 mantissen-add. bei gleichen vorz e8a ao 71 ldy #$ eBc eo 79 cpx 1$ eBe fo 02 beq subit e90 ao 79 ldy 1$ e92 38 subit sec e93 49 ff eor l$ff e adc jmper+2 addrh sprung zu functions-rout e sta facov fac overflow-byte e99 b lda usrpok+2,y addrh der 'usr'-routine e9c f5 04 sbc usrpok 2,x addrh der usr -routine e9e sta faclo fac 11: mantisse ea0 b lda usrpok+l, y addrl der usr' -routine ea3 f5 03 sbc usrpok+ 1, x addrl der "usr'-routine ea sta facmo fac II: mantisse ea7 b lda usrpok,y jmp code fur user-routine eaa f5 02 sbc usrpok,x jmp code für user-rout1ne eac sta facmoh fac 11: mantisse eae b lda i6509,y 6509 indirection register ebl f5 0 I sbc i6509,x 6509 indirection register

135 610/710 basic-math2 hard+soft ass/reass.... seite 0!06 zeile adr. obj.-code source-code eb sta facho fac #!: mantisse eb eb eb5 ===> macht fac linksbündig <=== eb eb5 bo 03 fadflt bcs normal fac linksbündig machen eb7 20 2a 9f jsr negfac mantisse von fac invertieren eba eba eba eba ===> fac linksbündig machen <=== eba ao 00 normal ldy #$ ebc 98 tya ebd 18 clc ebe a6 72 norm3 ldx facho fac #I: mantisse eco do 4a bne norml ec2 a6 73 ldx facmoh fac #I: mantisse ec stx facho fac #I: mantisse ec6 a6 H ldx facmo fac #I: mantisse ec stx facmoh fac #I: mantisse eca a6 75 ldx faclo fac #!: mantisse ecc 86 H stx facmo fac #!: mantisse ece a6 80 ldx facov fac overflow-byte ed stx faclo fac #!: mantisse ed sty facov fac overflow-byte ed4 69 OB adc #$ ed6 c9 20 cmp #$ ed8 do e4 bne norm Seda eda 5136 Seda 5137 Seda ===> fac auf 00 setzen <=== eda a9 00 zerofc lda #$ edc zerofl sta facexp fac #1: exponent 5140 Sede zeroml sta facsgn fac #I: vorzeichen 5H1 SeeO 60 rts eel 5143 See I 51H 9eel ===> mantissen-add. bei gleichen vorz. <=== eel 5146 See I fadd2 adc jmper+2 addrh sprung zu functions-rout ee sta facov fac overflow-byte ee5 a5 75 lda faclo fac #I: mantisse 5149 See d adc arglo fac-arg ungepackt: mantisse ee sta faclo fac #1: mantisse eeb a5 74 lda facmo fac II: mantisse 5152 Seed 65 7c adc argmo fac-arg ungepackt: mantisse 5153 Seef sta facmo fac #1: mantisse efl a5 73 lda facmoh fac II: mantisse 5155 Sef3 65 7b adc argmoh fac-arg ungepackt: mantisse ef sta facmoh fac #1: mantisse ef7 a5 72 lda facho fac.,, mantisse 5158 Sef9 65 7a adc argho fac-arg ungepackt: mantisse efb sta facho fac #I: mantisse efd 4c 19 9f jmp squeez wenn nötig, Überlaufstelle einsch f f f norm2 adc #$0 1

136 610/710 basic-math2 hard+soft ass/reass.... seite 0107 zeile adr. obj.-code source-code f f f f f0a f0c f0e f0f f f f f f f H f2 38 e5 71 bo c7 49ff norm1 asl facov rol faclo rol facmo rol facmoh rol facho bpl norm2 sec sbc facexp bcs zerofc eor l$ff adc #$0 1 sta facexp fac overflow-byte fac 11: mantisse fac #1: mantisse fac 11: mantisse fac #1: mantisse fac 11: exponent fac auf 00 setzen fac 11: exponent f19 ===> wenn nötig, Überlaufstelle einsch. <=== f f f1b f1d f1f f f f f f f2a f2a 90 Oe e6 71 fo 3f H squeez bcc rndrts rndshf inc facexp beq overr ror facho ror facmoh ror facmo ror faclo ror facov rndrts rts f2a ===> mantisse von fac invertieren <=== f2a f2a 20 7e a5 negfac jsr sav f2d f2d f2d ===> mantisse von fac invertieren <=== f2d f2d f2f f f f f f f3b f3d f3f f H f H f Hb Hd fH f f f f f f5b a ff a ff a5 H 49 ff 85 H a ff a ff e6 80 do Oe e6 75 do Oa e6 H do 06 e6 73 do 02 e6 72 negfch lda facho eor l$ff sta facho lda facmoh eor #$ff s ta facmoh lda facmo eor l$ff sta facmo lda faclo eor #$ff s ta faclo lda facov eor 1$ff sta facov inc facov bne incfrt incfac inc faclo bne incfrt inc facmo bne incfrt inc facmoh bne incfrt inc facho fac 11: exponent ausgabe '?overflow error', ready fac 11: mantisse fac 11: mantisse fac 11: mantisse fac #1: mantisse fac overflow-byte 'facsgn' invertieren fac #1: mantisse fac #1: mantisse fac 11: mantisse fac #1: mantisse fac #1: mantisse fac #1: mantisse fac 11: mantisse fac #1: mantisse fac overflow-byte fac overflow-byte fac overflow-byte fac #1: mantisse fac 11: mantisse fac #1: mantisse fac #1: mantisse

137 610/710 basic-math2 hard+soft ass/reass seite 010B zeile adr. obj.-code source-code f5d 60 incfrt rts f5e f5e f5e ===> ausgabe?overflow error ready <=== f5e f5e a2 32 overr ldx #$32 522B 9f60 4c 52 B5 jmp error ind. jmp zur fehlerroutine f f f63 ===> register rechts schieben <=== f f63 a2 27 mulshf ldx #$ f65 b4 04 shftr2 ldy usrpok+z,x addrh der usr -routine f67 B4 BO sty facov fac overflow-byte f69 b4 03 ldy usrpok+1,x addrl der usr -routine f6b sty usrpok+2,x addrh der usr -routine 523B 9f6d b4 02 ldy usrpok,x jmp code für user-routine f6f sty usrpok+ 1, x addrl der usr -routine fl1 b4 01 ldy i6509,x 6509 indirection register f sty usrpok,x jmp code für user-routine f75 a4 7B ldy bits shift-zähler 520 9f sty i6509,x 6509 indirection register 52H 9f f f79 ===> schiebt fac rechts bis exp. 0 <=== 52H 9f f shi ftr adc #$OB f7b 30 eb bmi shftr f7d fo e6 beq shftr f7f e9 OB sbc #$ fB1 ab tay fB2 a5 BO lda facov fac overflow-byte f84 bo bcs shftrt fB shftr3 asl i6509,x 6509 indirection register " fB bcc shftr fBa f6 01 inc i6509,x 6509 indirection register f8c shftr4 ror i6509,x 6509 indirection register f8e ror i6509,x 6509 indirection register f f f90 ===> schiebt fac bitweise nach rechts <=== f f rolshf ror usrpok,x jmp code für user-routine f ror usrpok+ 1, x addrl der usr -routine f ror usrpok+2,x addrh der usr -routine f96 6a ror a f97 cb iny f98 do ec bne shftr f9a 18 shftrt clc f9b 60 rts f9c 9f9c 9f9c e~ns ===> konstante <=== f9c f9c 8 I fone.byte $81, soo. $00, $00. $ f9d f9e f9f 00

138 610/710 basic-math2 hard+soft ass/reass.... seite 0109 zeile adr. obj.-code source-code fa fa I fa I fa I ===> konstanten für funktion 'log (polynomgrad 31 <=== fa I fa I 03 logcn2.byte $ fa2 7f.byte $7f' $5e, $56, $cb, $79 konstante für 'log fa3 5e fa fa5 cb fa fa 7 80.byte $80, $13, $9b, $Ob, $64 konstante für 'log fa fa9 9b faa Ob fab fac 80. byte $80, $76, $38, $93, $16 konstante für 'log fad fae faf fb fbl 82.byte $82, $38, $aa, $3b, $20 konstante für 'log fb fb3 aa fb4 3b fb fb fb fb6 ===> = 1/2 sqr 2 <=== fb fb6 80 sqr05.byte $80, $35, $04, $f3, $ fb fb fb9 f fba fbb fbb fbb ===> = sqr 2 <=== fbb fbb 81 sqr20.byte $81' $35, $04, $f3, $ fbc fbd fbe f fbf fc fc fc0 ===> -0.5 <=== fc fc0 80 neghlf.byte $80, $80, $00, $00, $ fcl fc fc fc fc5

139 610/710 basic-math2 hard+soft ass/reass... seite 0110 zeile adr. obj.-code source-code fc fc5 ===> = logl21 <=== 530, 9fc fc5 80 log2. byte $80, $3 I' $72, s I 7' $f fc6 3 I fc fc8 I fc9 f fca fca.end fca.lib math3

140 610/710 basic-math3 hard+soft ass/reass.... seite 0111 zeile adr. obj.-code source-code II fca fca 53" 9fcd fcf fdl 9fca 9fca ===> basic-routine 'log' <=== a2 fo c a7 9b log jsr sign beq logerr bpl log I logerr jmp fcerr vorzeichentest fac #I ausgabe '?illegal quantity error ready fd fd4 9fd4 9fd6 9fd8 9fd9 9fdb 9fdd 9fdf a5 71 e9 7f 48 a a9 b6 ao 9f log I lda facexp sbc 1$ 7f pha lda 1$80 sta facexp lda #$b6 ldy 1$9f fac #1: exponent fac #1: exponent fe I 9fe4 9fe6 20 4a 9e a9 bb ao 9f jsr fadd lda 1$bb ldy l$9f konstante in arg. fac arg+fac fe8 9feb 9fed 20 e6 ao a9 9c ao 9f jsr fdi v lda l$9c ldy l$9f holt wert in arg, fac arg I fac fef 9ff2 9ff4 9ff6 9ff9 20 2d 9e a9 a I ao 9f a6 a9 co jsr fsub lda l$a I ldy l$9f jsr polyx lda #$c0 konstante in arg, fac polynom-auswertung arg-fac ffb 9ffd ao 9f 20 4 a 9e ldy 1$9f jsr fadd konstante in arg, fac = arg+fac 5339 aooo 68 pla 5340 aooi a3 jsr finlog liest ascii (0.. 9) aus basic 5341 a004 a9 c5 lda #$c a006 ao 9f ldy #$9f H a008 a a008 ===> holt wert in arg fac = arg fac <=== 5346 a a c ao fmult jsr conupk holt arg lo=ac, hi=yr in fac # aoob 5349 aoob 5350 aoob ===> basic-routine ' (dez. multipl. J <=== 535 I aoob I aoob aood aoio a012 ao 14 a016 aoib aoia adle ao lf a021 a024 a026 a029 a02b fo 4e 20 Be ao a a 85 2b a ao a ao a ao a ao fmultt beq multrt jsr muldiv lda #$00 sta resho sta resmoh sta resmo sta reslo lda facov jsr mltply lda faclo jsr mltply lda facmo jsr mltply lda facmoh jsr mltply korrektur von fac u. arg Zwischenergebnis multipl./division Zwischenergebnis multipl./division Zwischenergebnis multipl./division Zwischenergebnis multipl./division fac overflow-byte multiplikation I bit fac II: mantisse multiplikation I bit fac #1: mantisse multiplikation I bit fac "1: mantisse multipl~kation I bit

141 610/710 basic-math3 hard+soft ass/reass.... seite 0112 zeile adr. obj.-code source-code 5367 a02e 5368 a a a a036 a b ao 4c 5a a 7 lda facho jsr mltpl 7 jmp movfr 5372 a036 ===> multiplikation 7 bit <=== 5373 a a036 do 03 mltply bne mltpll 5375 a038 4c 63 9f jmp mulshf 5376 a03b a03b 5378 a03b 5379 a03c 5380 a03e a03f a041 aoh aoh aoh a048 a04a a04b a04d aoh a051 a053 a055 a057 4a ab 90 Oe 18 a2 03 b a ca 10 f a 66 2b a058 4a 5396 a059 do e a05b a05c 5399 a05c mltpll lsr a ora 1$80 mltpl2 tay bcc mltpl3 clc ldx 1$03 mltpl4 lda resho,x adc argho,x sta resho,x dex bpl mltph mltpl3 ror resho ror resmoh ror resmo ror reslo ror facov tya lsr a bne mltpl2 multrt rts 5400 a05c ===> holt arg lo=ac, hi=yr in fac #2 <=== 5401 a05c a05c a05e a060 a062 a064 a066 a068 a06a a06b a06d a06f a070 a072 ao 74 a075 a077 a079 aolb a2 Of ao 04 b d 88 b lc 88 b b 88 b le f conupk ldx I$Of ucnupk stx i6509 sta indexl sty index1+1 ldy 1$04 lda lindexl},y s ta arglo dey lda lindex1j,y sta argmo dey lda lindexli,y sta argmoh dey lda I index 7 I. y sta argsgn eor facsgn sta arisgn aold aolf a08 7 a083 a5 le la 88 lda argsgn ora #$80 sta argho dey fac 11: mantisse erg. nach fac, linksbündig machen register rechts schieben Zwischenergebnis multipl./division fac-arg ungepackt: mantisse Zwischenergebnis multipl./division Zwischenergebnis multipl./division Zwischenergebnis multipl./division Zwischenergebnis multipl./division Zwischenergebnis multipl.ldivision fac overflow-byte 6509 indirection register addrl indirekter index #1 addrh indirekter index 11 addrl indirekter index 11 fac-arg ungepackt: mantisse addrl indirekter index #1 fac-arg ungepackt: mantisse addrl indirekter index 11 fac-arg ungepackt: mantisse addrl indirekter index #1 fac-arg ungepackt: Vorzeichen fac #1: vorzeichen fac-arg ungepackt: VOrzeichenduplikat fac-arg ungepackt: Vorzeichen fac-arg ungepackt: mantisse

142 610/710 basic-math3 hard+soft ass/reass.... seite 0113 zeile adr. obj.-code source-code 5424 a084 bl 22 lda lindexl I. y addrl indirekter index 5425 a Be ba jsr mapusr ums eh. auf bank # I 5426 a sta argexp fac-arg ungepackt: exponent 5427 aobb a5 7 I lda facexp fac #1: exponent 5428 a08d 60 rts 5429 aobe 5430 a08e 5431 aobe ===> korrekt ur von fac u. arg <=== 5432 aobe 5433 aobe a5 79 muldi v lda argexp fac-arg ungepackt: exponent 5434 a090 fo lf mldexp beq zeremv 5435 a clc 5436 a I adc facexp fac #1: exponent 5437 a bcc tryoff 5438 a ld bmi goover 5439 a clc 5HO a09a Zc.byte $2c 5HI a09b tryoff bpl zeremv 5HZ a09d adc #$80 5H3 a09f 85 7 I sta facexp fac #1: exponent 5H4 aoa I do 03 bne muld 5H5 a0a3 4c de 9e jmp zeroml 5H6 a0a6 5H7 a0a6 5H8 a0a6 a5 7f muld lda arisgn fac-arg ungepackt: vorzeichenduplikat 5H9 aoab sta facsgn fac #1: vorzeichen 5450 aoaa 60 rts 5451 aoab 5452 aoab 5453 aoab a5 76 mldvex lda facsgn fac #1: vorze~chen 5454 aoad 49 ff eor #$ff 5455 aoaf bmi goover 5456 aobl 68 zeremv pla 5457 a0b2 68 pla 5458 a0b3 4c da 9e jmp zerofc fac auf 00 setzen 5459 a0b a0b a0b6 4c 5e 9f goover jmp overr ausgabe?overflow error ready 5462 a0b a0b a0b9 ===> multiplikation fac #1 fac 10 <=== 5465 a0b aob9 20 e3 a 1 mul10 jsr movaf copy fac #1 nach arg 5467 aobc aa tax 5468 aobd fo 10 beq mul10r 5469 aobf 18 clc 5470 aoco adc #$ a0c2 bo f2 bcs goover 5472 aoc4 a2 00 ldx #$ a0c6 86 7f stx ar~sgn fac-arg ungepackt: Vorzeichenduplikat 5474 aocb 20 5a 9e jsr faddc 5475 aocb e6 71 ~nc facexp fac #1: exponent 5476 aocd fo el beq goover aocf 60 mul10r rts 5478 aodo 5479 aodo "

143 basic-math3 hard+soft asslreass... seite 0114 zeile adr. obj.-code source-code 5480 aodo ===> gleitkommakonstante 10 <=== 5481 aodo 5482 aodo 84 tenc.byte $84, $20, $00, $00, $ aodl a0d a0d3 oo 5482 a0d a0d a0d5 a0d5 ===> division fac II = fac I 10 <=== aod a0d aodb 5489 aoda 5490 aodc 5491 aode 5492 aoeo 5493 aoe aoe a0e " aoeb aoee aofo aofl a0f3 a0f5 a0f8 aofa aofc aofe aioo al02 a 104 al06 al08 aioa aioc aioe a 110 a 112 a 114 a 116 a 117 a 118 a lla a llb alld a llf 20 e3 a 1 a9 do ao ao a f al 4c e9 ao 20 f2 a 1 a e Be ao e6 71 fo ba a2 fc a9 01 a 4 7a c4 72 do 10 a4 7b c4 73 do Oa a4 7c c4 74 do 04 a4 7d c a e8 95 2b fo 2e divio jsr movaf lda l$d0 ldy ISao ldx 1$00 fdivf stx arisgn jsr movfm jmp fdi vt jsr round lda #$00 sec sbc facexp sta facexp jsr muldiv inc facexp beq goover ldx l$fc lda #$01 divide ldy argho cpy facho bne savawo ldy argmoh cpy facmoh bne savawo ldy argmo cpy facmo bne savawo ldy arglo cpy faclo savawo php rol a bcc qshft inx sta reslo,x beq ld100 bpl divnrm copy fac II nach arg fac-arg ungepackt: vorzeichenduplikat vari adr.lo=ac, hi=yr nach fac II basic-routine "I" (dez. divisionl 5496 a0e6 ===> holt wert in arg, fac = arg I fac <=== 5497 aoe a0e6 20 5c ao fdiv jsr conupk holt arg lo=ac, hi=yr in fac aoe a0e a0e9 a0e9 ===> basic-routine "I" (dez. divisionl <=== 5503 a0e9 fo 5d fdivt beq dvoerr ausgabe "?division by zero error ready fac 11 rundung fac II: exponent fac 11: exponent korrektur von fac u. arg fac 11: exponent fac-arg ungepackt: mantisse fac 11: mantisse fac-arg ungepackt: mantisse fac 11: mantisse fac-arg ungepackt: mantisse fac 11: mantisse fac-arg ungepackt: mantisse fac 11: mantisse Zwischenergebnis multipl.ldivision

144 610/710 basic-math3 hard+soft ass/reass... seite 0115 zeile adr. obj.-code source-code B H al21 al23 al24 al26 ai2b al2a al2c al2e al30 al32 a 134 al35 al36 al37 al39 al3b al3d a9 a 1 2B bo ae 06 7d 26 7c 26 7b 26 7a bo e6 30 ce 10 e2 ab Ba 48 a2 03 b5 7a f a lda /t$0 I qshft plp bcs divsub shfarg asl arglo rol argmo rol argmoh rol argho bcs savawo bmi di vide bpl savawo di vsub tay txa pha ldx #$03 divsbl lda argho,x sbc facho,x sta argho,x 5549 al3f ca dex 5550 a n bpl divsbl 555 I a142 6B pla 5552 a143 aa tax 5553 aih 98 tya 5554 a145 4c 26 al jmp shfarg 5555 a 14B 5556 a 14B 5557 ai4b ===> ausgabe "?division by zero error, ready <=== 555B I B 5569 a14b a 148 aha a 14d a14d a 14d aih a 15 I al52 al53 a I 54 al al a a a 15a al5a al5a 5576 a 15a 5577 a 15a 557B a 15c 5579 a 15e 55BO al60 55BI al61 55B2 al63 55B3 al66 55B4 al66 55B5 55B6 a166 al66 55B7 a166 55BB ai6b 55B9 a16a a2 3c 4c a9 40 da d2 aa aa aa aa aa aa B5 Ba 2B dvoerr ldx #$3c jmp error ldioo lda #$40 bne qshft divnrm asl a asl a asl a asl a asl a asl a sta facov plp fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac-arg ungepackt: mantisse fac II: mantisse fac-arg ungepackt: mantisse ind. jmp zur Fehlerroutine fac overflow-byte ===> erg. nach fac, linksbündig machen <=== a2 03 movfr ldx #$03 b5 2B movfrz lda resho,x sta facho,x ca dex 10 f9 bpl movfrz 4c ba 9e jmp normal ===> vari adr.lo=ac, hi=yr nach fac II <=== a2 Of B5 22 B4 23 movfm ldx #$0f movfum sta indexl sty indexl+l Zwischenergebnis multipl./division fac II: mantisse fac linksbündig machen addrl indirekter index II addrh indirekter index II

145 610/710 basic-math3 hard+soft ass/reass.... seite 0116 zeile adr. obj.-code source-code al6c al6e a 170 a 172 aih a 175 al77 a 179 a 77a a 17c a 17e a 17f a IBI al83 al85 al87 aibb aiba aibc aibe al91 al ao 04 b I b I H 88 bl b I b I c Be ba stx i6509 ldy #$04 lda (indexl),y sta faclo dey lda (indexll,y sta facmo dey lda ( index I I, y sta facmoh dey lda ( index I I, y sta facsgn ora #$80 sta facho dey lda (indexl),y sta facexp sty facov jmp mapusr a 191 ===> fac #2 nach $6a-$6e <=== 5613 al al91 a2 6a 5615 al93 2c 5616 al al94 mov2f ldx #$6a.byte $2c 5618 al94 ===> fac #I nach $64-$68 <=== 5619 al a194 a al96 ao al al98 movlf ldx #$64 ldy #$ al98 ===> fac #I runden, nach xr yr <=== 5625 al al al9b 5628 al9d 5629 al9f 5630 al9f 20 f2 a I a9 Of 10 Ob movmf jsr round lda #$0f bpl movooi 5631 al9f ===> gk-zahl aus fac in variable <=== 5632 al9f 5633 al9f a alal a ala3 a ala ala5 movvf ldx lstpnt ldy lstpnt+l lda lstpnt ala5 ===> fac #I runden,nach xr, yr <=== 5639 ala ala " H ala6 ala9 alaa alac 20 f2 a I I alae albo ao alb2 a5 75 movumf pha jsr round pla movooi sta i6509 sty index1+1 stx index1 ldy #$04 lda faclo 6509 indirection register addrl indirekter index #I fac #1: mantisse addrl indirekter index #I fac #1: mantisse addrl indirekter index #I fac #I: mantisse addrl indirekter index #I fac #1: vorzeichen fac #1: mantisse addrl indirekter index #I fac #1: exponent fac overflow-byte umsch. auf bank # fac #7 rundung addrl zeiger letzter string addrh zeiger letzter string bank zeiger letzter string fac #1 rundung 6509 indirection register addrh indirekter index #I addrl ~ndirekter index #1 fac #1: mant~sse

146 610/710 basic-math3 hard+soft ass/reass.... seite 0117 zeile adr. obj. -code source-code 5648 alb alb alb alb albb 5653 albc 5654 albe 5655 alco 5656 a lc I 5657 alc alc alc alc9 566 I alca 5662 alcc 5663 alce 5664 aldo 5665 ald ald3 9 I a I a I a f I a I c Be ba sta lindexl},y dey lda facmo sta lindexll,y dey lda facmoh sta (indexl},y dey lda facsgn ora #$7f and facho sta lindexl},y dey lda facexp sta lindexl},y sty facov jmp mapusr 5667 ald3 ===> copy arg nach fac #1, yr <=== 5668 ald ald3 a5 7e movfa lda argsgn 5670 ald ald7 a ald9 b aldb aldd ca 5675 alde 5676 aleo ale ale ale3 do f movfal sta facsgn ldx #$05 movfal lda bits,x sta dsctmp,x dex bne movfal stx facov rts 5680 ale3 ===> copy fac #I nach arg<=== 5681 ale a1e3 a1e6 20 f2 1 a2 06 movaf movef jsr round ldx #$ a1e8 a lea a1ec a1ed alef a1f 1 b ca do f movafl lda dsctmp,x sta bits,x dex bne movafl stx facov movrts rts 5690 a1f a1f a!f2 ===> fac #1 rundung <=== 5693 a1f a1f2 a5 7! round 5695 a 1f4 fo fb 5696 a1f a 1 fb 90 f7 lda facexp beq movrts asl facov bcc movrts 5698 a1fa 5699 a1fa 5700 a1fa ===> mantisse von fac um 1 erhöhen <=== a202 a lfa a 1fa 20 H 9f a!fd do f2 a1ff 4c 1b 9f incrnd ]Sr incfac bne movrts jmp rndshf addrl indirekter index #I fac #1: mantisse addrl indirekter index #I fac #1: mantisse addrl indirekter index #I fac #1: vorzeichen fac #1: mantisse addrl indirekter index #I fac #1: exponent addrl indirekter index #I fac overflow-byte umsch. auf bank # I fac-arg ungepackt: vorzeichen fac #!: vorzeichen shift-zähler zeitweise descriptoren-ablage fac overflow-byte fac #1 rundung zeitweise descriptoren-ablage shift-zähler fac overflow-byte fac #1: exponent fac overflow-byte

147 610/710 basic-math3 hard+soft ass/reass.... seite 0118 zeile adr. obj.-code source-code 5706 a a202 ===> vorzeichentest fac #I <=== 5708 a a202 a5 71 sign lda facekp fac II: ekponent 5710 a204 fo 09 beq signrt 5711 a206 a5 76 fcsign lda facsgn fac II: vorzeichen 5112 a a a208 ===> Vergleichsroutine für 0 <=== 5115 a a208 2a fcomps rol a 5717 a209 a9 ff lda lt$ff 5718 a20b bo 02 bcs signrt 5119 a20d a9 0 I lda lt$ a20f 60 signrt rts 5721 a a a210 ===> basic-routine sgn fac=sgn(facl <=== 5724 a a a2 sgn jsr sign vorzeichentest fac ltl 5726 a a a213 ===> status-byte in fac <=== 5729 a a float sta facho fac ltl: mantisse 5731 a215 a9 00 lda lt$ a sta facmoh fac ltl: mantisse 5733 a219 a2 88 ldk #$ a21b a5 72 floats lda facho fac ltl: mantisse 5735 a21d 49 ff eor lt$ff 5736 a21f 2a rol a 5737 a a a220 ===> ende umw. fliesskomma <=== 5740 a a220 a9 00 floa tc lda lt$ a sta faclo fac ltl: mantisse 5743 a sta facmo fac ltl: mantisse 57H a StK facekp fac ltl: ekponent 5745 a sta facov fac overflow-byte a22a sta facsgn fac ltl: vorzeichen 5741 a22c 4c b5 9e jmp fadfit macht fac linksbündig 5748 a22f 5749 a22f 5750 a22f ===> basic-routine abs abs=abs(facl <=== 5751 a22f 5752 a22f abs lsr facsgn fac ltl: vorzeichen 5753 a rts 5754 a a a232 ===> vergleich fac #I mit vari lac/yrl <=== 5757 a a fcomp sta indek2 addrl indirekter indek # a fcompn sty indek2+1 addrh indirekter index # a236 ao 00 ldy #$ I a a2 jsr fclnk2 lda(indek2},y von bank a23b c8 iny a23c aa tak

148 610/710 basic-math3 hard+soft ass/reass.... seite 0119 zeile adr. obj.-code source-code 5764 a23d fo c3 beq sign Vorzeichentest fac #I 5765 a23f 20 7B a2 jsr fcinx2 lda(index2},y von bank a eor facsgn fac #1: vorzeichen a2h 30 co bmi fcsign 576B a246 e4 7 I cpx facexp fac II: exponent 5769 a248 do 25 bne fcompc 5770 a24a 20 7B a2 jsr fcinx2 lda(index2},y von bank a24d 09 BO ora #$BO a2h c5 72 cmp facho fac #1: mantisse 5773 a251 do lc bne fcompc 5774 a253 cb iny 5775 a B a2 jsr fcinx2 lda(index2},y von bank a257 c5 73 cmp facmoh fac #I: mantisse 5777 a259 do 14 bne fcompc 577B a25b cb iny 5779 a25c 20 7B a2 jsr fcinx2 lda(index2},y von bank BO a25f c5 H cmp facmo fac #I: mantisse 5 7B I a261 do Oe bne fcompc 57B2 a263 cb iny 57B3 a264 a9 7f lda #$7f 5784 a266 c5 BO cmp facov fac overflow-byte 57B5 a26b 20 7B a2 jsr fcinx2 lda(index21,y von bank 15 57B6 a26b e5 75 sbc faclo fac #I: mantisse 5 TB 7 a26d fo 30 beq qintrt 57BB a26f a5 76 fcompc lda facsgn fac #1: vorzeichen 51B9 a bcc fcompd 5790 a ff eor #$ff 5 79 I a2 15 4c OB a2 fcompd jmp fcomps Vergleichsroutine für a27b 5793 a27b 5794 a27b ===> lda(index2j,y von bank 15 <=== 5795 a21b 5796 a27b 20 7B ba fcinx2 jsr mapsys ums eh. auf bank # a27b b I 25 lda (index2j,y addrl indirekter index #2 579B a27d 4c Be ba jmp mapusr ums eh. auf bank # I 5799 a2bo 5BOO a2bo.end 5BOI a2bo.lib math4

149 610/710 basic-math' hard+soft ass/reass.... seite 0120 zeile adr. obj.-code source-code 5803 a , a280 a280 a280 a a28' 5809 a a a a28b 5813 a28c 58" a28e 5815 a a a29' 5818 a a29b 5820 a29a 5821 a29d 5822 a29f a2a0 582' a2a a2a a2al a2a a2a a2a a2a a2ab 5832 a2ae 5833 a2b a2b I 5835 a2b I ===> umw. gk-zahl in integer <=== a5 71 fo U 38 e9 ao 2' aa a9 ff d 9f Ba a2 71 c9 f f 8' 78 ab a H f 8' qint lda facexp beq clrfac sec sbc 1$ao bi t facsgn bpl qishft tax lda 1$ff sta bi ts jsr negfch txa qishft ldx 1$71 cmp 1$f9 bpl qintl jsr shiftr sty bits qintrt rts qintl tay lda facsgn and 1$80 lsr facho ora facho sta facho jsr rolshf sty bits rts fac II: exponent fliesskommaaccu löschen fac II: vorzeichen shift-zähler mantisse von fac invertieren schiebt fac rechts bis exp. shift-zähler fac II: vorzeichen fac II: mantisse fac II: mantisse fac II: mantisse schiebt fac bitweise nach rechts shi ft-zähler 5836 a2bl ===> basic-routine "int" fac=int(fac} <=== 5837 a2b I , H 58H 58H H 58, a2bl a2b3 a2b5 a2b7 a2ba a2bc a2be a2c0 a2c2 a2c3 a2c5 a2c7 a2c9 a2cb a5 71 c9 ao bo a2 8' 80 a5 76 8' a a9 ao a Oe 4c b5 9e int lda facexp cmp l$a0 bcs intrts jsr qint sty facov lda facsgn sty facsgn eor 1$80 rol a lda l$a0 sta facexp lda faclo sta charac jmp fadflt fac II: exponent 5852 a2ce 5853 a2ce 585' a2ce ===> fliesskommaaccu löschen <=== 5855 a2ce 5856 a2ce clrfac sta facho 5857 a2d sta facmoh 5858 a2d2 85 H sta facmo 5859 a2d' s ta faclo 5860 a2d6 ab tay umw. gk-zahl in integer fac overflow-byte fac II: vorzeichen fac II: vorzeichen fac II: exponent fac II: mantisse puffer für trennzeichen macht fac linksbündig fac II: mantisse fac II: mantisse fac 11: mantisse fac 11: mantisse 0

150 610/710 basic-math4 hard+soft ass/reass.... seite 0121 zeile adr. obj.-code source-code 5861 a2d7 60 intrts rts 5862 a2d a2d a2d8 ===> umw. zahlenstring in gk-zahl <=== 5865 a2d a2d8 ao 00 fin ldy #$ a2da a2 Oe ldx #$Oe 5868 a2dc 94 6b finzlp sty lowds+ I, x addrh zielanfang (versch. II bytes vor dez.punkt 5869 a2de ca dex 5870 a2df 10 fb bpl finzlp 5871 a2e I 90 Of bcc findgq 5872 a2e3 c9 2d cmp #$2d 5873 a2e5 do 04 bne qplus 5874 a2e stx sgnflg fac #1: Vorzeichenduplikat 5875 a2e9 fo 04 beq finc 5876 a2eb c9 2b qplus cmp #$2b a2ed do 05 bne fin I a2ef ba finc jsr chrget nächstes zeichen nach ac (ind.jmpl 5879 a2f2 90 5b findgq bcc findig aufruf durch mantissen-ziffer 5880 a2h c9 2e finl cmp #$2e 5881 a2f6 fo 2e beq findp aufruf durch dezimalpunkt 5882 a2f8 c9 45 cmp #$ a2fa do 30 bne fine 5884 a2fc ba jsr chrget nächstes zeichen nach ac (ind.jmpl 5885 a2ff 90 I 7 bcc fnedgl 5886 a301 c9 ab cmp #$ab 5887 a303 fo Oe beq finec I 5888 a305 c9 2d cmp #$2d 5889 a307 fo Oa beq finec I 5890 a309 c9 aa cmp #$aa 5891 a30b fo 08 beq finec 5892 a30d c9 2b cmp #$2b 5893 a30f fo 04 beq finec 5894 a3 II do 07 bne finec a f finecl ror lowtr+2 bank ursprunganfang!verschieben}/ vorz.exp a ba finec jsr chrget nächstes zeichen nach ac lind.jmpl 5897 a c fnedgl bcc finedg 5898 a31a 24 6f finec2 bit lowtr+2 bank ursprunganfang (verschieben}/ vorz.exp a31c 10 Oe bpl fine 5900 a31e a9 00 lda #$ a sec 5902 a321 e5 6c sbc lowds+2 bank zielanfang (versch. II exp.basis a323 4c 2e a3 jmp fine a a a326 ===> aufruf durch dezimalpunkt <=== 5907 a a e findp ror lowtr+1 addrh ursprunganfang!verschieben} temp. fac# a e bi t lowtr+1 addrh ursprunganfang (verschieben} temp. facll a32a 50 c3 bvc finc 59 II a32c a5 6c fine lda lowds+2 bank zielanfang (versch. II exp.bas~s10

151 basic-math4 hard+soft asslreass... seite 0122 zeile adr. obj.-code source-code 5912 a32e a32f e5 6b 5914 a a a a a33a 5919 a33c 5920 a33e 5921 a a c fo d5 ao e6 6c do f9 fo b9 ao c6 6c 5923 a345 do f a347 a a a34b a34c 5928 a34c fine I sec sbc lowds +I sta lowds+2 beq finqng bpl finmul findiv jsr divio inc lowds+2 bne findiv beq finqng finmul jsr mulio dec lowds+2 bne finmul finqng lda sgnflg bmi negxqs rts 5929 a34c 4c 7a a5 negxqs jmp negop 5930 a3h 5931 a3h 5932 a34f ===> aufruf durch mantissen-ziffer <=== 5933 a3h a34f a e findig pha bit lowtr+l 5936 a bpl findgl 5937 a354 e6 6b inc lowds+l 5938 a b9 ao findgl jsr mulio 5939 a pla I a35a a35b a35d a e a3 4c ef a2 sec sbc 1$30 jsr finlog jmp finc 59H a a363 addrh zielanfang (versch. II bytes vor dez.punkt bankzielanfang lversch.ji exp.basisio division fac II = fac I 10 bankzielanfang (versch.ll exp.basisio multiplikation fac II = fac 10 bank zielanfang (versch. II exp.basisio fac II: Vorzeichenduplikat sprung "negation", vorzeichen neg. sprung "negation", vorzeichen neg. addrh ursprunganfang (verschieben} temp. facl2 addrh zielanfang (versch. II bytes vor dez.punkt multiplikation fac II = fac 10 liest ascii ( aus basic 5946 a363 ===>liest ascii (0.. 9} aus basic <=== a a finlog pha a364 a367 a368 a36b a36d a36f 20 e3 a I a2 a5 7e f jsr movaf pla jsr float lda argsgn eor facsgn sta arisgn copy fac #I nach arg a3 71 a a a a3 76 a6 71 4c 4d 9e a5 6c 5960 a378 c9 Oa 5961 a37a ldx facexp jmp faddt finedg lda lowds+2 cmp #$0a bcc mlexio status-byte in fac fac-arg ungepackt: vorzeichen fac II: vorzeichen fac-arg ungepackt: Vorzeichenduplikat fac II: exponent basic-routine (dez. add.j bank zielanfang (versch. II exp.basisio

152 610/710 basic-math4 hard+soft ass!reass... seite 0123 zeile adr. obj.-code source-code 5962 a37c a a37e 24 6f a3bo a382 a385 a a385 Oa a386 a387 a a38a a38b a38c a3be a391 a393 a395 a397 a39a a39d a39e a3a0 30 le 4c 5e 9f Oa c Oa 18 ao oo 8d 5b 02 a b Be ba 6d 5b e c lda #$64 bit lowtr+2 bmi mlexmi jmp overr mlexio asl a asl a clc adc lowds+2 asl a clc ldy #$00 sta ldaadr lda txtptr+2 sta i6509 lda ttxtptr},y jsr mapusr adc ldaadr sec sbc #$30 mlexmi sta lowds a3a2 4c 15 a3 jmp finec 5985 a3a a3a a3a5 ===> gleitkommakonst <=== 5988 a3a a3a5 9b n0999.byte $9b, $3e, $bc, $1f, $fd 5989 a3a6 3e 5989 a3a7 bc 5989 a3a8 lf 5989 a3a9 fd 5990 a3aa 5991 a3aa 5992 a3aa ===> gleitkommakonst <=== 5993 a3aa 5994 a3aa 5994 a3ab 5994 a3ac 5994 a3ad 5994 a3ae 5995 a3af 5996 a3af 9e 6e 6b 27 fd n9999.byte $9e, $6e, $6b, $27, $fd bank ursprunganfang tverschiebenll vorz.exp. ausgabe '?overflow error bank zielanfang tversch. II exp.basisio addrl modifiable adresse bank zeigerauf akt. term 6509 indirection register addrl zeiger auf akt. term umsch. auf bank # 1 addrl modifiable adresse bank zielanfang tversch. II exp.basisio 5997 a3af ===> gle~tkommakonst. le9 <=== 5998 a3af 5999 a3af 9e nmil. byte $9e, $6e, $6b, $28, $ a3b0 6e 5999 a3bl 6b 5999 a3b a3b a3b a3b a3b4 ===> umw. hex/dez, lo=xr, hi=ac, druck ze~len # <=== 6003 a3b a3b linprt sta facho fac #1: mantisse ready

153 610/710 basic-math4 hard+saft ass/reass.... seite 0124 zeile adr. abj.-cade saurce-cade a3b6 a3b8 a3ba a3bb a3be a a2 20 e2 a ajcl a a3c a3c3 stx Facmah ldx #$90 sec jsr Flaa tc autfac jsr Faut ldx #$ a3c3 ===> textzeiger xr, textausgabe <=== 6014 a3c a3c3 bd BF 82 msg 6016 a3c6 bc a3c9 Bd 5b a3cc Be 5c a3cf 6020 a3cf lda ebase,x ldy ebase+l, x sta ldaadr sty ldaadr+ I 6021 a3cf ===> textausgabe (Zeiger $25bl <=== 6022 a3cf 6023 a3cf 6024 a3d a3d a3d a3da 6028 a3dc 6029 a3df 6030 a3e I a3e a3e2 20 5a 02 FO Od 20 Ja b5 ee 5b 02 do F3 ee 5c 02 da ee msgprt jsr ldaabs beq msgrts jsr ochr inc ldaadr bne msgprt inc ldaadr+l bne msgprt msgrts rts Fac #1: mantisse ende umw. Fliesskamma umw. gk-zahl in string Iablage ab $200) ind. sprungtabeile basic-/system Fehlermeldungen ind. sprungtabeile basic-/system Fehlermeldungen addrl madifiable adresse addrh madifiable adresse lda abs routine ausgabe I Zeichen (in acl addrl madifiable adresse textausgabe (zeiger $25b) addrh madifiable adresse textausgabe lzeiger $25b) 6033 a3e2 ===> umw. gk-zahl in string Iablage ab $2001 <=== 6034 a3e a3e a3e a3e a3e a3ea 6040 a3ec 6041 a3ef 6042 ajfi 6043 a3f3 60H a3fa a a a a a40c 6058 a40e ao 01 a a9 2d 99 ff 0 I cb ajh a9 30 a3f6 a6 71 a3f8 do 03 4c 04 a5 a3fd a3fd a3fd a9 00 a3ff eo 80 a401 fo 02 bo 09 a9 af ao a3 zo OB a9 Fl 85 6b ao Fout Fout I ldy #$0 I lda #$20 bit Facsgn bpl Fout I lda #$2d sta buf-l,y s ta Facsgn sty FbuFpt iny lda #$30 ldx Facexp bne faut 10 jmp foutl9 Fou t 10 lda #$00 cpx 11$80 beq Fout37 bcs fout 7 Fout37 lda #$af ldy ll$a3 jsr fmult lda #$f7 fout7 sta lowds+1 Fac #1: vorzeichen basic input-puffer (-$2fFI -1 Fac #1: varzeichen addrl zeiger Fac-puFFer (fout-rout.j Fac #1: exponent holt wert in arg fac = arg fac addrh zielanfang (versch. II bytes vor dez.punkt

154 670/770 basic-math4 hard+soft ass/reass.... seite 0725 zeile adr. obj.-code source-code 6059 a a a a a a41b 6065 a41d 6066 a4 lf 6061 a a a a a42b a42d a a a a a43a 6078 aoc a43e aof ah7 ah3 ah5 ah ah aha 6087 ahc 6088 ahd 6089 ahf 6090 a a453 a454 a456 a45b a45a a45c a45d a460 a461 a463 a465 a466 a469 a46b a46b a9 aa ao a a2 fo le a9 a5 ao a a2 fo Oe 20 b9 ao c6 6b do ee 20 d5 ao e6 6b do dc e a2 a2 01 a5 6b Oa c9 Ob bo ff aa a e c 86 6b Ba fo a4 82 a9 2e cb 99 ff 01 Ba fo 06 a9 30 c8 99 ff 0 I fout4 fout3 lda ISaa ldy #$a3 jsr fcomp beq bigges bpl fout9 lda l$a5 ldy 1$a3 jsr fcomp beq fout38 bpl fout5 fout38 jsr mul70 dec lowds+l fout9 bne fout3 jsr div70 inc lowds+l bne fout4 fout5 jsr faddh bigges jsr qint ldx 1$01 lda lowds+l clc adc #$0a bmi foutpi cmp l$0b bcs fout6 adc #$ff tax lda #$02 foutpi sec fout6 sbc #$02 sta lowds+2 stx lowds+7 txa beq fout39 bpl fout8 fout39 ldy fbufpt lda #$2e iny sta buf-7,y txa beq foutl6 lda #$30 iny sta buf-l,y foutl6 sty fbufpt vergleich fac II mit vari lac/yrl vergleich fac #I mit vari laclyrl multiplikation fac #I = fac 70 addrh zielanfang lversch.j/ bytes vor dez.punkt division fac II = fac I 10 addrh zielanfang lversch. II bytes vor dez.punkt fac #I umw. gk-zahl in integer addrh zielanfang lversch. II bytes vor dez.punkt bankzielanfang lversch.j/ exp.basis70 addrh zielanfang lversch.ji bytes vor dez.punkt einz. ziffern des zahlenstrings nacheinander berechnen addrl zeiger fac-puffer lfout-rout.j basic input-puffer l-$2ff) -1 basic input-puffer l-$2ff) -1 addrl zeiger fac-puffer lfout-rout.j 6106 a46b ===> einz. Ziffern des zahlenstrings nacheinander berechnen <=== 6107 a46b 6108 a46b ao oo fout8 ldy #$ a46d a2 80 ldx #$ a46f a5 75 fout2 lda faclo fac #7: mantisse

155 610/710 basic-math' hard+soft ass/reass.... seite 0126 zeile adr. obj.-code source-code 6111 ahi IB 6112 ah a ah ah ah ahc 6117 ahe 611B auo 6119 au aus 6121 au aua 6123 'Be 612, aud 6125 a4bf 6126 aui 6127 au2 B5 75 a a5 B5 74 a a5 B5 73 a a5 B5 72 eb bo de 2c 30 db 612B au4 Ba 6129., ' 6130 a'97 '9 ff 6131 a'99 69 Da 6132 a'9b 69 2f 6133 ahd cb 613' ahe cb 6135 auf c aho cb 6137 a'al B' 'a3 a ah5 c ah6 aa 61,1., f H 61H H 61U a'ae a'bo a'b2 a'b3 a4b6 a'bb a'ba a'bb 'bd 'bf a'co a'c2 a'c4 a'c6 a4c9 a'ca a4cc a'ce a'do a'd2 99 ff 01 c6 6b do 06 a9 2e cb 99 ff 0 I a' 51 Ba Uff 29 BO aa co 24 do ab a4 82 b9 ff 0 I 88 c9 30 fo f8 c9 2e fo 01 c a4d3 a9 2b 6165 a'd5 a6 6c clc adc foutbl +3, y sta faclo lda facmo adc foutbl+2,y sta facmo lda facmoh adc foutbl +I, y sta facmoh lda facho adc foutbl,y s ta facho inx bcs fout4 I bpl fout2.byte $2c fout4 I bmi fout2 txa bcc foutyp eor 1$ff adc lt$0a fou typ adc lt$2f iny iny iny iny sty varpnt ldy fbufpt iny tax and lt$7f sta buf-1,y dec lowds+l bne stxbuf lda lt$2e iny sta buf-l,y stxbuf sty fbufpt ldy varpnt txa eor lt$ff and 1$80 tax cpy 1$24 bne fout2 ldy fbufpt foutll lda buf-l.y dey cmp #$30 beq fout I I cmp #$2e beq fout 12 iny fout 12 lda l$2b ldx lowds+2 fac #1: mantisse fac 11: mantisse fac 11: mantisse fac ltl: mantisse fac #1: mantisse fac II: mantisse konst. für gleitkomma nach ascii: -100 ooo ooo fac 11: mantisse addrl zeiger auf variable im ram addrl zeiger fac-puffer lfout-rout.) basic input-puffer 1-$2ffi -1 addrh zielanfang lversch. J/ bytes vor dez.punkt basic input-puffer 1-$2ff) -1 addrl zeiger fac-puffer (fout-rout.j addrl zeiger auf variable im ram addrl zeiger fac-puffer lfout-rout.j basic input-puffer l-$2ff) -1 bank zielanfang (versch. )/ exp.basisio

156 610/110 basic-math4 hard+soft ass/reass.... seite 0121 zeile adr. obj.-code source-code 6166 a4d1 fo 2e beq foutl a4d9 10 OB bpl fout B a4db a9 00 lda #$ a4dd JB sec 6 I 70 a4de e5 6c sbc lowds+2 bank zielanfang lversch.j/ exp.basisio 6171 a4e0 aa tax 6 I 12 a4el a9 2d lda #$2d 6 I 13 a4e fou t 14 sta buf+l,y basic input -puffer (-$2ff} +I 6 I 74 a4e6 a9 45 lda #$45 6 I 75 a4eb sta buf,y basic input -puffer ( -$2ff J 6 I 76 a4eb Ba txa 6177 a4ec a2 2f ldx #$2f 6 I TB a4ee JB sec 6 I 79 auf eb fou t I 5 inx 61BO aho e9 Oa sbc #$0a 61BI ah2 bo fb bcs foutl5 61B3 ah sta buf+j,y 61B2 ah4 69 Ja adc #$3a basic input-puffer ( -$2ff J +3 61B4 61B5 ah9 a4 fa Ba txa sta buf+2,y basic input -puffer ( -$2ff J +2 61B6 ahd a9 00 lda #$00 61B1 ahf sta buf+4,y basic input-puffer ( -$2ff J +4 61BB a502 fo OB beq fout20 61B9 a ff 0 I foutl9 s ta buf-l,y basic input-puffer ( -$2ff J -I 6190 a507 a9 00 foutl1 lda #$ a s ta buf,y basic input-puffer ( -$2ff J 6192 a50c 60 fout20 rts 6193 a50d 6194 a50d 6195 a50d ===> fliesskomma-konstante 3276B ( 32 k J <=== 6196 a50d 6197 a50d 90 n3216b.byte $90 619B a50e 6199 a50e 6200 a50e ===> konstante 0.5 für funktion sqr <=== 6201 a50e 6202 a50e BO fhalf.byte $BO, $00, $00, $00, $ a50f a a5 II a a a a513 ===> kons t. für gleitkomma nach ascii: -100 ooo ooo <=== 6206 a a513 fa foutbl.byte $fa 620B a514 Oa.byte $Oa 6209 a515 lf. byte $1f 6210 a byte $00 62" a byte $00, $9B, $96, $BO konst. für gleitkomma nach ascii: ooo 62" a51b 9B 62" a " a51a BO 6212 a51b ff.byte $ff, $f0, $bd, $c0 konst. für gleitkomma nach ascii: - I 000 ooo 6212 a5 lc fo

157 610/710 basic-math4 hard+soft ass/reass seite 0128 zeile adr. ob'j.-code source-code 6212 a51d bd 62!2 a51fl co 6213 a51f 00.byte $00, $01' $86, Sao konst. für glflitkomma nach ascii: ' a a52 I a522 ao 6214 a523 ff. bytll $ff, $ff, $d8, $f0 konst. für glflitkomma nach ascii: -10 ooo 6214 a524 ff 6214 a525 d a526 fo 621S a byte $00, $00, $03, $eb konst. für gleitkomma nach ascii: "I ooo 62!5 a as as2a eb 62!6 a52b ff.byte $ff, $ff, $ff, $9c konst. für glfli tkomma nach ascii: "-100' 6216 a52c ff 6216 as2d ff 6216 a52fl 9c 6217 a52f 00.byte $00, $00, $00, $0a konst. für gleitkomma nach ascii: '10. 62!7 a a a532 Oa 6218 as33 ff.byte $ff, $ff, $ff, $ff konst. für gleitkomma nach ascii: - I, 6218 as34 ff 6218 as3s ff 6218 as36 ff 6219 a a as37 ===> basic-routine sqr fac=sqrlfac/ <=== 6222 as a e3 al sqr jsr movaf copy fac 1 nach arg 6224 as3a a9 Oe lda soe 6225 a53c ao as ldy Sas 6226 as3e a 1 jsr movfm vari adr.lo=ac, hi=yr nach fac as as a541 = => basic-routine "dez. potenz" <=== 6230 as a541 fo 70 fpwrt beq exp basic-routine exp fac=exp I fac I 6232 as43 as 79 lda argexp fac-arg ungepackt: exponent 6233 as45 do 03 bne fpwrtl 6234 a547 4C dc 9e jmp zerofl 6235 a54a 6236 a54a 6237 a54a a2 Sb fpwrt I ldx Ssb 6238 a54c ao 00 ldy soo 6239 a54e al jsr movmf fac I runden, nach xr yr 6240 a551 a5 7e lda argsgn fac-arg ungepackt: vorzeichen 6241 a Of bpl fpwrl 6242 a bl a2 jsr int basic-routine int fac=int(facl 6243 a5s8 a9 Sb lda S5b 6244 a5sa ao 00 ldy 1$00

158 610/710 basic-math4 hard soft ass/reass.... seite 0129 zeile adr. obj.-code source-code 6245 a55c a2 jsr fcomp vergleich fac #I mit vari lac/yrl 6246 a55f do 03 bne fpwrl 6247 a tya 6248 a562 a4 Oe ldy charac puffer für trennzeichen 6249 a564 d5 a I 20 fpwrl jsr movfa I 6250 a tya 6251 a56b 48 pha 6252 a ca 9f jsr log basic-routine 'log 6253 a56c a9 5b lda #$5b 6254 a56e ao 00 ldy #$ a OB ao jsr fmul t holt wert in arg fac = arg fac 6256 a b3 a5 jsr exp basic-routine exp fac=exp(facj 6257 a pla 6258 a577 h lsr a 6259 a Oa bcc negrts 6260 a57a 6261 a57a 6262 a5 7a ===> basic-routine negation <=== 6263 a5 7a 6264 a57a a5 71 negop lda facexp fac #I: exponent 6265 a57c fo 06 beq negrts 6266 a57e 6267 a57e 6268 a57e ===> facsgn invertieren <=== 6269 a57e 6270 a57e a5 76 sa v4 I lda facsgn fac #I: vorzeichen 6271 a5bo 49 ff eor #$ff 6272 a sta facsgn fac #1: Vorzeichen 6273 a negrts rts 6274 a a a585 ===> konstante I = l/log{2j <=== 6277 a a585 BI logeb2. byte $81, $38. $aa, $3b, $ a a587 aa 6278 a588 3b 6278 a a58a 6280 a58a 6281 a58a ===> 8 konstanten für Funktion exp (polynomgrad 7) <=== 6282 a58a 6283 a58a 07 expcon.byte $ a58b 7 I.byte $71. $34. $58, $3e, $56 kons t e-5 für exp 6284 a5bc a58d a58e 3e 6284 a58f a byte $74. $16. $7e, $b3. $1b kons t e-4 für exp 6285 a a592 7e 6285 a593 b a594 Tb 6286 a byte $77. $2f. See, $e3, $85 kons t e-3 für exp 6286 a596 2f

159 610/710 basie-math4 hard+soft ass/reass... seite 0130 zeile adr. obj.-eode souree-eode 6286 a597 ee 6286 a59b e a a59a 7a.byte $7a, $1d, $8,, Sie, $2a konst e-3 für exp a59b ld 6287 a59e a59d le 6287 a59e 2a 6288 a59f 7e.byte $7e, $63, $59, $58, Soa konst für exp 6288 a5a a5a I a5a a5a3 Oa 6289 a5a4 7e.byte $7e, $75, $fd, Se 7, $e6 konst für exp 6289 a5a a5a6 fd 6289 a5a 7 e a5ab e a5a9 80. byte $80, $31' $72' $18, $10 konst für exp 6290 a5aa a5ab a5ae a5ad a5ae 81.byte $81, $00, $00, $00, $00 konst. 1 für exp 6291 a5af a5b a5bl a5b a5b a5b a5b3 ===> basie-routine exp fae=exp(fael <=== 6295 a5b a5b3 a9 85 exp lda #$ a5b5 ao a5 ldy #$a a5b7 20 OB ao jsr fmult holt wert in arg fac arg fac 6299 a5ba a5 80 lda facov fae overflow-byte 6300 a5bc ade #$ a5be bce stold 6302 a5co 20 fa a 1 jsr incrnd mantisse von fac um 1 erhöhen 6303 a5e stold sta jmper+2 addrh sprung zu funetions-rout a5c5 20 e6 a 1 jsr movef 6305 a5e8 a5 71 lda facexp fae #I: exponent 6306 a5ca e9 88 emp #$ a5ec bec expl 6308 a5ee 20 ab ao gomldv jsr mldvex 6309 a5d1 20 b 1 a2 expl jsr int basic-routine int fac=int(facl 6310 a5d4 a5 Oe lda charac puffer für trennzeichen 6311 a5d6 18 clc 6312 a5d ade #$ a5d9 fo f3 beq gomldv 6314 a5db 38 sec 6315 a5dc e9 01 sbc #$ a5de 48 pha 6317 a5df a2 05 ldx #$05

160 610/710 basic-math4 hard+soft ass/reass.... seite 0131 zeile adr. obj. -code source-code 6318 a5el b5 79 swalp lda argexp,k fac-arg ungepackt: exponent 6319 a5e3 b4 71 ldy facexp,k fac II: exponent 6320 a5e sta facexp,x fac II: exponent 6321 a5e sty argexp,x fac-arg ungepackt: exponent 6322 a5e9 ca dex 6323 a5ea 10 f5 bpl swalp 6324 a5ec a5 63 lda jmper+2 addrh sprung zu functions-rout a5ee sta facov fac overflow-byte 6326 a5f e jsr fsubt basic-routine - (dez. subtr.l 6321 a5f a5 jsr negop basic-routine negation 6328 a5f6 a9 Ba lda 1$Ba 6329 a5f8 ao a5 ldy 1$a a5fa 20 lb a6 jsr poly 6331 a5fd a9 00 lda 1$ dff 85 7f s ta arisgn fac-arg ungepackt: vorzeichenduplikat 6333 a pla 6334 a602 4c 90 ao jmp mldexp 6335 a a a605 :::> polynom-auswertung (::: 6338 a a polyx sta fbufpt addrl zeiger fac-puffer (fout-rout.l sty fbufpt+l addrh zeiger fac-puffer (fout-rout.l fac II nach $64-$ a607 a a 1 jsr movlf 6342 a60c a9 64 lda 1$ a60e 20 OB ao jsr fmult holt wert in arg fac arg * fac 63H a6 II 20 lf a6 jsr poly I 6345 a614 a9 64 lda 1$ a616 ao 00 ldy 1$ a618 4c 08 ao jmp fmult holt wert in arg fac arg fac 63U a61b 6349 a61b 6350 a61b poly sta fbufpt addrl zeiger fac-puffer (fout-rout.l 6351 a61d sty fbufpt+l addrh zeiger fac-puffer (fout-rout.l 6352 a61f a I poly I jsr mov2f fac 12 nach $6a-$6e 6353 a622 a9 00 lda 1$ a624 II 82 ora lfbufpt /, y addrl zeiger fac-puffer lfout-rout. I 6355 a sta sgnflg fac II: Vorzeichenduplikat 6356 a628 a4 82 ldy fbufpt addrl zeiger fac-puffer (fout-rout. I 6357 a62a c8 iny 6358 a62b 98 tya 6359 a62c do 02 bne poly a62e e6 83 inc fbufpt+l addrh zeiger fac-puffer (fout-rout. I 636, a poly3 sta fbufpt addrl zeiger fac-puffer lfout-rout.l 6362 a632 a4 83 ldy fbufpt+ 7 addrh zeiger fac-puffer (fout-rout.l 6363 a ao poly2 jsr fmult holt wert in arg fac : arg fac 6364 a637 a5 82 lda fbufpt addrl zeiger fac-puffer lfout-rout.l 6365 a639 H 83 ldy fbufpt+l addrh zeiger fac-puffer lfout-rout.l 6366 a63b 18 clc 6367 a63c adc 1$ a63e bcc poly a640 c8 iny 6310 a poly4 sta fbufpt addrl zeiger fac-puffer lfout-rout. I 6371 a sty fbufpt I addrh zeiger fac-puffer (f'out-rout. I 6372 a a 9e jsr fadd konstante in arg, fac : arg+fac 6373 a648 a9 6a lda l$6a 6374 a64a ao 00 ldy 1$00

161 610/TIO basic-math' hard+soft ass/reass... seite 0132 zeile adr. obj.-code source-code 63T5 ahc 6376 a6'e 6377 a a a651 c6 TT do e' 60 dec sgnflg bne poly2 rts 6380 a651 ===> konst. 118T95'6 für rnd <=== 6381 a a a a653 H 6382 a6h Ta 6383 a ' a655 rmulc.byte $98. $35. $'' $Ta 6385 a655 ===> konst. 3.92T6TTT' e-' für 'rnd' <=== 6386 a T a T a raddc.byte $68, $28, $b1, $'6 638T a65t bl 638 T a658 ' a a a659 ===> basic-routine 'rnd' <=== 6391 a a a65c 639' a65e 6395 a a662 e8 639T a663 do B '00 6'01 6,02 H03 6'0' '06 HOT 6'08 6' ' II 602 a665 a666 a66t a669 a66c a66e a6 TO a673 a6t5 a677 a6 Ta a6tc a6te a6bo a a684 H" a a688 Hl6 641T 60B H ' 6, a68a a68c a6be a690 a692 a69' a696 a699 a69b a69d a69f a2 rnd jsr sign 30 lc bmi rndl a6 8d ldx seedpt a' Be ldy seedpt+l inx bne rndio cb Ba a al a9 51 ao a ao a9 55 ao a6 20 h 9e a6 T5 a5 T2 B5 T5 B6 T2 a6 T3 a5 74 B5 T3 B6 T' a9 00 B5 T6 a5 71 B5 BO a9 BO B5 Tl 20 ba 9e a6 Bd a' Be a9 02 e8 rndio rndl iny txa ldx 1$02 jsr movfum lda 1$51 ldy l$a6 jsr fmul t lda 1$55 ldy l$a6 jsr fadd ldx faclo lda facho s ta faclo stx facho ldx facmoh lda facmo sta facmoh stx facmo lda 1$00 s ta facsgn lda facexp s ta facov lda 1$80 sta facexp jsr normal ldx seedpt ldy seedpt+l lda #$02 inx fac 11: Vorzeichenduplikat Vorzeichentest fac 11 addrl zeiger auf akt. zufallszahl addrh zeiger auf akt. Zufallszahl holt wert in arg fac konstante in arg, fac fac 11: mantisse fac II: mantisse fac 11: mantisse fac 11: mantisse fac 11: mantisse fac II: mantisse fac 11: mantisse fac 11: mantisse fac 11: vorzeichen fac 11: exponent fac overflow-byte arg fac arg+fac fac 11: exponent fac linksbündig machen addrl zeiger auf akt. zufallszahl addrh zeiger auf akt. zufallszahl

162 610/710 basic-math4 hard+soft ass/reass.... seite 0133 zeile adr. obj.-code source-code 6421 a6a0 do 01 bne rndzo 6428 a6a2 c8 iny 6429 a6a3 4c a5 al rndzo jmp movumf fac #I runden,nach xr, yr 6430 a6a a6a a6a6 ===> basic-routine 'cos' fac=cos(facj <=== 6433 a6a a6a a6a a6aa 6437 a6ad 6438 a6ad a9 26 ao a a 9e cos lda #$26 ldy #$a 7 jsr fadd 6439 a6ad ===> basic-routine 'sin' <=== 6HO a6ad 6HI 6HZ 6H3 6H4 6H5 6H6 6H 7 6H8 6H9 a6ad a6b0 a6b2 a6b4 a6b6 a6b9 a6bc a6bf a6cl 20 e3 a I a9 Zb ao a 7 a6 1e 20 de ao 20 e3 a 1 20 b I az a f sin jsr movaf lda #$2b ldy #$a 7 ldx argsgn jsr fdivf jsr movaf jsr int lda 1$00 sta arisgn 6450 a6c a6c a6c a6ca 6454 a6cd 6455 a6cf 6456 a6d a6d a6d a6d a6d a6dc 6462 a6de 6463 a6el 6464 a6e a6e a6e a6eb 6468 a6ec 6469 a6ee 6410 a6fl 6411 a6f a6f a6f a6f e a9 30 ao a 7 20 Zd 9e a Of e a Ob ad ff 8d a a5 a9 30 ao a a 9e a a5 a9 35 ao a 7 4c 05 a6 sin I sinz sin3 jsr fsubt lda #$30 ldy #$a7 jsr fsub lda facsgn pha bpl sinl jsr faddh lda facsgn bmi sinz lda tansgn eor #$ff sta tansgn jsr negop lda 1$30 ldy #$a 7 jsr fadd pla bpl sin3 jsr negop lda 1$35 ldy #$a7 jmp polyx konstante in arg, fac copy fac II nach arg arg+fac fac-arg ungepackt: vorzeichen copy fac #I nach arg basic-routine 'int' fac=int(facj fac-arg ungepackt: Vorzeichenduplikat basic-routine - ldez. subtr.} konstante in arg, fac fac #1: vorzeichen fac #I fac #1: vorzeichen flag für 'tan vorzeichen flag für 'tan' vorzeichen basic-routine negation konstante in arg, fac basic-routine negation polynom-auswertung a6f8 ===> basic-routine tan fac=tan lfac} <=== a6f8 a6f a I tan jsr movlf fac #I nach $64-$ H9 a6fb a6fd a9 00 8d lda 1$00 sta tansgn flag für 'tan' vorzeichen a a 705 a ad a6 a2 5b ao a I jsr sin ldx #$5b ldy #$00 jsr movmf basic-routine sin fac #I runden, nach xr yr arg-fac arg fac

163 610/710 basic-math4 hard+soft ass/reass... seite 0134 zeile adr. obj.-code source-code 6484 a70a a9 64 lda 1$ a 10c ao 00 ldy 1$ a 10e al jsr movfm vari adr.lo=ac, hi=yr nach fac II 6487 a 711 a9 00 lda 1$ a sta facsgn fac II: vorzeichen 6489 a715 ad lda tansgn flag für 'tan vorzeichen 6490 a a7 jsr cosc 6491 a 71b a9 5b lda l$5b 6492 a 11d ao 00 ldy 1$ a 71f 4c e6 ao jmp fdiv holt wert in arg, fac arg I fac 6494 a a a cosc pha 6497 a723 4c e I a6 jmp sinl 6498 a a a a 126 ===> konstante pi/2 = I <=== 6502 a726 BI pi2. byte $81, $49, $Of, $da, $a a a 128 Of 6502 a 129 da 6502 a72a a a 12b 6504 a72b 6505 a72b ===> konstante 2*pi = <=== 6506 a 12b 6501 a 12b 83 twopi 6501 a 12c u. byte $83, $49, SOf, $da, Sa a 72d Of 6501 a 12e da 6507 a72f a a a a730 ===> konstante 0.25 <=== 6511 a a 130 7f fr4. byte $7f, $00, $00, $00, soo 6512 a a a a a a a 735 ===> 6 konstanten für funktionen s~n + cos (polynomgrad 51 <=== 6516 a a sincon.byte $ a byte $84. $e6, S Ia, $2d, $1b konst für + cos s~n 6518 a 73 7 e a 738 Ia 6518 a 739 2d 6518 a73a lb 6519 a 73b 86.byte $86, $28, $07. $f6, $f8 konst für 6519 a73c ZB 6519 a73d a 73e f a73f f8 sin 1- cos

164 610/710 basie-math4 hard+soft ass/reass.... seite 0135 zeile adr. obj.-eode souree-eode 6520 aho 87.byte $87, $99, $68, $89, $0 I konst für s1.n + cos 6520 ahi ah ahj a7h ah5 87.byte $87, $23, $35, $df, Sei konst für s1.n + cos 6521 a a7h ah8 df 6521 ah9 el 6522 aha 86.byte $86, $a5, $5d, $e7, $28 kons t für sin + cos 6522 ahb a ahe 5d 6522 ahd e ahe a7h 83.byte $83, $4 9' $0f, $da, $a2 kons t für sin + cos 6523 a a 75 I Of 6523 a 752 da 6523 a 753 a a a a 754 ===> 12 konstanten für atn (polynomgrad 111 <=== 6527 a a754 Ob atneon.byte $Ob 6529 a byte $76, $b3' $83, $bd, $d3 kons t e-4 für atn 6529 a 756 b a a 758 bd 6529 a 759 d a 75a 79.byte $79, Sie, $f4, $a6, $f5 konst.,, e-3 für atn 6530 a75b le 6530 a 75e H 6530 a 75d a a 75e f a 75f 7b.byte $7b, $83, $fe, $b0' $10 kons t für atn 6531 a a 76 I fe 6531 a 762 bo 6531 a a 764 7e.byte $7e, $Oe, $1f, $67' Sea kons t für atn 6532 a 765 Oe 6532 a 766 lf 6532 a a 768 ea 6533 a 769 7e.byte $7e, $de, $53' $eb, Sei kons t für atn 6533 a 76a de 6533 a 76b a 76e eb

165 610/710 basic-math' hard+soft ass/reass... seite 0136 zeile adr. obj.-code source-code 6533 a76d Cl 653, a 76e 7d.byte $7d, $14. $6,, $70, S'c konst , für 'atn 653, a 76f ' a 710 6' 653' a ' a 772 'c 6535 a 773 7d.byte $7d, $b7, $ea, $5 I. $7a kons t für atn 6535 a7h b a 775 ea 6535 a a 777 7a 6536 a718 7d.byte $7d, $63, $30, $88, $7e konst. 0. I 10932,13 für atn 6536 a a 7 7a a 7 Tb a 77c 7e 6537 a77d 7e. byte $7e, $92. $H, $99, $3a kons t ' für atn 6537 a 71e a 77f H 6537 a a 781 Ja 6538 a782 7e.byte $7e, S,c, Sec, $9 I. Sc 7 kons t für atn 6538 a 783 'c 6538 a 78' cc 6538 a a786 c a 787 7f.byte $7f, Saa, $aa, $aa, $13 kons t für atn 6539 a 188 aa 6539 a 789 aa 6539 a 78a aa 6539 a 78b 13 65,0 a 78c 8 I. byte $8 I, $00, $00, $00, $00 konst. I für atn 6540 a 18d 00 65,0 a 78e a 18f 00 65,0 a a 79 I 65H a 79 I 650 a79 I ===> basic-routine atn fac=atn(faci <=== 65H a 79 I 65,5 79 I a5 76 atn lda facsgn fac II: vorzeichen 65H a793 H pha 65H a 79' bpl atn I 6548 a Ta a5 jsr negop basic-routine negation 65H 799 a5 71 a tn I lda facexp fac #1: exponent 6550 a79b 48 pha 6551 a 79c c9 8 I cmp #$8 I 6552 a79e bcc atn a 7a0 a9 9c lda #$9c 6554 a 7a2 ao 9f ldy #$9f 6555 a 7a4 20 e6 ao jsr fdiv holt wert in arg, fac arg I fac a9 54 atn2 lda #$54

166 610/710 basic-math4 hard+soft ass/reass... seite 0137 zeile adr. obj.-code source-code 6557 a 7a9 ao a7 ldy l$a a 7ab a6 jsr polyx polynom-auswertung 6559 a 7ae 68 pla 6560 a 7af c9 81 cmp 1$ a 7b bcc atn a7b3 a9 26 lda 1$ a 7b5 ao a7 ldy l$a a Tb d 9e jsr fsub konstante in arg, fac arg-fac 6565 a 7ba 68 atn3 pla 6566 a 7bb bpl atn a7bd 4c 7a a5 jmp negop basic-routine negation 6568 a rco 6569 a 7c0.end 6570 a 7c0.lib strngl

167 610/110 basic-strngl hard+soft ass/reass.... seite 013B zeile adr. obj.-code source-code 6572 a7c a7c0 ===> basic-routine 'pudef <=== 6514 a TcO 6575 atco 20 b6 91 puctrl jsr savl3 65T6 a Tc3 20 T3 ba jsr mapinx umsch. auf bank II in $ a7c6 ab tay 65T8 a Tc T fo Of beq pucbye 6579 a7c9 co 04 cpy 1$04 65BO a Tcb bcc puc atcd ao 04 ldy 1$ a Tcf BB puc50 dey 65B3 a7d0 bl 22 puc60 lda lindexij,y addrl indirekter index II 6584 atd2 99 T3 02 sta pufill,y print using: füllzeichen 65B5 a Td5 BB dey 6586 atd6 10 fb bpl puc60 65BT a TdB 4c Be ba pucbye jmp mapusr ums eh. auf bank I I 658B atdb 6589 a Tdb 6590 atdb ===> basic-routine str$' <=== 6591 a Tdb 6592 atdb b5 strd jsr chknum prüfen, ob numerische variable 6593 atde 20 e2 a3 jsr fout umw. gk-zahl in s tring I ablage ab $200} 6594 a Te I 6B pla 6595 a Te2 6B pla 6596 a Te3 ao 00 foutst ldy 1$00 659T a Te5 b stroio lda buf,y basic input-puffer l-$2ff} 659B a TeB fo 03 beq str atea cb iny 6600 ateb do fb bne stroio 6601 a Ted 9B str020 tya 6602 a Tee 20 II ab jsr strspa adr./länge des s tring ablegen 6603 a Tfl sty i indirection register 6604 atf3 ao 00 ldy 1$ a 7f5 b str030 lda buf,y basic input-puffer l-$2ff} 6606 a TfB fo 05 beq str T a 7fa 91 Tl sta lfacexp},y fac II: exponent 6608 a Tfc cb iny 6609 a7fd do f6 bne str a Tff 20 Be ba str040 jsr mapusr ums eh. auf bank # I 66 II ab02 4c 6c ab jmp putnew 6612 ab ab ab05 ===> berechnet stringzeiger <=== 6616 ab05 a6 T6 strini ldx facsgn fac "; vorzeichen 6617 abot stx dscpnt+2 bank zeiger string descriptor 6615 ab05 661B ab09 a6 74 ldx facmo fac #1: mantisse 6619 ab Ob a4 75 ldy faclo fac #1: mantisse 6620 abod B6 5e stx dscpnt addrl zeiger string descr.ltemp.fac# abof B4 5f sty dscpnt+! addrh zeiger string descr./temp.fac# ab II 6623 ab II 6624 ab II ===> adr./länge des string ablegen <=== 6625 ab I! 6626 ab II ad strspa jsr getspa platz für string reservieren, länge in ac

168 610/110 basic-strngl hard+soft ass/reass.... seite 0139 zeile adr. obj.-code souree-eode 6621 abi4 B5 70 sta dsetmp zeitweise deseriptoren-ablage 662B abi stx facexp fac II: exponent 6629 abib B4 12 sty facho fac II: mantisse 6630 ab Ia ao 02 ldy 11$ abic sty facmoh fac 111: mantisse 6632 a81e 60 atn4 rts 6633 abif 6634 abif 6635 abif ===> sucht elemente von zeichenkette <=== 6636 abif 6631 abif H s trlit pha 663B ab20 a9 22 lda 11$ ab22 B5 Oe sta charae puffer fiir trennzeichen 6640 ab24 85 Od sta endehr puffer fiir trennzeichen 660 ab26 6B pla 6642 ab21 B5 7f strltz sta arisgn fac-arg ungepackt: Vorzeichenduplikat 66U abz9 B4 BO sty facov fae overflow-byte 66U ab2b B6 BI stx facov l fac overflow-byte 6645 a8zd stx i indirection register 6646 abzf B5 71 sta facexp fac II: exponent 66H ab31 u 12 sty facho fac 111: mantisse 66H ab stx facmoh fac II: mantisse 66U ab35 B6 84 stx fbufpt+z bank zeiger fac-puffer lfout-rout.j 6650 ab37 ao ldy ll$ff 6651 a839 c8 " s trget iny 6652 ab3a bl 7f lda larisgn}. y fac-arg ungepackt: Vorzeichenduplikat 6653 a83c fo Oe beq s trfi I 6654 a83e e5 Oe emp charac puffer fiir trennzeiehen 6655 a840 fo 04 beq strfin 6656 a842 c5 Od cmp endehr puffer fiir trennzeichen 6651 a8h do f3 bne strget 6658 a846 c9 22 strfin cmp 11$ a848 fo 01 beq strfi a84a IB strfi I clc Ub 20 Be bl strfi2 jsr mapusr ums eh. auf blnk # I 6662 a84e sty dsctmp zeitweise descriptoren-ablage 6663 a tya 6664 a f adc arisgn fac-arg ungepackt: Vorzeichenduplikat B2 st1 fbufpt addrl zeiger fac-puffer lfout-rout.} 6666 ab 55 a6 80 ldx facov fac overflow-byte bcc strst a859 e8 inx 6669 a85a strst2 stx fbufpt+ I addrh zeiger fac-puffer lfout-rout. J 6670 ab Sc 9B ty ab5d ab jsr strini berechnet stringzeiger 6612 ab60 a2 02 ldx 1$ a862 b4 7f sotl ldy arisgn,x fac-arg ungepackt: Vorzeichenduplikat ab sty index I. x addrl indirekter index 6675 a866 ca dex " 6616 a f9 bpl sotl 6617 a c4 ab glar jsr movdo a86c., ld putnew ldy temmpt zeiger auf zeitw. stringdescriptor lrel. offset} ab6e co Oe cpy #$Oe

169 610/710 basic-strngl hard+soft ass/reass.... seite 0140 zeile adr. obj.-code source-code 6680 a870 do 05 bne putnwl 6681 ab 72 a2 46 ldx #$ a874 4c jmp error ind. jmp zur fehlerroutine 6683 a a a877 a9 02 putnwl lda #$ ab sta i indirectian register 6687 a87b sta facsgn fac #I: vorzeichen 6688 ab 7d a2 00 ldx #$ a87f b5 70 putnwl lda dsctmp,x zeitweise descriptoren-ablage 6690 abbi sta ltempstl,y addrl für 3 temp. string-descriptoren 6691 a883 cb iny 6692 a884 eb inx 6693 a885 eo 04 cpx #$ a887 do f6 bne putnwl 6695 a Be ba jsr mapusr umsch. auf bank # ab Be a5 21 lda tempst+l addrh für 3 temp. string-descriptoren 6697 ab Be sta faclo fac #I: mantisse 6698 a lf s ta lastpt+l addrh letzt benutzter string-descr a clc 6700 a893 a5 20 lda tempst addrl für 3 temp. string-descriptoren 6701 a ld adc temmpt zeiger auf zeitw. stringdescriptor lrel. offset) a sta facmo fac 111: mantisse 6703 a le sta lastpt addrl letzt benutzter string-descr a89b bcc putnw a89d e6 75 inc faclo fac #I: mantisse 6706 a89f e6 lf inc lastpt+l addrh letzt benutzter string-descr aba 1 84 ld putnw2 sty temmpt zeiger auf zeitw. stringdescriptor lrel. offset I 6708 a8a3 ao 00 ldy 11$ a8a sty facov fac overflow-byte a8a7 88 dey 6711 ab ab sty valtyp flag für variablen typ IO=num, l=stringl abaa 60 rts ab ab ab ab 6715 ab ab ===> string ablegen <=== ab ab 6717 ab ab a5 81 movins lda facov+l fac overflaw-byte abad sta i indirection register abaf ao 00 ldy #$ abbl bl 7f lda larisgnl,y fac-arg ungepackt: Vorzeichenduplikat a8b3 aa tax 6722 a8b4 cb iny 6723 a8b5 bl 7f lda larisgn),y fac-arg ungepackt: Vorzeichenduplikat 6724 a8b sta indexl addrl indirekter index #I 6725 a8b9 cb iny abba b 1 7f lda larisgn},y fac-arg ungepackt: Vorzeichenduplikat abbc sta indexl+l addrh indirekter index #I 6728 abbe cb iny

170 610/710 basic-strngl hard+soft ass/reass.... seite 0141 zeile adr. obj.-code source-code 6729 abbf bl 7f 6730 abcl B abc3 Ba 6732 abc4 ab 6733 abc5 fo aber B H B abcb abca abcb abcd abcf abdl abd3 abd5 abd6 abdb abd9 abdc abdd abdf abel abe3 abe5 abe6 abe6 a2 02 BB a5 24 B5 01 b I 22 B d 9B do f2 6B 20 Be ba IB 65 3d B5 3d e6 Je 60 lda I arisgn), y sta indexl+2 txa movdo tay beq mvdone pha ldx 1$02 movlp dey lda indexl+2 sta i6509 lda lindexll,y stx i6509 sta lfrespcl,y tya bne movlp pla mvdone jsr mapusr clc adc frespc sta frespc bcc mvstrt inc frespc+ I mvstrt rts 6754 abe6 ===> alten string entfernen <=== 6755 abe abe b5 frestr jsr chkstr abe9 6 75B abe abe9 ===> stringverwaltung, freier string <=== 6760 abe a8e a8eb 6763 a8ed a8ef 6765 abf a8h a8f7 6 76B a8f abfc 6770 abfd 6771 a8ff 6772 a a a a a a a90b a90c 6780 a90d a90f 6782 a a a915 a5 74 a4 75 a H a9 do Je aa aa ff a4 23 bo B aa 6B a4 24 co 02 do 5f a4 23 c4 Je frefac lda facmo ldy faclo ldx facsgn fretmp jsr savio bne fre02 jsr sadi2 bcc fre02 jsr mkgarb resoo pha eor l$ff sec adc indexl ldy indexl+l bcs resoo dey sta indexl sty indexl+l tax pla ldy index I +2 cpy 1$02 bne frerts ldy indexl l cpy fretop I fac-arg ungepackt: vorzeichenduplikat bank indirekter index II bank indirekter index II 6509 indirection register addrl indirekter index II 6509 indirection register addrl zeiger auf neuen string umsch. auf bank I addrl zeiger auf neuen string addrl zeiger auf neuen string addrh zeiger auf neuen string prüfen, ob stringvariable fac II: mantisse fac II: mantisse fac II: vorzeichen string-trailer eintragen: ungültiger string addrl indirekter index II addrh indirekter index II addrl indirekter index II addrh indirekter index II bank indirekter index II addrh indirekter index II addrh top of string free space I

171 610/710 basic-strng1 hard+soft ass/reass.... seite 0142 zeile adr. obj.-code source-code a917 a919 a91b a91d a91e a91f a921 a923 a925 do 59 e4 3b do b e6 3c a a a92a 6797 a92c a92e 6799 a92f 6800 a a b e6 Je a ba 6803 a933 ao oo 6804 a935 b a a938 a939 a93b a93c a93d a93f a940 a94 1 a90 a945 a9h a94a a94b a94d 6822 a9h 6823 a94f 6824 a a a a a a95b 6830 a95d 6831 a95f 6832 a a a a a a96a cb b cb b1 22 aa c8 b Be ba eo 02 do 19 c4 1f do 15 c5 1e do 11 e e bo 02 c6 1f 38 a5 1d 6838 a96c e a96e 85 1d bne frerts cpx fretop bne frerts pha clc adc fretop bcc fre01 inc fretop+1 fre01 clc adc 1$03 sta fretop bcc frepla inc fretop+1 frepla pla rts fre02 jsr mapinx ldy 1$00 lda lindex11,y pha iny lda lindex1j,y pha iny lda lindex11,y tax iny lda lindex1),y sta index1+2 stx index1+1 jsr mapusr pla sta index1 pla rts sav10 sta index1 sty index1+1 stx index1+2 fretms cpx 1$02 bne frerts cpy lastpt+1 bne frerts cmp lastpt bne frerts sbc 11$04 sta lastpt bcs fret10 dec lastpt+1 fret10 sec lda temmpt sbc #$04 sta temmpt ldy #$00 addrl top of string free space addrl top of string free space addrh top of string free space addrl top of string free space addrh top of string free space umsch. auf bank II in $241 addrl indirekter index #1 addrl indirekter index #1 addrl indirekter index #1 addrl indirekter index #1 bank indirekter index #1 addrh indirekter index #1 umsch. auf bank # 1 addrl indirekter index #1 addrl indirekter index #1 addrh indirekter index #1 bank indirekter index #1 addrh letzt benutzter string-descr. addrl letzt benutzter string-descr. addrl letzt benutzter string-descr. addrh letzt benutzter string-descr. zeiger auf zeitw. stringdescriptor lrel. offsetl zeiger auf zeitw. stringdescriptor I rel. offse t I

172 610/710 basic-strngl hard+soft asslreass... seite 010 zeile adr. obj.-code source-code 6841 a frerts rts 6842 a973 6BO a973 6BH a973 a4 56 inpcom ldy lstpnt+2 bank zeiger letzter string 6B45 a9 75 co Of cpy l$0f 6846 a977 do 03 bne getspt 6847 a979 4C d6 ac jmp mktime interne uhrmit string stellen 6848 a97c 6B49 a9 Tc 6B50 a97c a4 76 getspt ldy facsgn fac II: vorzeichen 6B51 a97e co 02 cpy 1$02 6B52 a9bo do Oe bne dntcpy 6853 a9b2 a4 75 ldy faclo fac II: mantisse 6B54 a9b4 c4 Ja cpy strend+l addrh ende benutzter ram-bereich 6B55 a9b bcc copy string ins ram, gültig machen 6856 a9b8 do 06 bne dntcpy 6B57 a9ba a5 74 lda facmo fac #1: mantisse 6B5B a9bc c5 39 cmp strend addrl ende benutzter ram-bereich 6B59 a9be 90 2d bcc copy string ins ram, gültig machen 6B60 a990 a5 74 dntcpy lda facmo fac II: mantisse 6B61 a992 a4 75 ldy faclo fac II: mantisse 6B62 a994 a6 76 ldx facsgn fac II: vorzeichen 6B63 a e sta dscpnt addrl zeiger string descr./temp.facl3 6B64 a99b 84 5f sty dscpnt+l addrh zeiger string descr./temp.facl3 6B65 a99a B6 60 stx dscpnt+2 bank zeiger string descriptor 6866 a99c 20 H a9 jsr savio 6867 a99f aa jsr sadi a9a bcc dcop02 6B69 a9a4 20 fc a9 jsr bcklnk string-trailer eintragen: rückwärtszeiget 6870 a9a aa dcop02 jsr fixold 6B71 a9aa a6 56 ldx lstpnt+2 bank zeiger letzter string 6872 a9ac ao 03 ldy 1$03 6B73 a9ae 20 6e ba deopol jsr mapdsp ums eh. auf bank I# in $60} 6B 74 a9bl b I 5e lda {dscpnt},y addrl zeiger string descr./temp.facl3 6B75 a9b3 B6 0 I stx i indirection register 6B76 a9b sta llstpntl,y addrl zeiger letzter string a9b7 BB dey 6B7B a9b8 10 f4 bpl deopol 6B 79 a9ba 4c Be ba jmp mapusr ums eh. auf bank # I 6BBO a9bd 68BI a9bd 68B2 a9bd ===> string ins ram, gültig machen <=== 68B3 a9bd 6BB4 a5 76 copy lda facsgn fac #1: vorzeichen 6509 indirection register 68B5 a9bd a9bf B5 01 sta i B6 a9cl ao 00 ldy #$00 6BB 7 a9c3 b I 74 lda {facmo}, y fac II: mantisse ba umsch. auf bank # 68B9 a9cb ab jsr strini berechnet stringzeiger 6BBB a9c5 20 Be jsr mapusr 6890 a9cb a2 02 ldx #$ a9cd b4 5e soth ldy dscpnt, x addrl zeiger string descr./temp.facl3 6B92 a9cf 94 7f sty arisgn,x fac-arg ungepackt: Vorzeichenduplikat

173 610/710 basic-strngl hard+soft ass/reass.... seite 0144 zeile adr. obj.-code source-code 6B93 6B94 6B95 6B96 6B97 6B9B 6B a9dl a9d2 a9d4 a9d7 a9d9 a9db a9dd a9e0 a9e3 a9e a9e a9eb 6905 a9ed 6906 a9ef 6907 a9fl 690B a9h 6909 a9f a9f7 69" a9f a9fc 6913 a9fc ca 10 f9 20 ab ab a5 7f a4 BO a6 BI a9 20 6c aa fc a9 20 I 2 aa ao 03 a5 56 B5 01 b I 54 BB 10 fb 4c Be ba dex bpl soth jsr movins lda arisgn ldy facov ldx facov+l jsr fretms jsr stradj bcc copy02 jsr bcklnk copy02 jsr fixold ldy 1$03 lda lstpnt+2 sta i6509 copyoi lda dsctmp,y sta (lstpntl,y dey bpl copyoi jmp mapusr string ablegen fac-arg ungepackt: Vorzeichenduplikat fac overflow-byte fac overflow-byte strings uber fretop: carry=l, länge=ac, zeiger > linkbytes string-trailer eintragen: rückwärtszeiger bank zeiger letzter string 6509 indirection register zeitweise descriptoren-ablage addrl zeiger letzter string umsch. auf bank I I 6914 a9fc ===> string-trailer eintragen: rückwärtszeiger <=== 6915 a9fc B a9fc a9ff aaoi aa03 aa05 aa06 aaob aaoa aaob aaod aaof ba ao 00 a I 22 cb a I 22 cb a I 22 4c Be ba bcklnk jsr mapinx ldy 1$00 lda lstpnt sta lindexll,y iny lda lstpnt+l sta lindexll,y iny lda lstpnt+2 sta lindexll.y jmp mapusr 6927 aal2 692B aal aal aa aal aaib 6933 aal aalb 6935 aale 6936 aa20 a2 02 b ca 10 f aa fixold ldx 1$02 sump ldy lstpnt.x sty indexl,x dex bpl sump jsr sadi2 bcc fnk05 umsch. auf bank I# in $241 addrl zeiger letzter string addrl indirekter index II addrh zeiger letzter string addrl indirekter index II bank zeiger letzter string addrl indirekter index II umsch. auf bank # I addrl zeiger letzter string addrl indirekter index II 6937 aa20 693B aa20 ===> string-trailer eintragen: ungültiger string <=== 6939 aa aa ba mkgarb jsr mapinx umsch. auf bank I# in $ aa23 ao 02 ldy #$ aa25 a9 ff lda #$ff 6943 aa27 9 I 22 sta lindexll,y addrl indirekter index #I 6944 aa29 BB dey 6945 aa2a 9 I 22 sta lindexll,y addrl indirekter index #I 6946 aa2c BB dey 6947 aa2d Ba txa

174 610/710 basic-strngl hard+soft ass/reass.... seite 0145 zeile adr. obj.-code source-code 6948 aa2e sta lindexl),y addrl indirekter index #I 6949 aa30 ~c Be ba jmp mapusr umsch. auf bank # I 6950 aa aa aa ba sadi2 jsr mapinx ums eh. auf bank I# in $2~) 6953 aa36 ao 00 ldy #$ aa3b bl 22 lda lindexl),y addrl indirekter index #I 6955 aa3a ~B pha 6956 aa3b fo 29 beq sadib 6957 aa3d cb iny 695B aa3e bl 22 lda I index I J, y addrl indirekter index #I 6959 aa~o ~B pha 6960 aa41 cb iny 6961 aah bl 22 lda I index I J, y addrl indirekter index #I 6962 aah aa tax 6963 aah cb iny 6964 aa~6 bl 22 lda I index I J, y addrl indirekter index # aau ab tay 6966 aa~9 20 Be ba jsr mapusr ums eh. auf bank # aa~c 6B pla 6968 aa~d c~ 19 sadi3 cpy dsdesc+3 bank disc-status string 6969 aa~f do OB bne sadi~ 6970 aa51 e~ 18 cpx dsdesc+2 addrh disc-status string 6971 aa53 do 0~ bne sadi~ 6972 aa55 c5 17 cmp dsdesc+l addrl disc-status string 6973 aa57 fo Od beq sadib 69H aa sadh sta indexl addrl indirekter index # aa5b stx index1+1 addrh indirekter index #I 6976 aa5d 84 2~ sty indexl+2 bank indirekter index #I 6977 aa5f 68 pla 697B aa60 aa tax 6979 aa61 20 IB ab jsr sav15 69BO aa64 3B sec 69B1 aa65 60 fnk05 rts 69B2 aa aa aa66 20 Be ba sadib jsr mapusr ums eh. auf bank # I 69B5 aa69 68 pla 69B6 aa6a IB clc 69B7 aa6b 60 rts 69BB aa6c 69B9 aa6c 6990 aa6c ===> strings Über fretop: carry= 1, länge=ac, zeiger > Linkbytes <=== 6991 aa6c 6992 aa6c a5 70 stradj lda dsctmp zeitweise descriptoren-ablage 6993 aa6e 48 pha 699~ aa6f fo f5 beq sadib 6995 aa 71 a5 71 lda facexp fac #1: exponent 6996 aa73 a6 72 ldx facho fac #1: mantisse 6997 aa 75 a~ 73 ldy facmoh fac #1: mantisse 699B aa77 ~c ~d aa jmp sadi aa 7a 7000 aa 7a.end 7001 aa 7a.lib strng2

175 670/770 basic-strng2 hard+soft ass/reass... seite 0746 zeile adr. obj.-code source-code 7003 aa 7a 7004 aa 7a 7005 aa 7a 7006 aa 7a aa 7c 700B aa 7d 7009 aa 7f aabo aab aab aab6 aab9 aaba ===> string verketten <=== a a a ae b5 6B B5 7f 7076 aabc 6B B aabd aabf aa90 B5 BO 6B B5 B aa92 B aa94 ao oo 7022 aa96 b 7 7f B B aa9b aa9b aa9d aa9f aaal aaa4 aaa5 aaab aaaa aaad aaad aaad aabo aab3 aab6 aab aabb 7040 aabd 7047 aabf 7042 aac2 700 aac aacb 7045 aacb Bd 5b 02 a5 76 B5 07 b Be ba 7B 6d 5b C B5 b ab 20 ab ab 20 cb aa 20 c4 ab a5 7f a4 BO a6 B7 20 ef ab 20 6c ab 4c de aacb a5 5e 7047 aaca a4 5f 704B aacc a aace aad7 aadl 4c ef ab cat lda facsgn pha lda faclo pha lda facmo pha jsr eval jsr chkstr pla sta arisgn pla sta facov pla sta facov+7 sta i6509 ldy #$00 lda (arisgn),y sta ldaadr lda facsgn sta i6509 lda (facmoi,y jsr mapusr clc adc ldaadr bcc sizeok jmp errlen sizeok jsr strini jsr movins jsr sav4 7 jsr movdo lda arisgn ldy facov ldx facov 7 jsr fretmp jsr putnew jmp tstop ldy dscpnt 7 ldx dscpnt 2 jmp fretmp 7052 aad7 ===> basic-routine 'ehr$' <=== 7053 aad aad7 20 d9 b4 chrd ]Sr conint fac #7: vorzeichen fac #7: mantisse fac #7: mantisse jmp: folgenden beliebigen ausdruck auswerten prüfen, ob stringvariable fac-arg ungepackt: vorzeichenduplikat fac overflow-byte fac overflow-byte 6509 indirection register fac-arg ungepackt: vorzeichenduplikat addrl modifiable adresse fac #7: vorzeichen 6509 indirection register fac #1: mantisse umsch. auf bank # 7 addrl modifiable adresse ausgabe '?string too long', ready berechnet stringzeiger string ablegen fac-arg ungepackt: Vorzeichenduplikat fac overflow-byte fac overflow-byte addrl zeiger string descr./temp.fac#j addrh zeiger string descr./temp.fac#3 bank zeiger string descriptor zahl < 256 aus akt. text nach xr

176 610/710 basic-strng2 hard+soft ass/reass.... seite 0147 zeile adr. obj.-code source-code 7055 aad4 Ba txa 7056 aad5 4B pha 7057 aad6 a9 01 lda 1$ aadb 20 ab jsr strspa adr./länge des string ablegen 7059 aadb " ba jsr mapdst umsch. auf banl< I# in $ aade 6B pla 7061 aad+" ao 00 ldy #$ aael 9 I 71 sta (facexpl,y fac II: exponent 7063 aae3 20 Be ba jsr mapusr ums eh. au+" bank # 7064 aae6 6B pla 1065 aae7 68 pla 1066 aaeb 4c 6c ab jmp putnew 7067 aaeb 706B aaeb 7069 aaeb ===> basic-routine "le+"t$ <=== 7071 aaeb ab leftd jsr pream stringadresse u. parameter vom stapel holen 1010 aaeb 1012 aaee 48 pha 7073 aaef 20 6e ba jsr mapdsp ums eh. auf banl< I# in $ aaf2 bl Se lda ldscpnt/,y addrl zeiger string descr./temp.fac# aah Bd Sb 02 sta ldaadr addrl modifiable adresse 7076 aah 6B pla 7077 aafb Cd Sb 02 cmp ldaadr addrl modifiable adresse 7078 aafb 9B tya 7079 aafc rleft bcc rleft I 7080 aafe bl 5e lda (dscpnt},y addrl zeiger string descr./temp.fac#3 10BI aboo aa tax 7082 ab01 98 tya 7083 ab02 20 Be ba rleft1 jsr mapusr umsch. auf banl< # I 7084 ab05 48 pha 1085 ab06 Ba rleft2 txa 7086 ab07 48 rleft3 pha TOBT abob 20 II ab jsr strspa adr./länge des string ablegen 7088 ab Ob 20 cb aa jsr sav ab Oe 68 pla 7090 abof ab tay 709 I abio 68 pla 7092 ab ab jsr sav abh 9B tya 7094 ab15 4c 69 ab jmp glar 1095 ab abib ab18 18 sav15 clc savl4 index1 addrl indirekter index II addrl indirekter index II ab19 ablb adc sta indek abld bcc sav ablf e6 23 i.nc i.ndek1+1 addrh indirekter indek #I 7102 ab21 60 sav16 rts 1103 ab ab ab22 ===> basic-routine right$" <=== 1106 ab ab ab rightd jsr pream stringadresse u. parameter vom stapel holen 1108 ab25 48 pha

177 610/710 basic-strng2 hard+soft ass/reass... seite 0148 zeile adr. obj.-code source-code ab26 ab29 ab2b ab2e ab2f ab30 ab e ba b 1 5e Bd 5b ed 5b ff 7116 ab35 4c fc aa ab ab3b jsr mapdsp lda (dscpnt},y sta ldaadr pla clc sbc ldaadr eor l$ff jmp rleft 7119 ab ba sav17 jsr chrgot 7120 ab3b 7121 ab 3d 7122 ab3f 7123 ab ab42 c9 29 fo 4e 4c cd b4 cmp 1$29 beq sav18 jmp combyt 7125 ab42 ===> basic-routine mid$' <=== 7126 ab ab42 a9 ff midd 7128 ab ab B ab 7130 ab ab 7131 ab4c fo 5d ab4e abh ab 50 ab51 ab 52 ab 53 ab 55 ab 58 ca Ba 48 4B 1B a e ba b1 5e 7140 ab5a 7141 ab5d 7142 ab ab61 71H ab ab ab6b 7141 ab6a 7148 ab6c 7749 ab6e 7150 ab ab70 20 Be ba 8d 5b ed 5b 02 bo ao 49 ff c b a5 75 bo 97 lda l$ff sta faclo jsr sav17 jsr pream beq gofuc dex txa pha pha clc ldx 1$00 jsr mapdsp lda (dscpntl,y jsr mapusr sta ldaadr pla sbc ldaadr bcs rleft2 eor l$ff cmp faclo bcc rleft3 lda faclo bcs rleft3 umsch. auf bank (# in $60} addrl zeiger string descr./temp.fac#3 addrl modifiable adresse addrl modifiable adresse letztes zeichen erneut nach ac (indirekter sprungl kommatest, holt 1byte in xr fac 11: mantisse stringadresse u. parameter vom stapel holen umsch. auf bank (I in $601 addrl zeiger string descr./temp.facl3 umsch. auf bank # 1 addrl modifiable adresse addrl modifiable adresse fac #1: mantisse fac 11: mantisse 7152 ab70 ===> stringadresse u. parameter vom stapel holen <=== 7153 ab ab ab abh ab75 715B ab ab ab79 68 ab7a 68 ab7b aa 20 2a 97 pream JST chkcls 6B pla ab 68 B tay pla sta jmper+1 pla pla pla tax test I, sonst fehler + ready addrl sprung zu functions-rout.

178 610/710 basic-strng2 hard+soft asslreass... seite 01'9 zeile adr. obj.-code source-code 7163 ab7c 68 pla 716, ab7d 85 5e sta dscpnt addrl zeiger string descr./temp.fac# ab7f 68 pla 7166 abbo 85 5f sta dscpnt+l addrh zeiger string descr./temp.fac# ab82 68 pla 7168 ab sta dscpnt+2 bank zeiger string descriptor 7169 ab85 a5 62 lda jmper+l addrl sprung zu functions-rout ab87 48 pha 7171 abbb 98 tya 7172 abb9 48 pha ab Ba ao 00 ldy #$00 71H ab Be Ba txa 7175 abbd 60 savib rts 7176 ab Be 7177 ab Be 717B ab Be ===> basic-routine 'len <=== 7179 ab Be 71BO ab Be 20 9' ab len jsr lenl 71BI ab91 'c 37 9d jmp sngflt 7182 ab9' 71B3 ab9' 71B' ab9' 20 e6 ab lenl jsr frestr alten string entfernen 71B5 ab97 a2 00 ldx #$00 71B6 ab99 B6 II stx valtyp flag für variablen typ I O=num, l=stringl 71B 7 ab9b ab tay 71BB ab9c 60 rts 71B9 ab9d 7190 ab9d 7191 ab9d ===> basic-routine asc <=== 7192 ab9d 7193 ab9d 20 9' ab asc jsr lenl 71H abao fo 09 beq gofuc 7195 aba2 ao 00 ldy #$ aba' 20 df bo jsr savl aba 7 ab tay 719B abab 'c 37 9d jmp sngfl t 7199 ab ab 7200 ab ab 720 I ab ab 'c a7 9b gofuc jmp fcerr ausgabe '?illegal quantity error ready 7202 abae 7203 abae 720' abae ===> basic-routine 'val' <=== 7205 abae 7206 abae 20 9' ab val jsr lenl abbl do 03 bne vall string auswerten 720B abb3 4c da 9e jmp zerofc fac auf 00 setzen 7209 abb abb abb6 ===> string auswerten <=== 7212 abb abb6 a2 02 val T ldx #$02 72" abbb b~ 85 tryg ldy txtptr,x addrl zeiger auf akt. term 7215 abba 9~ 82 sty fbufpt,x addrl zeiger fac-puffer (fout-rout.j 7216 abbc ca dex

179 610/710 basic-strng2 hard+soft ass/reass..... seite 0150 zeile adr. obj.-code source-code 7217 abbd 10 f abbf 7219 abcl 7220 abc3 722 I abc abc abc abca 7225 abcc 7226 abce 7227 abdo 7228 abd abd4 abd5 abd7 abd9 abdb abdc abdd abdf abe abe abe abeb 724 I abec 7242 abee 7243 abfo 72H abf abf abf abf abfb 7249 abfd 7250 abff I a B7 B6 01 a6 22 B6 B B5 25 a6 23 B6 B eb B6 26 ao 00 bl 25 4B 9B Be ba ba 20 db a2 20 7d ba 6B ao oo Be ba a6 B2 a4 B3 a5 H B6 B5 B4 B6 B5 B7 val2 bpl tryg ldx index I +2 stx txtptr+2 stx i6509 ldx indexl stx txtptr clc adc indexl sta index2 ldx i ndex I +I stx txtptr+l bcc val2 inx stx index2+1 ldy #$00 lda lindex21,y pha tya sta lindex21,y jsr mapusr jsr chrgot jsr fin jsr mapstr pla ldy #$00 sta lindex21.y jsr mapusr st2txt ldx fbufpt ldy fbufpt +I lda fbufpt+2 stx txtptr sty txtptr+ I sta txtptr+2 rts acoo acoo acoo ===> basic-routine 'err$ I x I ' <=== 7254 acoo 7255 acoo I acoi ac04 ac07 acoa acob acoc acoe acio acll I ac 14 acl6 acl9 aclb acle ac20 ac b5 20 d9 b4 Ba Oa c9 56 bo 9b ab b9 Bf B2 B5 25 b9 90 B2 B ba ao ff a2 00 cb errd pla jsr parchk jsr chknum jsr conint txa asl a cmp #$56 bcs gofuc tay lda ebase,y sta index2 lda ebase+l,y sta index2 1 jsr mapsys ldy #$ff ldx #$00 erf lp I iny bank indirekter index #I bank zeiger auf akt. term 6509 indirection register addrl indirekter index #I addrl zeiger auf akt. term addrl indirekter index #I addrl indirekter index #2 addrh indirekter index #I addrh zeiger auf akt. term addrh indirekter index #2 addrl indirekter index #2 addrl indirekter index #2 umsch. auf bank # I letztes zeichen erneut nach ac tindirekter sprungl umw. zahlenstring in gk-zahl umsch. auf bank # 2 addrl indirekter index #2 umsch. auf bank # I addrl zeiger fac-puffer lfout-rout. I addrh zeiger fac-puffer (fout-rout. I bank zeiger fac-puffer (fout-rout.l addrl zeiger auf akt. term addrh zeiger auf akt. term bank zeiger auf akt. term test I I. sonst fehler, ready prüfen, ob numerische variable zahl < 256 aus akt. text nach xr ind. sprungtabeile basic-/system Fehlermeldungen addrl indirekter index #2 ind. sprungtabeile basic-/system Fehlermeldungen addrh indirekter index #2 umsch. auf bank # 15

180 610/710 basic-strng2 hard+soft ass/reass.... seite 0151 zeile adr. obj.-code source-code 7272 ac23 bl 25 lda ( index2 J, y addrl indirekter index ac25 fo 07 beq errdl 7274 ac27 c9 20 cmp 1$ ac29 90 fl bcc erflpl 7276 ac2b eb inx 7277 ac2c do H bne erflp I 72 lb ac2e Ba errdl txa ac2f 20 II ab jsr strspa adr./länge des string ablegen 72BO ac32 ao ff ldy l$ff 72BI ac34 a2 00 ldx 1$00 72B2 ac36 cb erflp2 iny 72B3 ac B ba jsr mapsys umsch. auf bank I 15 72B4 ac3a bl 25 lda ( index2 J, y addrl indirekter index 12 12B5 ac3c fo IB beq errd2 72B6 ac3e c9 20 cmp 1$20 72B 7 ac40 90 H bcc erflp2 72BB ac42 Be 5b 02 sty ldaadr addrl modifiable adresse 72B9 ac45 48 pha 7290 ac46 Ba txa 7291 ach ab tay 7292 ac48 6B pla 7293 ac ba jsr mapdst ums eh. auf bank (I in $7 3 J 7294 ac4c sta ( facexp), y fac #I: exponent 1295 ac4e 9B tya 7296 ac4f aa tax 7297 ac50 ac 5b 02 ldy ldaadr addrl modifiable adresse 7298 ac53 eb inx 1299 ac54 do eo bne erflp ac56 20 Be ba errd2 jsr mapusr ums eh. auf bank # I 130 I ac59 4c 6c ab jmp putnew 7302 ac5c 7303 ac5c 7304 ac5c ===> interne uhrzeit nach ti$ <=== 1305 ac5c 7306 ac5c de ff gettim jsr krdtim 20 interne uhr ablesen ac5f 48 pha l30b ac f and #$7f 7309 ac62 B5 07 sta tmsec zeit sekunden für ti$-berechnung 7310 ac64 9B tya 7311 ac f and #$9f 7312 ac67 OB php 7313 ac6b 29 lf and #$1f 7314 ac6a c9 12 cmp #$ ac6c do 02 bne ge t t i I 7316 ac6e a9 00 lda #$00 73 I 7 ac getti I plp 7318 ac bpl lkt ac 73 7B sei 7320 ac74 fb sed 7321 ac75 IB clc 7322 ac adc #$ ac 7B db cld 7324 ac79 58 cli 7325 ac7a B5 05 lkt50 sta tmhour zei t stunden für ti$-berechnung 7326 ac Tc a9 00 lda #$ ac 7e 85 OB sta tmten zei t "1/10-sek. für ti$-berechnung 732B acbo 98 tya 7329 acbi 2a rol a

181 610/710 basic-strng2 hard+soft ass/reass.... seite 0152 zeile adr. obj.-code source-code 7330 acb2 733 I acb acb acb acbb 7335 acb acba acbc 733B acbd 7339 acbf 7340 ac ac ac ac95 2a 26 OB 2a 26 OB Ba 2a 26 OB u B5 06 6B 2a 26 OB a9 OB ad 73H ac9b B ac9a B ac9c ao ac9e B B acao B aca2 ab 7350 aca3 BB 7351 aca aca acab 7354 aca acab 7356 acac 7357 acae a I 22 BB a5 OB I 22 BB a2 02 b B acbo 7359 acbl 7360 acb acb5 4B 7362 acb6 29 Of 7363 acbb I 7382 acb9 acbb acbd acbe acbf accl acc2 acc3 acc4 acc5 acc7 acc9 acca accb accd accf acdl acd3 acd6 acd I 22 BB a 4a u 4a I ca 10 e6 a5 22 a4 23 a6 24 4c 1f ab gti 70 rol a rol tmten rol a rol tmten txa rol a rol tmten lsr a sta tmmin pla rol a rol tmten lda #$08 jsr getspa stx indexl sty indexl+l ldy #$02 sty indexl+2 sty i6509 tay dey lda #$00 sta lindexl},y dey lda tmten clc adc #$30 sta (indexij,y dey ldx #$02 lda tmhour,x pha and #$0f clc adc #$30 sta (indexij,y dey pla and #$70 lsr a lsr a lsr a lsr a adc #$30 sta (indexij,y dey dex bpl gti70 lda indexl ldy indexl+l ldx indexl+2 jmp strlit zeit '1/10-sek. für ti$-berechnung zeit 1/10-sek. für ti$-berechnung zei t 'II 10-sek. ' für ti$-berechnung zeit 'minuten' für ti$-berechnung zeit 1/10-sek.' für ti$-berechnung platz für string reservieren, länge in ac addrl indirekter index #I addrh indirekter index #I bank indirekter index #I 6509 indirection register addrl indirekter index #I zeit '1/10-sek.' für ti$-berechnung addrl indirekter index #I zeit 'stunden' für ti$-berechnung addrl indirekter index #I addrl indirekter index #I addrl indirekter index #I addrh indirekter index #I bank indirekter index #I sucht elemente von zeichenkette acd6 ===> interne uhr mit string stellen <=== 7385 acd6 73B6 acd6 20 e9 ab mktime jsr frefac stringverwaltung, freier string

182 610/710 basic-strng2 hard+soft ass/reass... seite 0153 zeile adr. obj.-code source-code 7387 acd acda acdc acde aceo ace2 ace4 ace ace9 Oa 7396 acea Oa 7397 aceb Oa 7398 acec 7399 aced 7400 acfo HOl acf acf acf9 H04 HOS H06 H07 HOB H09 HIO Hll 7"2 Hl3 HIS "" 7" "8 7" H H HO 7HI acfa acfc acfe acff adoi ad03 ad06 adob adoa adoc adoe adio adl2 adl3 adl4 adl6 ad 17 adib adla adle adle ad20 ad21 ad23 ad24 ad26 ad28 ad29 ad2b ad2c ad2e ad30 ad31 ad33 ad34 ad35 ad37 ad38 c9 06 fo 04 c9 07 do 6e ao oo d ad Oa 99 OS d ad cb co 03 do eb 68 c9 06 fo OS 20 3d ad do 02 a OB a5 05 c Oa 18 fb e9 12 db a OB 6a a OB 6a OS 06 a OB 6a 66 OB 6a 4a ab 68 7HZ ad H3 adja 4c db ff HH ad3d pha cmp #$06 beq mktmb cmp #$07 bne fcerr2 mktmb ldy #$00 sty fbufpt mktiio jsr timnum asl a mktmc mktmd asl a asl a asl a sta tmhour.y jsr timnum ora tmhour,y sta tmhour,y iny cpy #$03 bne mktiio pla cmp #$06 beq mktmc jsr timnum bne mktmd lda #$00 sta tmten lda tmhour cmp #$12 bcc mktiso sei sed sbc #$12 cld cli ora #$80 sta tmhour mkti50 lda #$00 ror tmten ror a ora tmsec pha lda #$00 ror tmten rar a ora tmmin tax lda lt$00 ror tmten ror a ror tmten ror a lsr a ora tmhour tay pla clc ]mp kstt~m addrl zeiger fac-puffer (fout-rout. I zeit "stunden für ti$-berechnung zei t zei t 'stunden für ti$-berechnung stunden für ti$-berechnung zeit '1/10-sek. für ti$-berechnung zeit 'stunden für ti$-berechnung zeit "stunden für ti$-berechnung zeit '1/10-sek. für ti$-berechnung zeit 'sekunden für ti$-berechnung zeit 1/ 10-sek. für ti$-berechnung zei t "minuten' für ti$-berechnung zeit 1/10-sek. für ti$-berechnung zeit "1/10-sek. für ti$-berechnung zeit "stunden für ti$-berechnung interne uhr stellen

183 670/770 basic-strng2 hard+soft ass/reass.... seite 0154 zeile adr. obj.-code source-code 7H5 adjd 7H6 7H7 7HB 7H J 7454 adjd adjf ad47 ado ad46 ad49 ad4b ad4d adh 84 BJ a4 82 e df bo ba bo 05 e9 2f a4 BJ 60 timnum sty fbufpt+l ldy fbufpt inc fbufpt jsr sav72 jsr qnum bcs fcerr2 sbc tl$2f ldy fbufpt+l rts addrh zeiger fac-puffer (fout-rout. I addrl zeiger fac-puffer (fout-rout.j addrl zeiger fac-puffer lfout-rout. I test inhalt ac numerisch addrh zeiger fac-puffer (fout-rout.j 7455 ad ad ad50 4c a7 9b fcerr2 jmp fcerr ausgabe "?illegal quantity error, ready 7458 ad5j 7459 ad5j 7460 ad5j ===> platz für string reservieren, länge in ac <=== 7461 ad J J 7474 ad53 ad55 ad56 ad58 ad59 ad5b ad5c ad5e ad60 ad62 ad64 ad65 ad IJ aa fo 4c 48 a5 3b 38 e9 03 a4 Je bo OJ fo ad69 Ba 7476 ad6a 49 ff ad6c ad6d ad6f ad77 ad74 ad ~ 9~ ad17 ad7a ad7b ad7d ad7f ad87 ad83 ad85 ad87 ad89 ad8c ad8e ad90 ad92 ad bo Oa Bd 5b fo 2e ad 5b c4 Ja do 04 c d 84 3e 20 7d ba ao 02 a9 ff getspa lsr dores tryag2 tax beq getrts pha lda fretop sec sbc tl$03 ldy fretop+1 bcs tryag3 beq garbag dey tryagj sta index1 sty index1+1 txa eor l$ff sec adc index1 bcs tryag4 sta ldaadr tya beq garbag lda ldaadr dey tryag4 cpy strend+1 bcc garbag bne tryag5 cmp strend bcc garbag tryag5 sta frespc sty frespc+1 jsr mapstr ldy tl$02 lda l$ff sta lindex1j,y dey sta lindex11,y flag für token o. ascii/garbage-flag addrl top of string free space addrh top of string free space garbage collect fungültige strings entfernen) addrl indirekter index 11 addrh indirekter index #1 addrl indirekter index 11 addrl modifiable adresse garbage collect fungültige strings entfernen) addrl modifiable adresse addrh ende benutzter ram-bereich garbage collect (ungültige strings entfernen) addrl ende benutzter ram-bereich garbage collect fungültige strings entfernen! addrl zeiger auf neuen string addrh zeiger auf neuen string umsch. auf bank # 2 addrl indirekter index #1 addrl indirekter index #1

184 610/710 basic-strng2 hard+soft ass/reass.... seite 0155 zeile adr. obj.-code source-code 1498 ad ad ad I ad ad9c 7503 ad9e 7504 adao 7505 ada ada ada ada Be ba a6 3d a4 Je 86 3b 84 Je 60 dey pla sta lindexl},y jsr mapusr ldx frespc ldy frespc+l stx fretop sty fretop+l getrts rts addrl indirekter index t umsch. auf bank # I addrl zeiger auf neuen string addrh zeiger auf neuen string addrl top of string free space addrh top of string free space 7509 ada5 o==> garbage collect (ungültige strings entfernen} <o== 7510 ada5 75 II ada5 ada 7 ada9 adac adad adaf adbo adb2 a b5 ad do a3 4c garbag lda dores bmi grbg99 jsr garba2 sec ror dores pla bne tryag2 grbg99 jmp omerr flag für token o. ascii/garbage-flag garbage collect lmüll entfernen} flag für token o. ascii/garbage-flag 7519 adb adb adb5 ===> garbage collect lmüll entfernen} <==o 7522 adb adb5 a9 02 garba2 lda #$ adb sta i adb9 a5 ld lda temmpt 7526 adbb 7527 adbd 7528 adbe 7529 adcl 1530 adc2 753 I adc adc5 adc7 adc9 adcb adcc adce addo addl fo lc 48 la ZO a f ae ao a a5 21 c8 91 6a a9 02 c8 9 I 6a 7540 add add4 add5 38 e add7 do e4 75H add9 ao oo 7545 addb addd a5 Jf 7547 addf a4 40 naa beq naa pha jsr slr I tya clc adc tempst ldy #$00 sta llowdsl,y lda tempst+l iny sta (lowds},y lda #$02 iny sta llowdsl,y pla sec sbc #$04 bne la ldy #$00 sty highds lda memtop ldy memtop+l ausgabe "?out of memory error ready 6509 indirection register zeiger auf zeitw. stringdescriptor I rel. offset I addrl für 3 temp. string-descriptoren addrl zielanfang!verschieben}/ temp. fac#z addrh für 3 temp. string-descriptoren addrl zielanfang (verschieben}/ temp.fac#z addrl zielanfang!verschieben}/ temp. fac#2 addrl zielende (verschieben)/ temp.fac#l addrl höchste ram-speicherstelle addrh höchste ram-speicherstelle

185 610/710 basic-strng2 hard+soft ass/reass.... seite 0156 zeile adr. obj.-code source-code 7HB adel 85 6d sta lowtr addrl ursprunganfang (verschieben!/ temp. fac# ade3 85 5b s ta defpnt addrl zeiger funkt.-def./ temp.fac# ade5 85 3d sta frespc addrl zeiger auf neuen string 7551 adet 84 6e sty lowtr+l addrh ursprunganfang (verschieben} temp.fac# ade9 84 5c sty defpnt+l addrh zeiger funkt.-def.l temp.fac# adeb 84 Je sty frespc+l addrh zeiger auf neuen string 7554 aded ae gloop jsr chkgrb trailer-tes t, ob string ungültig 7555 adfo do Of bne colo I 7556 adf2 ao 00 colooa ldy #$ adf4 20 Td ba jsr mapstr umsch. auf bank # adf7 bl 5b lda (defpntl,y addrl zeiger funkt. -def. I temp.fac# adf9 20 cb ae jsr movpnt zeiger für garb. coll. stellen 7560 adfc 38 sec 756' adfd ror highds addrl zielende (verschieben}/ temp. fac#l 7562 adff do ec bne gloop 7563 aeoi coloi bit highds addrl zielende (verschieben}/ temp. fac#l 7564 ae bpl col03 gültige strings Überspringen 7565 ae05 a2 00 ldx #$ aeot stx highds addrl zielende (verschieben!/ temp. fac#l 7561 ae ae ae09 ===> gültigen string über ungültigen kopieren <=== 7570 ae ae09 ao 02 col02 ldy #$ aeob 20 7d ba jsr mapstr umsch. auf bank # aeoe bl 5b col02a lda (defpntl,y addrl zeiger funkt.-def./ temp. fac# aeio 9' 6d s ta (lowtr},y addrl ursprunganfang (verschieben!/ temp.fac# ael2 88 dey 1576 ael3 10 f9 bpl col02a 1571 ael ae jsr sa v aeib Ba txa 7519 ael9 ab tay 1580 aela 20 7d ba jsr mapstr umsch. auf bank # aeld 88 glop I dey 7582 aele bl 5b lda (defpntl,y addrl zeiger funkt.-def./ temp.fac# ae20 9' 6d sta (lowtr},y addrl ursprunganfang (verschieben!/ temp.fac# ae22 ca dex 7585 ae23 do fb bne glopl 7586 ae ba jsr mapinx umsch. auf bank (# in $ ae28 ao 02 ldy #$ ae2a b9 6c 00 col02b lda lowds+2,y bank zielanfang (versch. II exp.basisio 7589 ae2d 9' 22 sta (indexl},y addrl indirekter index #I 7590 ae2f 88 dey 1591 ae30 do fb bne col02b 7592 ae32 a5 5b lda defpnt addrl zeiger funkt.-def./ temp.fac# ae34 a4 5c ldy defpnt+l addrh zeiger funkt. -def. I temp.fac# ae ae jsr chkgrb trailer-test. ob string ungültig 1595 ae39 fo b7 beq colooa 1596 ae3b do cc bne col02 gulugen string Über ungültigen kopieren

186 610/710 basic-strng2 hard+soft ass/reass.... seite 0157 zeile adr. obj.-code source-code 7597 ae3d 7598 ae3d 7599 ae3d ===> gültige strings überspringen <=== 7600 ae3d 7601 ae3d ae col03 jsr sav ae40 4c ed ad jmp gloop 7603 ae ae ae43 ao 00 sav7 ldy 1$ ae ba jsr mapinx umsch. auf bank II in $ ae48 bl 22 lda I indexl I, y addrl indirekter index #I 7608 ae4a aa tax 7609 ae4b 20 d7 ae jsr movtop 7610 ae4e 85 3d sta frespc addrl zeiger auf neuen string 7611 ae50 84 Je sty frespc+l addrh zeiger auf neuen string 7612 ae52 Ba txa 7613 ae53 4c cb ae jmp movpnt zeiger für garb. coll. stellen 7614 ae ae ae56 ===> trailer- tes t, ob string ungültig <=== 76 I 7 ae ae56 c4 Je chkgrb cpy fretop+l addrh top of string free space 7619 ae b bcc cfre ae5a do 06 bne cfre I 7621 ae5c c5 3b cmp fretop addrl top of string free space 7622 ae5e fo 25 beq cfre ae bcc cfre ae cfrel bit highds addrl zielende (verschieben I/ temp. facll 7625 ae bmi cfre ae66 a9 03 lda 1$ ae68 20 d7 ae jsr movtop 7628 ae6b a9 03 cfre2 lda 1$ ae6d 20 cb ae jsr movpnt zeiger für garb. coll. stellen 7630 ae70 ao 02 ldy #$ ae d ba jsr mapstr umsch. auf bank " ae75 bl 5b lda ldefpntl,y addrl zeiger funkt.-def./ temp. facij 7633 ae77 c9 ff cmp ll$ff 7634 ae79 do 0 I bne cfre ae 7b 60 rts 7636 ae7c 7637 ae 7c 7638 ae7c bl 5b cfre3 lda (defpnt I, y addrl zeiger funkt.-def./ temp.facl ae 7e sta index I, y addrl indirekter index II 7640 ae81 88 dey 7641 ae82 10 f8 bpl cfre ae84 60 rts 7643 ae85 76H ae ae85 a5!d cfre4 lda temmpt zeiger auf zeitw. stringdescriptor I rel. offset I 7646 ae87 fo 18 beq naa2 müll beseitigt, fretop eintragen 7647 ae89 48 fa pha 7648 aeba 20 af ae jsr slr! 7649 ae8d b I 20 lda ltempstl,y addrl für 3 temp. string-descriptoren 7650 aebf ao 00 ldy #$ ae a sta llowdsl,y addrl zielanfang I verschieben}/ temp.facl2

187 610/710 basic-strng2 hard+soft ass/reass.... seite 015B zeile adr. obj.-code source-code 7652 ae ae ae ae9b 7656 ae ae9b 765B ae9c 7659 ae9d 7660 ae9f 7661 aeal 7662 aea 1 cb a9 ff 91 6a cb 91 6a 6B 3B e9 04 do eb iny lda 1$ff sta (lowds),y iny sta (lowds),y pla sec sbc 1$04 bne fa 7663 aeal :::> müll beseitigt. fretop eintragen (::: 7664 aea aeal 20 Be ba naa2 jsr mapusr 7666 aea4 6B pla 7667 aea5 6B pla 766B aea6 a5 3d lda frespc 7669 aeab a4 3e ldy frespc+t 7670 aeaa B5 3b sta fretop 7671 aeac B4 3c sty fretop+l aeae 60 rts 7673 aeaf 7674 aeaf B aeaf aebo aebl aeb2 ab BB BB b aeb4 B5 6b 76BO aeb6 BB 76B1 aeb7 bl 20 76B2 aeb9 BS 6a 76B3 aebb aebc bl aebe 7686 aebf 7687 aect 7688 aec aec aec aecb 7692 aec a 85 6a e6 6b slr 1 slr2 tay dey dey lda (tempstj,y sta lowds+l dey lda ltempst}.y sta lowds dey lda ltempst}.y clc adc lowds sta lowds bcc slr2 inc lowds+l rts 7693 aec8 :::> zeiger für garb. coll. stellen (::: 76 9' aec aec8 aeca 49ff 3B movpnt eor #$ff sec aecb 6S Sb adc defpnt 7698 aecd a' Sc ldy defpnt aecf bo 01 bcs movdo addrl zielanfang (verschieben)/ temp. facl2 addrl zielanfang (verschieben)/ temp. facl2 umsch. auf b1nk # 1 addrl zeiger auf neuen string addrh zeiger auf neuen string addrl top of string free space addrh top of string free space addrl für 3 temp. string-descriptoren addrh zielanfang lversch.j/ bytes vor dez.punkt addrl für 3 temp. string-descriptoren addrl zielanfang /verschieben}/ temp.fac#2 addrl für 3 temp. string-descriptoren addrl zielanfang (verschieben}/ temp. facl2 addrl zielanfang (verschieben}/ temp.fac#2 addrh zielanfang (versch. }/ bytes vor dez.punkt addrl zeiger funkt.-def./ temp.fac#j addrh zeiger funkt. -def./ temp.fac#j

188 610/710 basic-strng2 hard+soft ass/reass.... seite 0159 zeile adr. obj.-code source-code 7700 aed I I aed aed aed aed aed7 85 5b 84 5c aed7 49 ff aed aeda 65 6d 7709 aedc a4 6e 7710 aede 7711 aeeo 7712 aeel bo d 7713 aee3 84 6e movoo dey sta defpnt sty defpnt+7 rts movtop eor l#$ff sec adc lowtr mov07 ldy lowtr+7 bcs movoi dey sta lowtr sty lowtr aee5 60 rts 7715 aee aee aee6 4c a7 9b infcer jmp fcerr 7718 aee aee aee9 ===> basic-routine instring <=== aee9 aee9 aeeb aeed aefo aefl aef3 aef6 aef9 aefb aefd afoo afo I af03 af05 af07 afoa afod afof 7740 afll 7741 afl afh 770 afl6 77H af19 a2 02 b5 74 9d ao 02 ca 70 f8 20 c I b5 a2 02 b5 74 9d a3 02 ca 10 f8 a ab 20 2a 9 7 a6 75 fo d5 ca a2 05 bd ao aflb ca 7746 af7c 10 f afle a af20 af22 a f I ao 03 b7 64 incopo ldx #$02 incopl lda facmo,x sta tmpdes,x dex bpl incopl jsr frmevl jsr chkstr ldx 1#$02 incop2 lda facmo,x sta tmpdes+3,x dex bpl incop2 ldx #$0 7 stx faclo jsr savl7 jsr chkcls ldx faclo beq infcer dex stx facmoh ldx #$05 inst2 lda tmpdes,x sta highds,x inst3 dex bpl inst2 lda highds 2 sta i6509 ldy #$03 lda I highds I, y addrl zeiger funkt.-def./ temp.facl#3 addrh zeiger funkt. -def./ temp.facl#3 addrl ursprunganfang lverschiebenll temp. facl#2 addrh ursprunganfang (verschieben} temp. faclt2 addrl ursprunganfang (verschieben}/ temp.facl#2 addrh ursprunganfang (verschieben} temp. fac#2 ausgabe "?illegal quantity error", ready fac 1#1: mantisse temp. speieher "instr$" auswertung beliebiger ausdruck prüfen, ob stringvariable fac #7: mantisse temp. speieher "instr$" fac 1#1: mantisse test" I, sonst fehler +ready fac 1#1: mantisse fac 1#1: mantisse temp. speieher "instr$' addrl zielende (verschieben}/ temp. fac#l bank zielende (verschieben/ temp. fac#l 6509 indirection register addrl zielende (verschieben}/ temp.fac#l

189 610/710 basic-strng2 hard+soft asslreass... seite 0760 zeile adr. obj.-code source-code 7751 af a af af2a 775' af2c 7755 af2e 7756 af af af3' f8 a ao 03 b e af af38 10 f af3a a5 6e af3c af3e aho ah2 afh fo 39 a5 6d a " 7767 ah af'7 a5 6e 7769 ah af'b bo 2a 7777 af'd c5 6a 7772 af'f af51 do 2' 7774 af53 ' H 7775 af55 c' 6e , ' af57 af59 af5a af5b af5d af5e af60 af62 af64 af66 af68 a f6a af6c af6e af70 af72 afh af76 af77 af79 af7a af7d afbo fo ab b 1 6b , " b 1 6f c5 72 fo 0' e6 73 do d' e6 H do e1 e6 73 a5 73 2c a9 00 '8 ad a3 02 ac a' 02 ae a5 02 inst' inst5 sta lowds,y dey bpl inst3 lda hightr+2 sta i6509 ldy 1$03 lda I hightri, y sta lowtr+1,y dey bpl inst4 lda lowtr+1 beq instnf lda lowtr sta i6509 lda 1$00 sta facmo clc lda lowtr+ 1 adc facmoh bcs instnf cmp lowds bcc inst6 bne instnf inst6 ldy facmo cpy lowtr+1 beq instfd tya clc adc facmoh tay lda (lowds+1),y sta facho ldy facmo lda I lowtr+2 I, y cmp facho beq inst7 inc facmoh bne inst5 inst7 inc facmo bne inst6 instfd inc facmoh lda facmoh.byte $2c instnf lda 1$00 pha lda tmpdes+3 ldy tmpdes+' ldx tmpdes+5 addrl zielanfang (verschieben!/ temp. facl2 bank ursprungende (verschieben} 6509 indirection register addrl ursprungende (verschieben}/ temp. faclt addrh ursprunganfang (verschieben) temp. facl2 addrh ursprunganfang (verschieben) temp.facl2 addrl ursprunganfang (verschieben)/ temp.facl indirection register fac 11: mantisse addrh ursprunganfang (verschieben} temp.facl2 fac 11: mantisse addrl zielanfang (verschieben}/ temp. facl2 fac 11: mantisse addrh ursprunganfang (verschieben) temp. facl2 fac 11: mantisse addrh zielanfang lversch.)/ bytes vor dez.punkt fac 11: mantisse fac 11: mantisse bank ursprunganfang (verschieben)/ vorz.exp. fac 11: mantisse fac 11: mantisse fac 11: mantisse fac 11: mantisse fac 11: mantisse temp. speieher "instr$" temp. speieher "instr$" temp. speieher "1nstr$"

190 610/710 basic-strng2 hard+soft ass/reass.... seite 0161 zeile adr. obj.-eode souree-code 7799 af83 20 ef ab jsr fretmp 7800 af86 ad ao 02 lda tmpdes temp. speieher instr$ 7BO I afb9 ae a I 02 ldy tmpdes+l temp. speieher 'instr$' 7B02 afbe ae a2 02 ldx tmpdes+z temp. speieher 'instr$' 7B03 af8f 20 ef ab jsr fretmp 7B04 af9z 20 Be ba jsr mapusr ums eh. auf bank I I 1B05 af95 6B pla 7806 af96 ab tay 7BO 7 af97 4c 37 9d jmp sngflt 7BOB af9a 7B09 af9a.end 7810 af9a.lib delete

191 510/710 basic-delete hard+soft ass/reass.... seite 0152 zeile adr. obj.-code source-code af9a af9a af9a af9a af9d ===> ausgabe "?syntax error ready <=== 4c 4f 97 nrange jmp snerr 7817 af9d 7818 af9d ===> besic-routine 'delete' <=== 7819 af9d af9d af9f afa2 afa 4 afa6 afa8 afaa afac afaf afbl afb3 afb5 afb6 afb7 afb9 fo fb 20 H af fo f6 a5 6d a5 6e f ao 01 bl 6d 88 aa do 04 b I 6d 1835 afbb fo afbd b1 6d 1831 afbf 85 6d 7838 afc e 1B39 afc3 a afc5 3B 7841 afc5 e5 6d 7842 afcb aa 1B43 afc9 a5 26 7B44 afcb e5 6e TBU afcd 1846 afce afdo 1B48 afdl 1849 TB 50 TB 51 afd2 afd4 afd6 ab bo 21 Ba 1B 65 Zf B5 2f 9B 1B52 afdl B53 afd9 B5 30 7B54 afdb ao 00 1B55 afdd 20 Be ba 7B56 afeo bl 6d 1851 afe B5B afe' cb 1859 afe5 do f6 delete beq nrange jsr range beq nrange lda lowtr ldx lowtr+1 sta index2 stx index2+1 jsr fndlin bcc del300 ldy 1$0 I lda (lowtrl,y dey tax bne noteos lda (lowtrl,y beq del300 noteos lda (lowtr],y sta lowtr stx lowtr+l del300 lda index2 sec sbc lowtr tax lda index2+ I sbc lowtr+ I tay bcs notdel txa clc adc txtend sta txtend tya adc txtend+1 sta txtend+l ldy tt$00 del500 jsr mapusr lda I lowtr I, y sta (index2j,y iny bne del500 ausgabe '?syntax error ready ausgabe '?syntax error', ready zeilenbareich einlesen, test gültig ausgabe '?syntax error', ready addrl ursprunganfang (verschiebenl/ temp.factt2 addrh ursprunganfang (verschieben] temp.factt2 addrl indirekter index tt2 addrh indirekter index 12 startadr. von prg.zeile berechnen addrl ursprunganfang (verschieben]/ temp. factt2 addrl ursprunganfang lverschiebenl/ temp. facl2 addrl ursprunganfang (verschieben]/ temp.facl2 addrl ursprunganfang (verschieben]/ temp.facl2 addrh ursprunganfang (verschieben/ temp. factt2 addrl indirekter index 12 addrl ursprunganfang (verschieben// temp, fac#2 addrh indirekter index tt2 addrh ursprunganfang (verschieben/ temp.factt2 addrl zeiger ende addrl zeiger ende addrh zeiger ende addrh zeiger ende basic-text basic-text basic-text basic-text umsch, auf bank # addrl ursprunganfang (verschieben// temp. fact2 addrl indirekter index 12

192 670/770 basic-delete hard+soft ass/reass... sei te 0763 zeile adr. obj.-code source-code 7860 afe 7 e6 6e inc lowtr+7 addrh ursprunganfang (verschieben} temp.facl afe9 e6 26 inc index2+7 addrh indirekter index afeb a5 30 lda txtend+7 addrh zeiger ende basic-text 1863 afed c5 26 cmp index2+7 addrh indirekter index afef bo ec bcs del aff7 4c 9b 86 notdel jmp fini linkadr. berechnen, ready 7866 afh afh 7868 afh ===> Zeilenbereich einlesen, tes t gültig <=== 1869 afh 7870 afh range bcc rng aff6 fo 01 beq rng affb c9 ab cmp #$ab affa fo 03 beq rng affc a9 00 rngerr lda 1$ affe 60 rts afff afff afff 20 Be ba rng700 jsr mapusr ums eh. auf bank # b e Bd jsr linget Zeilennummer lesen, in adressformat umwandeln 1880 b f 87 jsr fndlin startadr. von prg.zeile berechnen boob ba jsr chrgot letztes zeichen erneut nach ac (indirekter sprungl 1882 boob fo Oe beq rng bood c9 ab cmp #$ab 7884 boof do eb bne rngerr 7885 bo ba jsr chrget nächstes zeichen nach ac lind.jmpj 7886 bo e Bd jsr linget zeilennummer lesen, in adressformat umwandeln b071 do e3 bne rngerr 7888 b079 a5 7b rng200 lda linnum lo-byte akt. zeilennummer 1889 b07b 05 7c ora linnum.,.1 hi-byte akt. zeilennummer 7890 b07d do 06 bne rngrts 789 I boif a9 ff lda l$ff 7892 b b sta linnum lo-byte akt. zeilennummer 1893 b c sta linnum+7 hi-byte akt. zeilennummer 7894 b rngrts rts 1895 b b026.end b026.lib using

193 610/710 basic-using hard+soft ass/reass..... seite 0164 zeile adr. obj.-code source-code b026 b026 b026 b026 b028 b02b b02e b031 b034 b036 b037 b039 b03a b03c b03d b03f b b043 aa 7917 bou boh boh boh boh boh bou b04a b04b b04d b050 b052 b053 b055 b056 b058 b05a b05c b05d b05f ===> basic-routine "printusing" <=== a2 ff Be ba 20 cl 9S b5 a5 H u a5 75 u a5 76 u ao 03 bl H using ldx Sff stx endfd jsr chrget jsr frmevl jsr chkstr lda facmo pha lda faclo pha lda facsgn pha sta i6509 ldy So3 lda (facmo/,y tax dey ===> pu-stringzeiger in formatzeiger <=== ldform sta form,y bl H lda lfacmoj,y fb Bd ab fo Oa dey bpl ldform sta lfor stx i6509 tay beq ser 88 cncj dey bl 09 c9 23 fo do f6 4c 4f 97 ser lda I form/, y cmp S23 beq cscol tya bne cncj jmp snerr b06z 1938 b b062 ===> test 7940 b b062 a9 3b cscol lda S3b 7942 b eex2 jsr synchr H b061 b069 b06c bo&f" b071 b073 b076 b079 b07c b07e b080 bobi 84 8b Sc 5f az 20 c I II 10 3b zo a5 b2 ZO ea b3 ae fo 16 az OD 38 ad 6d OZ print using: zeiger auf ende feld nächstes zeichen nach ac lind.jmpl auswertung beliebiger ausdruck prüfen, ob stringvariable fac II: mantisse fac #I: mantisse fac II: vorzeichen 6509 indirection register fac II: mantisse addrl format-zeiger fac 11: mantisse pu-stringzeiger in Formatzeiger print using: länge formatstrings 6509 indirection register addrl format-zeiger test im printusing-string <=== sty parsts sty bnr jsr frmevl bi t val typ bpl conv jsr ini jsr anaf ldx chsn beq prcha ldx 1$00 sec lda cform im printusing-string ausgabe "?syntax error', ready test:folgt ascii o. token im akt. text, sonst error das analyse-byte I print using: zeiger auf beginn auswertung beliebiger ausdruck flag für variablen typ IO=num, l=stringl print using: justify flag print using: zeichen zahler (feldl

194 610/710 basic-using hard+soft ass/reass... seite 0165 zeile adr. obj.-code source-code 7955 bob4 ed 5e b0b7 90 Ob 7957 bob9 a2 3d 795B bobb 7959 bobe 7960 b b b b b b B I BO b099 b09a b09c b09e boa I b0a3 b0a6 boa 7 boaa boac boae bobl b0b4 b0b7 boba ec do 03 4a sbc hulp bcc prcha ldx #$3d cpx chsn bne schsl lsr a adc #$00 tax aa schs I ao 00 prcha ldy #$00 Ba chx txa fo 05 beq cpef ca dex a9 20 oblk lda #$20 do 09 bne outc cc 5e 02 cpef cpy hulp bo f7 bcs oblk 20 df bo jsr savl2 cb iny 20 e3 b3 outc jsr cdout do ea bne chx fo Oe beq reay 20 e2 a3 conv jsr fout 20 e3 a 7 20 a5 b2 20 e7 bo ba 79BI bobd c9 2c 79B2 bobf fo a3 79B3 boc I 3B 79B4 boc2 66 Bb 79B5 b0c4 20 ea b3 79B6 boc 7 6B 79B 7 bocb aa 79BB b0c9 6B 79B9 boca ab 7990 bocb 6B 799 I bocc bocf b0d b0d b0d b0d bodc 799B 7999 BOOO BOOI B002 B003 bodc bodc bodf bodf bodf 20 Be ba 20 ef ab ba c9 3b fo 03 4c cb Be 4c 26 ba ba b0e2 bl 22 B004 b0e4 4c Be ba B005 boe 7 B006 boe 7 B007 b0e7 BOOB boea 8009 boed ad Bd 6f 02 a9 ff reay nocr sa v I 2 fform jsr foutst jsr ini jsr fform jsr chrgot cmp #$2c beq eex2 sec ror parsts jsr anaf pla tax pla tay pla jsr mapusr jsr fretmp jsr chrgot cmp #$3b beq nocr jmp ocrlf jmp chrget jsr mapinx lda I index I I. y jmp mapusr lda pufill sta blfd lda #$ff print using: zähler print using: justify flag print using: zähler ausg. I pu-char. decrement zähler umw. gk-zahl in string Iablage ab $200) letztes zeichen erneut nach ac tindirekter sprung) dos analyse-byte I umsch. auf bank # I letztes zeichen erneut nach ac tindirekter sprung) ausgabe er l+lfl auf akt. kanal nächstes zeichen nach ac lind.jmpl umsch. auf bank I# in $241 addrl indirekter index II umsch. auf bank # I print using: FÜllzeichen print using: blank/stern flag

195 610/710 basie-using hard+soft ass/reass.... seite 0166 zeile adr. obj.-eode source-code BOIO boef BOl I b0f2 BOI2 b0f3 BOI3 b0f5 BO 14 bofb BOI5 bofa BOI6 bofd BOI7 bofe BOIB bioo BOI9 bl02 B020 bl04 B021 bl06 B022 biob B023 bioa B024 bioe B025 bioe B026 b" I B027 bl" B02B bl 15 B029 bll7 B030 b "9 Bd 6e 02 2e B6 Be ec 5e 02 fo 33 b cb e9 20 fo f3 e9 2d fo e9 e9 2e fo e9 e9 45 fo II 9d Be eb 24 Be 10 de ee B031 B032 b lle bllf 'e f5 bo B033 bllf B034 bllf b B035 B036 bl22 bl24 c9 2d do 03 B037 bl26 6e 6' 02 B03B bl29 eb B039 bl2a Be B040 bl2d a5 Be B04 I bl2f B042 bl31 B6 Be BOO bl33 20 ea b3 BOH bl36 ad B045 bl39 c9 ff B046 bl3b fo 29 BOH bl3d ad 6b 02 BO'B b 140 fo Jf BOH bl42 ad B050 b145 do 12 B051 bih ae B052 b Ha b2 B053 bl4d de BOH bl50 e8 B055 bl51 Be B056 bl bj B057 bl57 fo 25 B05B bl59 ae 6a 02 B059 bl5e do I 7 B060 bl5e ac 6e 02 B061 bl B062 bl63 ad B063 bl66 ana stp insy lsg nomn eoa rtts ete sta sno.byte $2c stx parstx cpy hulp beq eoa lda buf,y iny emp 1$20 beq insy cmp 1$2d beq ana emp l$2e beq stp emp 1$45 beq Isg sta buf,x stx enr inx bit parstx bpl insy inc vn jmp insy lda buf,y cmp 1$2d bne nomn ror usgn iny sty uexp lda parstx bpl rtts stx parstx jsr anaf lda vf cmp l$ff beq erst lda fesp beq cff lda uexp bne ete ldx enr jsr et2 dec buf+2,x inx stx uexp jsr alg beq hup ldy posp bne sswe ldy sno bmi sswe lda vf 806, b bl66 ===> ungültiger wert, feldausg. mit <=== 8066 bl66 print using: vorzeichen nummer dos analyse-byte 2 print using: zähler basic input-puffer l-$2ff} basic input-puffer l-$2ffl print using: zeiger auf ende dos analyse-byte 2 print using: anzahl stellen vor dezimalpunkt basic input-puffer l-$2ff} print using: Vorzeichen exponent print using: zeiger auf exponent dos analyse-byte 2 dos analyse-byte 2 print using: # position vor dez.pkt. ungultiger wert, feldausg. mit print using: exponent flag (feldl print using: zeiger auf exponent print using: ze~ger auf ende basic input-puffer l-$2ff} +2 print using: zeiger auf exponent print us~ng: +/- flag (feld) print us~ng: print us~ng: vorzeichen nummer # position vor dez.pkt.

196 610/710 basic-using hard+soft ass/reass.... seite 0167 zeile adr. obj.-code source-code BD67 BD6B BD69 BD7D bl66 bi6b bl6b bl6d fd 69 ce 6B 02 dd OS ad BD71 bi7d fd Sf BD72 bl72 ee B073 bi7s 20 e9 bl BD14 bi7b 20 cd b2 BD7S bl7b 20 e9 b I BD76 bl7e 4c 3B b3 BD77 bibi BD7B bibi BD79 BDBD bibi bib4 ac 6S 02 fd 16 BDBI bib6 Bd Se 02 BDB2 bib9 3B BDB3 biba 6e 6c 02 BD84 bibd a4 Be BOBS bibf ad BDB6 bl92 10 OS BDB7 bl b2 BDBB bl97 fd 11 BDB9 bl b2 BD9D bl9c a4 Be BD91 bl9e fd Da BD92 blad b bla3 dd OS BD94 blas ce erst rspa sswe hup cff no4 ftf beq errf dec vf bne rspa lda nf beq errf inc swe jsr shpn jsr uround jsr shpn jmp chout ldy uexp beq ftf sta hulp sec ror etof ldy parstx lda usgn bpl no4 jsr nos3 beq rndd jsr nos4 ldy parstx beq rndd jsr cho bne rndd dec vn BD9S blaß bd 03 bcs devn blaa 20 cd b2 rndd jsr uround 8097 blad 38 devn2 sec 8098 blae ad lda vf 8099 blbl ed sbc vn BIDD BIO I BID4 BIDS BID Bll1 blb4 blb6 blb9 blbc blbe biet blc3 blc4 blc6 blc7 blc9 blcc 90 Tb Bd ac 6a 02 dd Tb ac 6e ab fd Ob BB dd 13 ad Dd bcc errf sta swe ldy posp bne ahp ldy sno bmi ahp tay beq errf dey bne ldvn lda nf ora vn Bl Bl14 blcf dd ad bldl bldl bne hup 811S bldl ===> ausgabefeldmit füllen <=== 8116 bldl 8117 bldl a9 2a errf BIIB bld3 20 e3 bj staut 8119 bld6 dd fb lda #$2a jsr cdout bne staut ausgabefeldmit füllen print using: # position vor dez.pkt. print using: # position nach dez. pkt. ausgabefeldmit füllen print using: zähler ausgabezahl runden print using: zeiger auf exponent print using: zähler print using: switch dos analyse-byte 2 print using: vorzeichen exponent dos analyse-byte 2 print using: anzahl stellen vor dezimalpunkt ausgabezahl runden print using: # position vor dez.pkt. print using: anzahl stellen vor dezimalpunkt ausgabefeldmit füllen print using: zähler print using: +/- flag (feld} print using: vorzeichen nummer ausgabefeldmit füllen print using: # position nach dez.pkt. print using: anzahl stellen vor dezimalpunkt ausg. I pu-char, decrement zähler

197 610/710 basic-using hard+soft ass/reass... seite 016B zeile adr. obj.-code source-code Bl20 bldb bld9 Bl22 bld bld9 ab ahp 8124 blda fo a bldc ad ldvn 8126 bldf do 9d Bl27 blel ce BI2B ble4 e6 8b 8129 ble6 4c 7e bl Bl30 ble9 Bl31 ble9 Bl32 ble9 Bl33 blea 8134 bled 3B ad 6B 02 ed shpn Bl35 blfo fo 3b Bl36 blf2 a4 Be Bl37 bih 90 IB 813B blf6 Bd 5e 02 Bl39 blf9 cc incy Bl40 blfc fo 02 Bl41 blfe bo 01 Bl42 b200 cb ity Bl43 b201 ee nosl B144 b a b2 nos4 Bl45 b207 ce 5e 02 Bl46 b20a do ed B 14 7 b20c fo ld B14B b20e 49 ff pntl B149 b BI 50 Bl51 BI 52 Bl53 BI 54 b212 b215 b21b b21a b21b Bd 5e 02 cc 5f 02 fo 05 BB ce decy Bl55 Bl56 Bl57 BI5B Bl59 Bl60 Bl61 Bl62 Bl63 Bl64 Bl65 Bl66 Bl67 BI6B Bl Bl71 Bl72 Bl73 b21e b21f b221 b223 b226 b229 b22b b22d b22e b22e b22e b230 b232 b235 b236 bz39 b23a b23a b23a 2c e6 Bb a9 BO 20 3c b2 ce 5e 02 do ea B4 Be 60 do d ca ec a9 00 inz nos3 poi t rdy sexp eado rts tay beq hup lda vn bne hup dec swe inc parsts jmp hup sec lda vf sbc vn beq rdy ldy parstx bcc pntl sta hulp cpy enr beq ity bcs nosl iny inc vn jsr eado dec hulp bne incy beq poit eor #$ff adc #$01 sta hulp cpy bnr beq inz dey dec vn. byte $2c inc parsts lda #$BO jsr eadj dec hulp bne decy sty parstx rts bne retrn eor #$09 sta buf,x dex cpx uexp rts lda #$00 print using: anzahl stellen vor dezimalpunkt print using: zähler dos analyse-byte 1 print using: # position vor dez.pkt. print using: anzahl stellen vor dezimalpunkt dos analyse-byte 2 print using: zähler print using: zeiger auf ende print using: anzahl stellen vor dezimalpunkt print using: zähler print using: zähler print using: zeiger auf beginn print using: anzahl stellen vor dezimalpunkt dos analyse-byte print using: zähler dos analyse-byte 2 basic input-puffer l-$2ff} print using: zeiger auf exponent

198 610/710 basic-using hard+soft ass/reass... seite 0169 zeile adr. obj.-code source-code BIH BI 75 8 I 76 BI 77 8 I 78 BI BIBI BIB2 BIB3 BIB4 b23c b23f b240 b20 b245 b248 b24a b24d b250 b252 b255 Bl85 b255 BIB6 b b25b 8188 b25b 8189 b25d 8190 b b b265 Bl93 b267 B194 b b26a 8196 b26b 8197 b26c 819B 8199 B B205 b26c b26c b26f b271 b2 74 b276 b279 b27b B206 b27e 60 B207 b27f B20B b27f B209 B210 B2" B212 b27f b2b2 b2b5 b2b7 B213 B2" B215 B216 B217 B21B B219 B220 B221 B222 B223 B224 B225 B226 B227 B22B B229 B230 B231 b2bb b2bb b2bb b2b9 b2ba b2bc b2bf b291 b293 b295 b29b b29b b29c b29c b29c b29c b29c b29e b2a0 ae eb 2c 6c d fo Ob 20 7f b2 20 2e b2 bo fb 4c 5e 9f bd de c e b2 bo f3 2c 6c Be 6B 6B 60 ad BO Bd a9 30 9d a9 3 I 9d bd fe c IB cb fo 05 cc 7 I a4 Bb do d4 20 9c b2 ee 6d eadj tagl tag2 retrn et3 et2 tag3 ldx uexp inx bit etof bmi tag2 eor usgn beq tag2 jsr tag3 jsr sexp bcs tag I jmp overr lda buf,x dec buf,x cmp /1$30 jsr sexp bcs tag2 bit etof bpl et3 sty parstx pla pla rts lda usgn eor #$BO sta usgn lda 11$30 sta buf+l,x lda #$3 I sta buf+2,x rts lda buf,x inc buf,x cmp /1$39 rts an sub clc iny beq ansoio cpy lfor bcc ans020 ansoio ldy parsts bne retrn ans020 jsr savl inc cform rts ===> bank formatstring nach i6509 <=== a5 Ob B5 01 b I 09 sa v I lda form+2 sta i6509 lda (form},y print using: zeiger auf exponent print using: switch print using: vorzeichen exponent ausgabe "?overflow error", ready basic input-puffer l-$2ff} basic input-puffer l-$2ff} print using: switch dos analyse-byte 2 print using: vorzeichen exponent print using: vorzeichen exponent basic input-puffer l-$2ff} +I basic input-puffer l-$2ff} +2 basic input-puffer l-$2ff} basic input-puffer l-$2ff} print using: länge formatstrings dos analyse-byte I bank formatstring nach i6509 print using: zeichen zähler lfeld} bank format-zeiger 6509 indirection register addrl format-zeiger

199 610/710 basic-using hard+soft ass/reass.... seite 0170 zeile adr. obj.-code source-code B232 b2a2 4c Be ba B233 b2a5 B234 b2a5 B235 B236 B237 B23B B239 B240 B241 B242 B243 B2H B245 B2H B247 b2a5 b2ab b2ab b2ad b2af b2b2 b2b3 b2b5 b2bb b2ba b2bd b2be b2bf 20 e9 ab Bd 5e 02 a2 Oa a9 00 9d ca 10 fa Be B6 Be Be aa ab 60 B24B b2c0 B249 b2c0 ini stz jmp mapusr jsr frefac sta hulp ldx #$0a lda #$00 sta swe,x dex bpl stz stx flag stx parstx stx dolr tax tay rts B250 b2c0 ===> ausgabezahl runden <=== B251 b2c0 B252 b2c0 1B uround clc B253 B254 b2c1 b2c3 a5 Be 6d lda parstx adc nf B255 b2c6 bo 39 bcs rrts B256 b2c8 38 sec 8257 b2c9 e5 Bb sbc parsts B258 b2cb bcc rrts B259 B260 B b2cd b2d0 b2d2 b2d4 cd fo 02 bo 2d cd 5f 02 cbn cmp enr beq cbn bcs rrts cmp bnr 8263 B B26 7 b2d7 b2d9 b2da b2dd b2df aa bd c bcc rrts tax lda buf,x cmp #$35 bcc rrts 8268 b2e1 ec 5f 02 con1 cpx bnr 8269 b2e4 fo Oa beq add b2e6 ca dex B2 71 B b2e 7 b2ea b2ed 20 7f b2 Be fo f2 jsr tag3 stx enr beq con1 B2H b2ef 60 rts B275 b2f b2f b2f0 ===>zahl <1 aufrunden auf '1 <=== 8278 b2f b2f0 a9 31 add b2f2 9d B1 B2B b2f5 b2f6 b2fb b2fa b2fc b2fe e8 86 Be c6 Bb e6 8b ee b rrts lda #$31 sta buf,x inx stx parstx dec parsts bpl rrts inc parsts inc vn rts umsch. auf bank # 1 stringverwaltung, freier string print using: zähler print using: zähler print using: komma flag dos analyse-byte 2 print using: dollar flag dos analyse-byte 2 print using: # position nach dez. pkt. dos analyse-byte 1 print using: zeiger auf ende print using: zeiger auf beginn basic input-puffer (-$2ffl print using: zeiger auf beginn zahl <1 aufrunden auf 1' print using: zeiger auf ende basic input-puffer (-$2ffl dos analyse-byte 2 dos analyse-byte das analyse-byte print using: anzahl stellen vor dezimalpunkt

200 610/710 basic-using hard+soft asslreass... seite 0171 zeile adr. obj.-code source-code B2BB B2B9 B290 B291 B292 B293 B294 b302 b302 b302 b304 b306 b309 b309 a4 Be fo 17 ac 5f 02 alg cho ldy parstx beq szer ldy bnr B295 b309 ===> buffer mit o vergleichen <=== B296 b309 B297 B29B B299 B300 b309 b30c b30e b30f b c cmo lda buf,y cmp #$30 rts B301 b30f B302 B303 B304 B305 B306 b30f b311 b3" b317 b31a e6 Be 20 3a b2 ee 5f 02 cc fo e5 nbr inc parstx jsr eado inc bnr cpy enr beq rrts B307 b31c cb iny B30B b31d B309 b31d B310 b31d ===> o' in zahl suchen <=== B311 b31d B312 b31d b3 szer jsr cmo B313 b320 fo ed beq nbr B3" b rts B315 b323 B316 b323 B317 b323 B31B b326 B319 b32b B320 b329 B321 b32c B322 b32d B323 b32f B324 b332 B325 b335 B326 b33 7 B327 b33b B32B b33b B329 b33b B330 b33b B331 b33d B332 b33f ec lzer fo 05 eb telx bd c a9 30 zout 4e outs 20 e3 b3 out do Of 60 ad e6 Bb ae 5f 02 cpx enr beq zout inx lda buf, x.byte $2c lda #$30 lsr flag jsr cdout bne afrm rts chout lda dolr bmi choutz inc parsts choutz ldx bnr B333 b342 ca dex B334 b343 ac B335 b c b2 afrm B336 b349 cb iny B337 b34a c9 2c B33B b34c do 11 B339 b34e 2c B340 b B341 b353 ad B342 b356 4c 32 b3 B343 B3H B345 b359 b359 b359 ad 6f 02 bout ldy begfd jsr sav1 cmp #$2c bne punt bi t flag bmi baut lda pucoma jmp out lda blfd das analyse-byte 2 o in zahl suchen print using: zeiger auf beginn basic input-puffer (-$2ff) das analyse-byte 2 print using: zeiger auf beginn print using: zeiger auf ende buffer mit o vergleichen print using: zeiger auf ende basic input-puffer (-$2ff) print using: komma flag ausg. 1 pu-char, decrement z~hler print using: dollar flag das analyse-byte 1 print using: zeiger auf beginn print using: zeiger auf anfang feld bank formatstring nach i6509 print using: komma flag print using: Kommazeichen print using: blank/stern flag

201 610/710 basic-using hard+soft ass/reass... seite 0112 zeile adr. obj.-code source-code 8346 b35c 4c 32 b b35f 8348 b35f 8349 b35f c9 2e 8350 b361 do lb 8351 b363 ad b366 4c 32 b b b b369 a5 8b 8356 b36b fo b b36d b36f b372 b374 b375 b378 b31b 8364 b37e 8365 b37e 8366 b37e 8361 b b b b b b38a 8373 b38c 8374 b38f 8375 b b b397 b398 b39b b39d b39f b3a2 b3a4 b3a6 b3a9 b3ac b3af b3b2 b3b5 b3b b3b b3b b3bb 8394 b3bd 8395 b3c b3c b3c b3c3 b3c6 b3c8 b3cb b3cd b3d0 c6 Bb ad b9 38 6e ad c 2f b3 c9 2b fo 3b c9 2d fo 32 c9 5e do 39 a e3 b3 ac b3 do 06 c b3 fo 01 a9 2d 2c a9 2b punt post 20 e3 b3 mout ae bd e3 b3 ac c 28 b3 ad 6e c ad 6e 02 4c 32 b3 ad fo a 1 ce do Be ad 6a f9 jmp out cmp #$2e bne a fplus lda pudot jmp out zerot lda parsts beq lzer dec parsts lda dolr bmi zout sec ror dolr lda pumony jmp outs afplus cmp #$2b beq ispl cmp #$2d beq ispl1 cmp #$5e bne pndd lda #$45 jsr cdout ldy uexp jsr cmo bne mint iny jsr cmo beq post mint lda #$2d bit usgn ispl1 ispl pndd pndx bmi mout lda #$2b jsr cdout ldx uexp lda buf,x jsr cdout ldy endfd jmp telx lda sno bmi bout lda sno jmp out lda swe beq zerot dec swe bne bout lda posp bmi pndx print using: zeichen dez.punkt dos analyse-byte dos analyse-byte print using: dollar flag print using: dollar flag print using: Währungszeichen ausg. I pu-char, decrement zähler print using: zeiger auf exponent buffer mit o vergleichen buffer mit o vergleichen print using: vorzeichen exponent ausg. I pu-char, decrement zähler print using: zeiger auf exponent basic input-puffer 1-$2ff) ausg. I pu-char, decrement zähler print using: zeiger auf ende feld print using: vorzeichen nummer print using: vorzeichen nummer print using: zähler print us1ng: zähler print using: +1- flag lfeldl

202 basic-using hard+soft asslreass... seite 0173 zeile adr. obj.-code source-code 840, b3d2 B'05 b3d5 B'06 b3d7 B'O 7 b3d9 B'OB b3dc 8409 b3df BOO b3e0 B'll b3e B'l3 84H b3e3 b3e3 b3e b3e3 B'l6 b3e b3e9 841B b3ea B'l9 b3ea BHO b3ea BHI b3ed B422 b3f b3f3 842' b3f5 B425 b3fb B'26 b3fa 8427 b3fb 842B b3fe 8429 b400 BOO b'03 B431 b405 B02 b'ob B433 b c b2 c9 2c do df ad 6f e3 b3 cb 'c d2 b3 tat jsr savl cmp ll$2c bne ispll lda blfd jsr cdout iny jmp tat ===> ausg. 1 pu-char, decrement zähler <=== 20 3a b5 cdout ce 6d gooop ac BB b2 20 9e b4 do H Be aa 20 BB b2 bo a6 b4 fo 09 ac Ba anaf gfor sfar nono jsr ochr dec cform rts ldy endfd jsr ansub jsr camp bne pchar sty begfd bcc ffoun tax jsr ansub bcs nono jsr coml beq founl ldy begfd txa B04 b409 B'35 b409 ===> ausgabe 1 pu-char aus ac <=== B06 b'09 B07 b'09 pchar BOB b'oc B09 b40e foun 1 8HO b4 10 BH 1 b03 ffoun 8H2 b'l5 8H3 b'l7 8'" b'la BH5 bob hyo2 8H6 b'le hyo 8H 7 b421 8HB bh3 BH9 b'25 B450 b b'la 8452 b42c 8453 b'le 8454 boo b431 b433 b05 b b b bob 20 3a b5 90 df bo eb ac a6 Bb do d2 Be 6d 02 BB ce 6d BB b2 bo 74 c9 2c fo f b4 90 ef c9 2e do OB eb eo e9 4c 4f aa b4 do Ob ero avfl jsr ochr bcc gfor bcs sfar ldy begfd ldx parsts bne gooop stx cform dey dec cform jsr ansub bcs efo cmp ll$2c beq hyo jsr isp bcc hyo2 cmp ll$2e bne avfl inx cpx 11$02 bcc hyo jmp snerr jsr com2 bne llar bank formatstring nach i6509 print using: blanklstern flag ausg. 1 pu-char. decrement zahler ausgabe 1 zeichen (in acl print using: zeichen zahler lfeldl print using: zeiger auf ende feld ausgabe 1 pu-char aus ac print using: zeiger auf anfang feld print using: zeiger auf anfang feld ausgabe 1 zeichen lin acl print using: zeiger auf anfang feld dos analyse-byte 1 print using: zeichen zahler lfeldl print using: zeichen zähler lfeldl testlausführen. ' - ausgabe '?syntax error', ready testlausführen '$', 'exp',,, -

203 670/770 basic-using hard+saft ass/reass... seite 0774 zeile adr. obj. -code source-code 8462 b43d b43f 8d b442 fe hyo bh5 4c 7e b bh bh8 bcc hyo7 sta chsn inc vf,x jmp hyo 8468 bh8 ===>test/ausführen '$', 'exp', - <=== 8469 bh bh bha bhc 8473 bhf 8474 b b bh bh b45b bhb 8480 bhb 8487 bhb 8482 bhb 8483 bhd 8484 bhf 8485 b b b b b46a 8490 b46b c9 24 do Of 2c f7 78 6e ce c 42 b4 llar cmp #$24 bne expo bit dolr bpl hyo 7 clc ror dolr dec vf jmp hyo 7 ===> testlausführen 'exp', c9 5e expa do 76 a b2 chkk bo cf c9 5e do cb ca 70 H 8497 b46d ee 6b b b b473 bo b b475 cmp #$5e bne isp ldx #$02 jsr ansub bcs ero cmp #$5e bne ero dex bpl chkk inc fesp jsr ansub bcs efo b4 75 ===> testlausführen +, - <=== 8497 bh b475 c9 2b isp cmp #$2b 8499 bh7 do 79 bne cham b479 bhc bhe b480 b483 b486 b488 b48b b48e b497 b492 ad 6e a9 2b 8d 6e 02 ad 6a 02 do ad 6e 6a 02 8c ee 6d spos lda sno bpl spas lda #$2b sta sno lda posp bne ero ror posp s ty endfd inc cfarm rts b b b492 85" b b bh6 ===> testlausführen '-' <=== c9 2d fo ed 38 chom 8517 b497 8c efo 8578 b49a ce b49d 60 cmp #$2d beq spos sec sty endfd dec endfd rts print using: justify flag print using: # pasition vor dez.pkt. testlausführen exp,, - print using: dollar flag print using: dallar flag print using: # pasition vor dez.pkt. <=== test/ausführen +, - sprung 'syntax error', ready sprung 'syntax error', ready print using: exponent flag lfeld} testlausführen - print using: vorzeichen nummer print using: vorzeichen nummer print using: +/- flag lfeldl sprung 'syntax error', ready print using: +/- flag (feldl print using: zeiger auf ende feld print using: zeichen zähler (feldl pr~nt using: zeiger auf ende feld print using: zeiger auf ende feld

204 610/710 basic-using hard+soft asslreass... seite 0175 zeile adr. obj.-code source-code 8520 b49e 8521 b49e 8522 b49e c9 2b comp cmp l$2b 8523 bho fo 15 beq rt 8524 b4a2 c9 2d cmp 1$2d 8525 b4a4 fo II beq rt 8526 b4a6 c9 2e coml cmp l$2e 8527 b4a8 fo Od beq rt 8528 bha c9 3d com2 cmp I$ 3d 8529 bhc fo 09 beq rt 8530 bhe c9 Je cmp l$3e 8531 b4b0 fo 05 beq rt 8532 b4b2 c9 23 cmp 1$ b4b4 do 01 bne rt 8534 b4b6 18 clc 8535 b4b7 60 rt rts 8536 b4b b4b8.end 8538 b4b8.lib butesl

205 610/710 basic-butesl hard+soft ass/reass..... seite 0176 zeile adr. obj.-code source-code 8540 b4b b4b8 ===> programmzeiget auf start (::: 8542 b4b b4b8 a9 01 stxtpt lda 1$01 85H b4ba sta txtptr+2 bank zeiger auf akt. term 8545 b4bc 18 clc 8546 b4bd a5 2d lda txt tab addrl zeiger anfang basic-text 8547 b4bf 69 ff adc l$ff 8548 b4cl sta txtptr addrl zeiger auf akt. term 8549 b4c3 a5 2e lda txttab+l addrh zeiger anfang basic-text 8550 b4c5 69 ff adc l$ff 8551 b4c sta txtptr+ I addrh zeiger auf akt. term 8552 b4c9 60 rts 8553 b4ca 8554 b4ca 8555 b4ca ===> 2 byte-zahl in "linnum komma test. I byte-zahl in xr (::: 8556 b4ca 8557 b4ca 20 e5 b4 getnum jsr getpin dezimal-zahl in klammer nach linnum einlesen 8558 b4cd 8559 b4cd 8560 b4cd :::) kommatest. holt lbyte in xr (::: 8561 b4cd 8562 bkd combyt jsr chkcom test "komma sonst fehl er + ready 8563 b4d0 4C d6 b4 jmp getbyt zahl < 256 aus akt. text nach xr 8564 b4d b4d b4d3 :::) charget, I byte-zahl in xr (::: b4d b4d ba gtbytc jsr chrget nächstes zeichen nach ac (ind.jmpl 8569 b4d b4d b4d6 ===> zahl < 256 aus akt. text nach xr <=== 8572 b4d b4d I b5 getbyt jsr frmnum numerischen ausdruck holen b4d b4d b4d9 ===> zahl < 256 aus akt. text nach xr <=== 8577 b4d b4d9 20 Oe 9b conint jsr posint 8579 b4dc a6 74 ldx facmo fac #1: mantisse 8580 b4de do le bne fcer I ausgabe illegal quantity error ready 8581 b4e0 a6 75 ldx faclo fac II: mantisse 8582 b4e2 4c 29 ba jmp chrgot letztes zeichen erneut nach ac tindirekter sprungl 8583 b4e b4e b4e b4e5 ===> dezimal-zahl in klammer nach linnum einlesen <=== 8587 b4e b5 getpin jsr frmnum numerischen ausdruck holen 8588 b4e b4e b4e8 ===> gk-zahl in fac als adresse nach $11,$12 <=== 8591 b4e b4e8 a5 76 getadr lda facsgn fac II: vorzeichen 8593 b4ea bmi fcer I ausgabe illegal quantity error ready

206 610/710 basic-butesl hard+soft ass/reass.... seite 0177 zeile adr. obj.-code source-code 859~ b4ec b4ee bho b4f2 b4f5 b4f7 b4f9 bhb 8602 bhd b4fe 8604 bhe a5 71 c9 91 bo Oe a2 a5 H a lb 85 lc lda facexp cmp 1$91 bcs fcerl jsr qint lda facmo ldy faclo sty linnum sta linnum+l rts fac II: exponent ausgabe illegal quantity error ready umw. gk-zahl in integer fac II: mantisse fac #1: mantisse lo-byte akt. zeilennummer hi-byte akt. Zeilennummer 8605 b4fe ~c a7 9b fcerl jmp fcerr ausgabe?illegal quanti ty error ready 8606 b b b501 ===> numerischen ausdruck holen <=== 8609 b b cl 95 frmnum jsr frmevl auswertung beliebiger ausdruck 8611 b b b504 ===> prüfen. ob numerische variable <=== 86" b b b b b506 chknum clc. byte $ b506 ===> prüfen. ob stringvariable <=== 8620 b b chkstr sec 8622 b b ~ b507 ===> prüft ob richtiger variablentyp <=== 8625 b b II chkval bit valtyp b509 b50b 8629 b50d b50e 8631 b50e b50e b510 b bo 03 bo fd chkok bmi docstr bcs chkerr rts docstr bcs chkok 8635 b510 ===> ausgabe?type mismatch error ready<=== 8636 b b510 a2 40 chkerr ldx #$ b512 4c jmp error 8639 b b515 flag für variablen typ IO=num. l=stringj ausgabe?type mismatch error ready ind. jmp zur Fehlerroutine 8641 b515 ===> ausgabe string -$00 laddr. in zeropage) <=== 8642 b H 8645 b515 b518 b519 stringverwaltung, freier string 8646 b51b 8647 b51c 20 e9 ab aa ao 00 e ba strprt ]Sr frefac tax ldy #$00 1nx jsr mapinx umsch. auf bank I# in $24)

207 610/710 basic-butesl hard+soft ass/reass.... seite 0178 zeile adr. obj.-code source-code 8648 b51f ca strp2 dex 8649 b520 fo 09 beq strp b522 bl 22 lda I index I J, y addrl indirekter index II 8651 b a b5 jsr ochr ausgabe I zeichen lin acj 8652 b527 c8 iny 8653 b528 4c lf b5 jmp strp b52b 8655 b52b 8656 b52b 4c Be ba strp3 jmp mapusr ums eh. auf bank I I 8657 b52e 8658 b52e 8659 b52e ===> bei bs cursor rechts, sonst space <=== 8660 b52e 8661 b52e a5 Ia ospc lda channl speieherstelle für aktiven kanal 8662 b530 fo 03 beq crtskp ausgabe cursor rechts 8663 b532 a9 20 lda 1$ b534 2c.byte $2c 8665 b b b535 ===> ausgabe cursor rechts <=== 8668 b b535 a9 ld crtskp lda l$1d b537 2c.byte $2c 8671 b b b538 ===> ausgabe.?. <=== 8614 b b538 a9 3f outqst lda l$3f b53a 8677 b53a 8678 b53a ===> ausgabe I zeichen I in acj <=== b53a 8680 b53a 20 f4 bb ochr jsr bsout ausgabe I char auf akt. kanal 8681 b53d 29 ff and l$ff 8682 b53f 60 rts 8683 b b b540 ===> ersatz segment s tart adresse <=== 8686 b b540 ff dostbl.byte $ff, $ff 8687 b541 ff 8688 b542 ff.byte $ff, $ff ersatz segment end adresse 8688 b50 ff 8689 b5h Oe.byte $Oe ersatz logische filenummer für floppy I 14 J 8690 b byte $08 ersatz geräteadr. für floppy {8) 8691 b546 6f.byte $6f ersatz sek.adr. für floppy I 15! 8692 b5h 8693 bsh 8694 b547 ===> ersatzwerte vor disk-befehl init. <=== 8695 b5h 8696 b547 a9 00 dospar lda #$ b549 a2 ff dosprs ldk l$ff 8698 b54b 48 dosprx pha 8699 b54c Ba txa 8700 b54d 48 pha 8 70 I b54e a9 00 lda #$ b Bb sta parsts dos analyse-byte I

208 610/710 basic-butesl hard+soft ass/reass... seite 0179 zeile adr. obj.-code source-code 870J J b552 b554 b556 b559 b55a b55c b55e b561 b564 b565 b56 7 b56a b56d b b b57j 8719 b b b b57b 872J b57d b57f 8725 b b Sc a2 26 9d ca do fa a2 06 bd 40 b5 9d lb 02 ca 10 f7 ae Be I a ba do Oe Be do 5c b5 b7 a5 Bb a6 Be 60 dosoi dos02 done sta parstx ldx #$26 sta buf,x dex bne dosoi ldx #$06 lda dostbl,x sta dosofl,x dex bpl dos02 ldx dfbank stx dosbnk jsr chrgot bne parsei pla and parstx bne dn20 pla jsr prmrpt lda parsts ldx parstx rts 8727 b580 ===> disk-parameter I einlesen <=== JO 8 7JI JJ 8 7J4 8 7J5 87J6 8 7J7 87J8 87J9 b580 b580 b582 b584 b586 b588 b5ba b5bc b58e b590 b59j b b596 c9 2J fo Je c9 57 fo 4e c9 4c fo 4a c9 52 do ba 4c 92 b6 parsei cmp #$2J beq logadr cmp #$57 beq reclen cmp #$4c beq reclen cmp #$52 bne dos5 jsr chrget jmp deliml das analyse-byte 2 basic input-puffer (-$2ff} ersatz segment start adresse addrl das offset untergrenze (bsave,bload} vorgabe für bank-nummer das bank nummer letztes zeichen erneut nach ac (indirekter sprung} disk-parameter I einlesen das analyse-byte 2 syntaxtest: ac = syntax-byte das analyse-byte I das analyse-byte 2 log. file# einlesen (disk-b.} record-länge eintragen (disk-b.} record-länge eintragen (disk-b.} 8741 b596 ===> geräte# l,bank# I einlesen (disk-b. J on <=== 8742 b J b le b7 onl jsr on 8744 b599 4c Be b6 sav60 jmp del b59c 8746 b59c b59c ===> geräte# 1 einlesen (disk-b. I u <=== 8748 b59c 8749 b59c 20 2b b7 unit1 jsr unit b59f 8751 b5al 8752 b5a4 875J b5a b5a8 do fb 20 Je b7 fo fj c9 H fo 58 bank1 dos5 bne sav60 jsr bank beq sav60 cmp #$H beq drv1 nächstes zeichen nach ac (ind.jmp} abfrage auf folgende unit o. bank, sonst fehler bit im dos-syntax-byte 1 setzen, kommatest, parameter einlesen prüfen der geräteadr. (disk-basic}, dann eintragen prüfen der bank # (disk-basicl, dann eintragen drivenummer 1 einlesen (disk-b.j

209 610/710 basic-butesl hard+soft ass/reass... seite OIBO zeile adr. obj.-code source-code 8755 b5aa B 756 b5ac 8757 b5ae 8758 b5b b5b b5b b5b b5b b5ba 8764 b5bc 8765 b5be 8766 b5c b5c b5co 8771 b5c b5c b5c b5ca 8775 b5cc 8776 b5cf 8777 b5dl 8778 b5d b5d b5d6 c9 91 fo eb c9 42 fo ef c9 55 fo e6 c9 50 fo 68 c9 49 do Ja fo 5b cmp #$91 beq onl cmp #$42 beq bankl cmp #$55 beq unitl cmp #$50 beq doffl cmp #$49 bne dosio beq ident b5c0 b5c0 ===> log. file# einlesen ldisk-b. I <=== a b5 b7 20 Ba b7 eo 00 fo 4c Be I f 02 a9 04 do c6 4c H 97 logadr lda #$04 jsr prmrpt jsr getval dn20 cpx #$00 beq qtyer2 stx dosla lda #$04 bne sav60 jmp snerr 87BI b5d6 ===> record-länge eintragen ldisk-b.} <=== 8782 b5d b5d b5d b5d b5dc b5de 8788 b5e b5e b5e b5e b5e B B BBO 1 b5e9 b5eb b5ed b5ef b5f1 b5h b5f6 b5fb b5f8 aa a b5 b7 eo 57 do ba 4c H b5 20 Ba b7 eo 00 fo 2b eo ff fo 27 Be a9 40 do 1e reclen tax lda #$40 jsr prmrpt cpx #$57 bne recoo jsr chrget jmp recon recoo recon jsr getval cpx #$00 beq qtyer2 cpx #$ff beq qtyer2 stx dosrcl lda #$40 bne tacky1 BB02 b5fb ===> auf filenamen Überprüfen <=== BBOJ BBOB b5fb b5f8 b5fa b5fc b5fe b600 c9 22 fo 65 c9 2B fo 61 do d1 dos10 cmp #$22 beq name 1 cmp #$2B beq name1 bne dn20 geräte# l,bank# I einlesen (disk-b.} on geräte# I einlesen ldisk-b. I offset untergrenze einlesen ldisk-b. I auf filenamen Überprüfen test:disk-id eingelesen (disk-b.j syntaxtest: ac = syntax-byte I byte-zahl in xr Iauch eingeklammert! dos logische adresse ausgabe '?syntax error syntaxtes t: ac ready syntax-byte I nächstes zeichen nach ac lind.jmp} 1 byte-zahl in xr tauch eingeklammert! dos record-länge filenamen filenamen einlesen (disk-b. I einlesen (disk-b. I u

210 610/710 basic-butesl hard+soft ass/reass... seite 0181 zeile adr. obj.-code source-code 8809 b b b602 ===> drivenummer 1 einlesen (disk-b.} <=== 8812 b602 8B13 b602 BB14 b604 BB15 b607 BB16 BB17 BB BB20 B821 BB22 8B23 BB24 b60a b60c b60e b611 b614 b616 b61b b61b b61b a9 10 drv1 lda #$10 20 b5 b 7 jsr prmrpt 20 Ba b7 jsr getval eo 02 bo Oa Be Be a9 10 do 76 4c 1b b7 cpx #$02 bcs qtyer2 stx dosds1 stx dosds2 lda #$10 tacky 1 bne del1 qtyer2 jmp qtyerr syntaxtest: ac = syntax-byte 1 byte-zahl in xr (auch eingeklammert} dos disk drive 1 dos disk drive 2 BB25 b61b ===> test:disk-id eingelesen (disk-b. I <=== 8B26 BB27 BB2B BB29 BB30 BB31 b61b b61b b61e b620 b622 b622 ad fo 2a do b1 ident lda didchk beq idcon bne dn20 BB32 b622 ===> offset untergrenze einlesen ldisk-b. I <=== BB33 BB34 BB35 BB36 b622 b622 b624 b627 a ba b d b7 BB37 b62a Be 1b 02 BB3B b62d Bd 1c 02 BB39 b630 a9 02 BB40 b632 B841 b632 doffl lda #$02 jsr prxrpt jsr getoff sty dosofl sta dosofl+1 lda #$02 BB42 b632 ===> bit im dos-syntax-byte 2 setzen <=== BBO b632 BB44 b Be BB45 b634 B5 Be BB46 b636 do 5a B847 b63b BB4B b63b dlimx1 ora parstx sta parstx bne delim1 bit im dos-syntax-byte 1 setzen, kommatest, parameter einlesen ausgabe 'illegal quantity error, ready dos did flag disk-id einlesen ldisk-b. I syntaxtest: ac = syntax-byte 2 dezimalzahl Iauch in klammer} nach linnum addrl dos offset untergrenze (bsave,bload} addrh dos offset untergrenze (bsave,bloadl dos analyse-byte 2 dos analyse-byte 2 BB49 b63b ===> offset obergrenze einlesen (disk-b. I <=== BB50 BB51 BB52 BB53 b63b b63b b63a b63d a ba b d b7 BB54 b640 Be 1d b643 8d 1e 02 BB56 BB57 b646 b64b a9 04 do eb doffh lda #$04 jsr prxrpt jsr getoff sty dosofh sta dosofh+t lda #$04 bne dlimx1 syntaxtest: ac = syntax-byte 2 dezimalzahl Iauch in klammer} nach linnum addrl dos offset obergrenze (bsave,bloadl addrh das offset obergrenze (bsave,bloadl bit im dos-syntax-byte 2 setzen

211 610/710 basic-butesl hard+soft ass!reass... seite 0182 zeile adr. obj.-code source-code 8858 b64a 8859 b64a 8860 b64a ===> disk-id einlesen (disk-b. J <=== 8861 b6h 8862 b64a 8863 b64d 8864 b b b b b65b 8869 b65e 8870 b b ba Bd ba Bd a9 ff Bd ba 4c 92 b6 idcon jsr chrget sta dosdid jsr chrget sta dosdid+l lda ll$ff sta didchk jsr chrget jmp deliml 8872 b661 ===> filenamen I einlesen (disk-b. J <=== 8873 b b b b b b66b 8879 b66d 8880 b b b b b67a 8885 b67c 8886 b67f 8887 b b b b b b6bc 8893 b6be 8894 b6be a b 7 8d Of a9 00 8d a9 02 8d a9 Of 8d ao ba bl cb c4 Of 90 f6 20 Be ba a9 01 name I loop6 lda 11$0 I jsr newnam sta dosfll sta xcnt lda 11$00 sta dosfla lda 11$02 sta dosfla+l lda #$0f sta dosfbl ldy #$00 jsr mapinx lda (indexl),y sta buf,y iny cpy xcnt bcc loop6 jsr mapusr lda #$0 1 nächstes zeichen nach ac (ind.jmp) dos erstes zeichen "id" nächstes zeichen nach ac (ind.jmp) dos zweites zeichen "id" dos did flag nächstes zeichen nach ac (ind.jmp) filenamen einlesen prufen dos filename I länge dos loop-zähler addrl dos filename addrh dos filename bank dos filename I umsch. auf bank (#in $24) addrl indirekter index #1 basic input-puffer (-$2ff) dos loop-zähler umsch. auf bank # b6be ===> bit im dos-syntax-byte 1 setzen, kommatest, parametereinlesen <=== 8896 b6be 8897 b6be 05 8b 8898 b b dell ora parsts sta parsts 8899 b ba deliml jsr chrgot 8900 b695 do 19 bne nxxx b697 b69a b69a 4c 72 b5 done I jmp done 8904 b69a ===> prüfen ob on folgt (disk-b. J <=== 8905 b69a 8906 b69a c9 91 next b69c do b69e 4c 96 b b6al 8910 b6a1 cmp #$97 bne next6a jmp on b6al ===> prüfen ob 'to folgt (disk-b. J <=== dos analyse-byte dos analyse-byte letztes zeichen erneut nach ac (indirekter sprung) kommatest, nächsten parameter einlesen (disk-b. J prüfen ob 'to" folgt (disk-b. J geräte# l,bank# 1 einlesen (disk-b. J on

212 610/710 basic-butesl hard soft ass/reass... seite 0183 zeile adr. obj.-code source-code 8912 b6al 8913 b6al c9 a b6a3 fo b6a5 do b6a b6a7 next6a cmp l$a4 beq next6b bne sav b6a7 ===> prüfen ob p folgt (disk-b. I <=== 8919 b6a b6a b6aa 8922 b6ac 8923 b6ae 8924 b6b b6b ba C9 50 do Of fo 88 next6b jsr chrget cmp 1$50 bne pars22 beq doffh prüfen ob p folgt ldisk-b.l nächstes zeichen nach ac lind.jmpl offset obergrenze einlesen ldisk-b. I 8926 b6b0 ===> kommatest, nächsten parameter einlesen ldisk-b. I <=== 8927 b6b b6b b6b b6b b6b b6ba 8933 b6ba c9 2c do e ba 4c 80 b5 nxxx cmp l$2c bne next6 jsr chrget jmp parsei 8934 b6ba ===> disk-parameter 2 einlesen <=== 8935 b6ba 8936 b6ba 8937 b6bd 8938 b6bf 8939 b6cl 8940 b6c H b6c5 b6c7 b6c9 b6cb b6cd b6cf b6dl b6dl b6dl b6dl ba c9 H fo 10 c9 91 fo lf c9 55 fo 21 c9 22 fo 22 c9 28 fo le parse2 jsr chrget pars22 cmp I$H beq drv2 cmp 1$91 beq an2 cmp 1$55 beq unit2 cmp 1$22 beq name2 cmp 1$28 beq name2 ===> drivenummer 2 einlesen ldisk-b. I <=== 8951 b6dl a9 20 drv b6d3 20 b5 b b6d6 20 Ba b b6d9 b6db b6dd b6e0 b6e b6e b6e4 eo 02 bo 3e Be a9 20 do 20 lda 1$20 jsr prmrpt jsr getval cpx 1$02 bcs qtyerr stx dasds2 lda 1$20 bne del2 prüfen ob on folgt (disk-b. I nächstes zeichen nach ac lind.jmpl disk-parameter I einlesen nächstes zeichen nach ac lind.jmpl drivenummer 2 einlesen (disk-b. I gerätel 2, bankl 2 einlesen ldisk-b. I on geräte# 2 einlesen ldisk-b. I syntaxtest: ac = syntax-byte I byte-zahl in xr Iauch eingeklammert I ausgabe illegal quanti ty error ready dos disk drive 2 bit im das-syntax-byte I setzen, kammatest, parametereinlesen 8961 b6e4 ===> geräte# 2, bank# 2 einlesen (disk-b. I 'on <=== 8962 b6e b6e4 20 le bl an2 jsr an 8964 b6e7 4c 04 bl jmp del2 abfrage auf folgende unit o. bank, sonst fehler bit im das-syntax-byte I setzen, kammatest, parameter einlesen u

213 610/710 basic-butesl hard+soft ass/reass... seite OIB+ zeile adr. obj.-code source-code B965 B966 b6ea b6ea B967 b6ea ===> gerätel 2 einlesen (disk-b. I u <=== B96B b6ea 8969 b6ea 20 2b b7 unit2 jsr unit b6ed do 15 bne del2 B971 b6ef B972 b6fl B973 b6h B9H b6f7 B975 b6fa b6fd 8977 b6ff 897B b b b70+ a b7 Bd Be Be IB 02 a5 2+ Bd a9 02 name2 lda 1$02 jsr newnam sta dosf21 stx dosf2a sty dosf2a+l lda indexl+2 sta dosfb2 lda 1$02 prüfen der geräteadr. ldisk-basicl, dann eintragen bit im dos-syntax-byte I setzen, kommatest, parameter einlesen filenamen einlesen + prüfen dos filename 2 länge addrl dos filename 2 addrh dos filename 2 bank indirekter index II bank dos filename 2 B9BI b70+ ===> bit im dos-syntax-byte I setzen, kommatest, parameter einlesen <=== B9B2 b70+ B9B3 b b del2 ora parsts 898+ b706 B5 8b sta parsts 89B5 b70b ba jsr chrgot B9B6 B9B B990 B991 B b70b b70d b70f b711 b713 b715 b717 b 719 b71b B995 b lle 8996 b71e fo Ba c9 2c fo a9 c9 91 fo cf c9 55 fo dl do 39 + c a 7 9b beq donel cmp l$2c beq parse2 cmp 1$91 beq on2 cmp #$55 beq unit2 sav61 bne sner qtyerr jmp fcerr dos analyse-byte dos analyse-byte letztes zeichen erneut nach ac (indirekter sprung} disk-parameter 2 einlesen gerätel 2, bankl 2 einlesen ldisk-b. I on gerätel 2 einlesen (disk-b. J ausgabe '?illegal quantity error ready 8997 b71e ===> abfrage auf folgende unit o. bank, sonst fehler <=== b lle b71e b721 b ba c9 55 fo b725 c b727 fo 13 on 900+ bl29 do bl2b 9006 b 72b 9007 b72b 900B b72b 9009 b72b 20 Ba b7 unit 9010 b72e eo b730 bo e b732 eo 03 jsr chrget cmp #$55 beq unit cmp #$+2 beq bank bne sner nächstes zeichen nach ac lind.jmp} prüfen der geräteadr. ldisk-basic}, dann eintragen prüfen der bank # (disk-basicl, dann eintragen ===> prüfen der geräteadr. ldisk-basic}, dann eintragen <=== jsr getval cpx #$20 bcs qtyerr cpx 1$03 I byte-zahl in xr Iauch eingeklammert} ausgabe 'illegal quantity error ready u

214 610/710 basic-butesl hard+soft ass/reass.... seite OIBS zeile adr. obj.-code source-code 9013 b es 9014 b b b73b 9017 b73c 901B b73c Be a9 OB 60 bcc qtyerr stx dosfa lda #$OB rts ausgabe "illegal quantity error", ready dos primär-adresse 9019 b73c ===> prüfen der bank # (disk-basicj, dann eintragen <=== 9020 b73c 9021 b73c 9022 b73e 9023 b b7h b b74b 9027 b74b 902B b74d 9029 b7h 9030 b b b b754 a ba b 7 20 Ba b7 eo 10 bo d3 Be Ia 02 a 9 0 I 05 Be 85 Be a bank 9034 b754 4c 4f 97 sner 9035 b b757 lda #$01 J sr prxrpt jsr getval cpx #$10 bcs qtyerr stx dosbnk lda #$01 ora parstx sta parstx lda #$00 rts jmp snerr 9037 b757 ===> filenamen einlesen + prüfen <=== 903B b757 b757 b 75a b75d b75e 9043 b760 90H b b b b B b76b 9049 b76e 9050 b b b b b b b 77b 9057 b77b 20 b5 b 7 20 b6 91 aa fo bb ao df bo c9 40 do 12 a9 BO 20 b5 b7 a5 ßb 09 BO B5 Bb ca e6 22 do 02 e6 23 newnam jsr prmrpt jsr savl3 tax beq qtyerr ldy #$00 jsr savl2 cmp #$40 bne lenchk lda #$BO jsr prmrpt lda parsts ora #$BO sta parsts dex inc index I bne lenchk inc indexl+l 905B b77b ===> länge des filenamen prüfen <=== 9059 b 77b 9060 b 77b Ba b77c b77e b7bo b782 b 784 c9 I 1 bo 05 a6 22 a b7b5 lenchk txa cmp #$11 bcs errlen ldx index I ldy indexi+j rts syntaxtest: ac = syntax-byte 2 I byte-zahl in xr Iauch eingeklammert) ausgabe "illegal quantity error", ready dos bank nummer dos analyse-byte 2 dos analyse-byte 2 ausgabe "?syntax error", ready syntaxtest: ac syntax-byte I ausgabe "illegal quantity error, ready länge des filenamen prüfen syntaxtest: ac = syntax-byte dos analyse-byte I dos analyse-byte addrl indirekter index #I länge des filenamen prüfen addrh indirekter index #I ausgabe "?string too lang", ready addrl indirekter index #I addrh indirekter index #I

215 610/710 basic-butesl hard+soft ass/reass... seite 0186 zeile adr. obj.-code source-code 9067 b b785 ~~~> ausgabe '?string too long ready <~~~ 9069 b b b b78a 9073 b78a a2 42 4c errlen ldx #$42 jmp error ind. jmp zur Fehlerroutine 9074 b78a ~~~> 1 byte-zahl in xr (auch eingeklammert} <~== 9075 b78a 9076 b78a ba getval jsr chrget nächstes zeichen nach ac (ind.jmp} 9077 b78d FO c5 gtvl2 beq sner b78f b791 b794 b 79 7 b79a b79a b79a b79d Zd d6 b4 4c Za 97 4c d6 b4 gtvl5 bcc gtvl5 jsr chkopn jsr getbyt jmp chkcls jmp getbyt test '(. sonst Fehler + ready zahl < 256 aus akt. text nach xr test'j, sonst Fehler + ready zahl < 256 aus akt. text nach xr 9086 b79d 9087 b79d 9088 b79d 9089 b79d 9090 b7a b7a b 7a b7a b 7aa 9095 b7ad 9096 b7af 9097 b7b b7b b7b2 ===> dezimalzahl (auch in klammer} nach linnum <=== ba fo b2 90 Oe 20 Zd e5 b4 20 Za 9 7 a' lb a5 lc 60 getoff jsr chrget beq sner bcc gtff5 jsr chkopn jsr getpin jsr chkcls ldy linnum lda linnum+l rts 9100 b7b2 4c e5 b' gtff5 jmp getpin 9101 b7b b7b b7b5 ===> syntaxtest: ac = syntax-byte 1 <=== 9104 b7b b7b5 25 Bb 9106 b7b7 do 9b 9107 b7b b7ba 9109 b7ba ", " 7 b7ba b7ba b7ba b7bc b7be b7bf b7bf b7bf prmrpt and parsts bne sner rts ===> syntaxtest: ac = syntax-byte 2 <=== 25 Be do prxrpt and parstx bne sner rts.end.lib butes2 nächstes zeichen nach ac lind.jmpl tes t (, sonst Fehler + ready dezimal-zahl in klammer nach linnum einlesen test' J, sonst Fehler +ready lo-byte akt. Zeilennummer hi-byte akt. zeilennummer dezimal-zahl in klammer nach linnum einlesen dos analyse-byte dos analyse-byte 2

216 610/710 basic-butes2 hard+soft ass/reass.... seite 0187 zeile adr. obj.-code source-code 9119 b7bf 9120 b7bf ===> tab. mit zeigern in diskbefehle <=== 9121 b7bf 9122 b7bf 9122 b7c b7c I 9122 b7c b7c b7c b7c b7c b7c b7c b7c b7ca 9124 b7cb 9125 b7cb 9126 b7cb 9127 b7cb 9128 b7cb 9128 b7cc 9129 b7cd 9129 b7ce 9129 b7cf 9129 b7d b7dl 9130 b7d b7d b7d b 7d b7d b7d b7d b 7d b7da 9132 b7db 9132 b7dc 9132 b7dd 9132 b7de 9133 b7df 9133 b7e b7e I 9134 b7e b7e b 7e b7e b7e b7e b7e b7e b 7ea 9135 b7eb 9135 b7ec 9136 b7ed 9136 b7ee ff lb Od 2f 37 3b tabfcb.byte $ff, $01, $05, $16, $1b, $21.byte $23, $27, $Od, $2f, $37, $3b ===> tabelle der disk-befehlsstrings <=== 49 dl 24 dl 3a f I fo dl Ja fl 2c el 2c eo 43 d2 3a f2 3d d2 3a f2 2c dl 3a f I 2c 4 I 4e dl 3a fl 2c do 56 dl tabld.byte $49, $dl.byte $24, $dl, $3a, $fl, $f0 'cat/dir' 'SO:name=typ'.byte $dl, $3a, $fl, $2c, $el, $2c 'dopen' 'O:name,s,r'.byte $eo.byte $43, $d2, $3a, $f2, $3d, $d2 'concat' 'cl:neu=l:alti,o:alt2'.byte $3a, $f2, $2c.byte $dl, $3a, $fl, $2c, $41 'append' 'O:datnam,a'.byte $4e, $dl, $3a, $fl, $2c, $d0 'header' no :dsknam, id.byte $56, $d1 'collect vo'

217 610/710 basic-butes2 hard+soft ass/reass.... seite 0188 zeile adr. obj.-code source-code 9137 b7ef H.byte $H, $d2, $3d, $dl "backup" "do=i b7f0 d b7f1 3d 9137 b7f2 dl 9138 b7f3 u.byte $43, $d2, $3a, $f2, $3d, $d1 copy 'co:neu= l:alt' 9138 b7f4 d b7f5 Ja 9138 b7f6 f b1f7 Jd 9138 b7f8 dl 9139 b7f9 Ja. byte $Ja, $fl 9139 b7fa fl 9140 b7fb 52.byte $52, $dl' $3a, $f2, $3d. $d1 rename 'ro:neu=o:alt' 9140 b7fc dl 9140 b7fd Ja 9140 b7fe f b7ff 3d 9140 b800 dl 914 I bboi Ja.byte $3a, $f b802 fl 9142 b byte $53, $d1, $3a, $f1 scratch' so:name 9142 b804 dl 9142 b805 Ja 9142 b806 fl 9143 b byte $50, $c2, Sez, $eo 9143 b808 c b809 e2 910 b80a eo 91H b80b 20 fa bb sav20 jsr chk2 test:eingabe filename I (disk-b.j 9145 b80e ao 02 ldy #$ b810 a9 04 lda #$ bbiz 9148 b b812 ===> dos befehlsstring zusammensetzen u. ausgeben <=== 9150 bbiz 9151 b Of sendp sta xcnt dos loop-zähler 9152 b8 14 b9 bf b7 lda tabfcb,y tab. mit zeigern in diskbefehle 9153 b pha 9154 b b9 jsr oldclr länge disk.status =0, system-status schreiben 9155 bbib az 00 ldx #$ b81d 68 sdp 1 pla 9157 bbie c6 Of dec xcnt dos loop-zähler 9158 b bmi trnar disk-befehlstringadr ~n zero-page 9759 b822 ab tay 9160 bbzj cb iny 9161 b tya 9162 b pha 9163 b826 b9 cb b7 lda tabld, y tabeile der disk-befehlsstrings 9164 b bpl sdp5 ac, xr in disk-befehlsstring 9165 b82b c9 c2 cmp #$cz 9166 bbzd fo 4e beq rsca sekundäradr. in disk-befehlsstring 9167 bbzf c9 do cmp #$d b831 fo 59 beq rid disk 'id' in disk-befehlsstring 9169 bbjj c9 ez cmp #$e2 9 '70 b835 fo 73 beq rdcn

218 610/710 basic-butes2 hard+saft ass/reass.... seite 0189 zeile adr. abj.-cade saurce-cade 9171 b b b83b 9174 b83d 9175 b83f 9176 b b b b b b84b 9182 b84e 9183 b b850 c9 e1 fo 5d c9 fo fo 43 c9 f1 fo 71 c9 f2 fo 21 c9 eo do 05 ad do 12 cmp ll$e 1 beq rwrt cmp ll$f0 beq rfat cmp ll$f1 beq rsfn cmp 11$f2 beq gardfn cmp #$eo bne sdp2 lda dasrcl bne sdp b850 ~~~> abfrage drive 1 <~~~ 9186 b b850 c9 d1 sdp2 cmp 11$d b852 do 05 bne sdp b854 ad lda dasds b bpl sdp b b b85b 9197 b85d b859 b859 b859 ~~~> abfrage drive 2 <~~~ c9 d2 sdp3 do co ad das disk drive b b b860 ==~> drivell in ascii umwandeln <~~= cmp #$d2 bne sdp1 lda dasds2 recardlänge in disk-befehlsstring Filetyp in disk-befehlsstring zeiger auf Filename 1 setzen abfrage drive 1 das recard-länge ac, xr in disk-befehlsstring abfrage drive 2 das disk drive 1 drivel in ascii umwandeln 9201 b b sdp4 ara #$ b b b862 =~~> ac, xr in disk-befehlsstring <=== 9206 b b862 9d sdp5 sta dasstr,x das ausgabe string puffer 9208 b b b b86a 9212 b86a eb do b5 fo 5e inx bne sdp1 gardfn beq rdfn 9213 b86a ~~~> disk-befehlstringadr in zera-page <=== 9214 b86a 9215 b86a Ba trnar txa 9216 b86b 48 pha 9217 b86c a2 26 ldx #$ b86e ao 02 ldy 11$ b stx highds 9220 b b8 74 b876 b b87b ao Of eb b9 sty highds+1 ldy #$0f sty highds+2 jsr sav3 pla zeiger auf Filename 2 setzen addrl zielende!verschieben)/ temp. facll1 addrh zielende (verschieben/ temp.fac#1 bank zielende (verschieben/ temp. fac#l la,fa,sa,len,adr. befehlsstring eintragen

219 610/710 basic-butes2 hard+soft ass/reass... seite 0190 zeile adr. obj. -code source-code 9225 b87c b87d 9227 b87d 9228 b87d ===> sekundäradr. in disk-befehlsstring <=== 9229 b87d 9230 b87d 9231 b b b , '0 b882 b882 b882 b88' b886 b888 b88a 92'1 b88c 92'2 b88c ad 2 I 02 do eo rsca rts lda dossa bne sdp5 ===> filetyp in disk-befehlsstring <=== 2' 8b a9 '0 do d6 rfat rfa ta bit parsts bmi rfata bpl sdp I lda lt$40 bne sdp5 92'3 b88c ===> disk 'id' in disk-befehlsstring <=== 92H b88c 92H b88c ad ,6 b88f 9d '7 b892 e8 92'8 b893 ad 2' 02 92'9 b896 do ca 9250 b b898 rid lda dosdid sta dosstr,x inx lda dosdid l bne sdp5 dos sekundär-adresse ac, xr in disk-befehlsstring dos analyse-byte 9252 b898 ===> recordlänge in disk-befehlsstring <=== 9253 b , b b89b 9256 b89d 9257 b89f 9258 b8al 9259 b8a b8a b8a b8aa 9263 b8ac 9264 b8af 9265 b8bl 9266 b8b b8b' 9268 b8b' ad fo 0' a9 'c do cl a9 53 8d a9 57 do b8 a5 lb 9d a5 lc e8 do ae rwrt rwrtl rdcn lda dosrcl beq rwrt I lda lt$'c bne sdp5 lda #$53 sta dosrcl lda #$57 bne sdp5 lda linnum sta dosstr,x lda linnum+l inx bne sdp b8b' ===> zeiger auf Filename 1 setzen <=== 9270 b8b' 9271 b8b b8b b8b b8bc 9275 b8be 9216 b8c I ad ad I ad " 02 ac b8c' fo b8c6 do b8c b8c8 rsfn lda dosfla sta index1 lda dosfla+l sta index1+1 lda dosfb1 ldy dosfll beq rdrto bne xrfn 9281 bbcb ===> zeiger auf Filename 2 setzen <=== 9282 b8c8 ac, xr in disk-befehlsstring dos erstes zeichen 'id' dos ausgabe string puffer dos zweites zeichen 'id' ac, ~r in disk-befehlsstring dos record-länge ac, xr in disk-befehlsstring dos record-länge ac, xr in disk-befehlsstring lo-byte akt. Zeilennummer dos ausgabe string puffer hi-byte akt. Zeilennummer ac, xr in disk-befehlsstring addrl dos filename I addrl indirekter index #1 addrh dos filename I addrh indirekter index #1 bank dos filename I dos filename I länge bank# des Filenamen nach i6509

220 610/710 basic-butes2 hard+saft ass/reass... seite 0191 zeile adr. abj.-cade saurce-cade 9283 b8c b8cb 9285 b8cd 9286 b8d b8d b8d b8d b8da 9291 b8da ad ad ad ac fo 12 rdfn lda dasf2a sta indexl lda dasf2a+l sta indexl+l lda dasfb2 ldy dasf2l beq rdrto 9292 b8da ===> bank# des Filenamen nach i6509 <=== 9293 b8da 9294 b8da 9295 b8dc 9296 b8de 9297 b8e bbeo Oe ao 00 xrfn sta i6509 sty caunt ldy #$ bbeo ===> filename in disk-befehlsstring <=== 9300 bbeo 9301 bbeo 9302 b8e b8e b8e b8e b8e b8eb 9308 b8ec 9309 b8ed 9310 bbfo 9311 b8f b8f3 b I 22 9d eb c8 c4 Oe do f5 24 ca 20 Be ba 4c ld bb rdmav rdrto lda (indexll,y sta dasstr.x inx iny cpy caunt bne rdmav.byte $24 dex jsr mapusr jmp sdpl 9313 b8f3 ===> Syntaxprüfung disk-basic <=== 93" b8f b8f b8f b8f b8fa 9319 bbfa 29 e6 fo 03 4c H 97 chk 1 and #$e6 beq chk2 chkerl jmp snerr 9320 bbfa ===> test:eingabe Filename I ldisk-b. I <=== 9321 bbfa 9322 bbfa 9323 bbfc 9324 bbfe 9325 b b b b905 a5 8b c9 01 do F5 a5 8b b b e b907 do ee 9332 b b90a 9334 b90a 9335 b90a 29 c b90c b90e b910 b912 b914 do e9 a5 8b c9 03 do e1 chk2 chk3 chk4 chk5 lda parsts and #$0 1 cmp #$01 bne chker1 lda parsts rts and #$e7 bne chker1 rts and #$c4 bne chker1 lda parsts and #$03 cmp #$03 bne chker1 addrl das filename 2 addrl indirekter index #I addrh das filename 2 addrh indirekter index #I bank das filename 2 das filename 2 länge 6509 indirectian register allgemeiner zähler addrl indirekter index #I das ausgabe string puffer allgemeiner zähler Filename in disk-befehlsstring umsch. auf bank # I test:eingabe Filename 1 ldisk-b.l ausgabe '?syntax errar', ready das analyse-byte ausgabe '?syntax errar das analyse-byte ready ausgabe '?syntax error', ready ausgabe '?syntax errar das analyse-byte ready ausgabe '?syntax error', ready

221 610/710 basic-butes2 hard+soft ass/reass.... seite 0192 zeile adr. obj.-code source-code 934 I b916 a5 8b lda parsts dos analyse-byte I 9342 b rts 9343 b b b chl<6 and #$ b91b c9 05 cmp #$ b91d do d8 bne chl<erl ausgabe '?syntax error ready 9348 b91f a5 8b lda parsts dos analyse-byte I 9349 b rts 9350 b b b922 ===> statusstring Über sel<.adr. 15 einlesen <=== 9353 b b922 a9 00 errchl lda #$ b bd ff jsr l<stnam länge und adresse des filenamens eintragen 9356 b927 ao 6f ldy #$6f 9357 b Sb 93 jsr ochanl 9358 b92c a2 Oe ldx #$Oe 9359 b92e 20 fa bb jsr chl<in eingabel<anal öffnen, fehlertest 9360 b931 ao ff ldy #$ff 9361 b d ba jsr mapstr ums eh. auf banl< I b936 c8 loopl iny 9363 b ee bb jsr basin eingabe I char vom al<t. l<anal Iehn-vektor} 9364 b93a c9 Od cmp #$0d 9365 b93c fo 06 beq errend 9366 b93e 91 I 7 sta ldsdesc+l},y addrl disc-status string 9367 b940 co 27 cpy #$ b942 do f2 bne loop I 9369 b9h a9 00 errend lda #$ b sta ldsdesc+ I J, y addrl disc-status string 9371 b948 a9 28 lda 1$ b94a sta dsdesc länge disc-status string 9373 b94c 20 Be ba jsr mapusr ums eh. auf banl< # I b9h 20 cc ff jsr l<clrch ein-/ausgabekanal schließen 9375 b952 a9 Oe lda #$Oe b clc 9377 b bc jsr tclose 9378 b958 4c jmp dcato 9379 b95b 93ß0 b95b 9381 b95b ===> bearbeitung are you sure?' <=== 93ß2 b95b 9383 b95b d rusure jsr tstdir test direktmodus, hi-byt zeile=$ff 9384 b95e do 32 bne ansyes 9385 b960 a2 74 ldx #$ b c3 a3 jsr msg textzeiger + xr, textausgabe 93ß7 b cc ff jsr kclrch ein-lausgabekanal schließen 938ß b ee bb jsr basin eingabe I char vom akt. kanal Iehn-vektor} 93ß9 b96b c9 59 cmp #$ b96d do 19 bne ansno 9391 b96f 20 ee bb jsr basin eingabe I char vom akt. kanal Iehn-vektor} 9392 b972 c9 Od cmp #$0d 9393 b974 fo lc beq ansyes 9394 b976 c9 45 cmp #$45

222 610/710 basic-butes2 hard+soft ass/reass... seite 0193 zeile adr. obj.-code source-code b978 b91a b97d b97f b98 I b984 b986 b988 b98a b98b b98d do Oe 20 ee bb c9 53 do 07 zo ee bb c9 Od fo Oa c9 Od 38 fo ee bb 9406 b990 do f b b b b994 ansno bne ansno jsr basin cmp 1$53 bne ansno jsr basin cmp I$Od beq ansyes cmp l$0d sec beq ansbye jsr basin bne ansno ansyes clc ansbye rts eingabe I char vom akt. kanal Iehn-vektor} eingabe I char vom akt. kanal Iehn-vektor} eingabe I char vom akt. kanal Iehn-vektor} 9411 b994 ===>länge disk.status =0, system-status schreiben <=== 9412 b b994 b996 b998 b999 b99c b99c a c de bb oldclr lda #$00 sta dsdesc clc jmp storst länge disc-status string ac in system-status schreiben 9419 b99c 20 b6 91 sav17 jsr savl b99f 8d sta dosfll dos filename I länge 9421 b9a2 a5 22 lda indexl addrl indirekter index #I 9422 b9a4 a4 23 ldy indexl l addrh indirekter index #I b9a6 b9a9 b9ac b9ae b9bl b9b2 8d Be a4 24 Be 14 oz 60 sta dosfla sty dosfla+l ldy indexl 2 sty dosfbl rts addrl dos filename 1 addrh das filename I bank indirekter index #I bank dos filename I 9429 b9b b9b2 a2 00 plsv ldx #$ b9b4 Se stx dosfll 9432 b9b7 Se Zf 02 stx dossa 9433 b9ba Be lf 02 stx dosla 9434 b9bd az 01 ldx #$ b9bf Se zo 02 stx dosfa 9436 b9c ba jsr chrgot 9437 b9c b9c7 909 b9ca 9440 b9cd 944 I b9d0 9HZ b9d3 9HJ b9d6 94H b9d b9dc 9446 b9df b9e I fo Of 20 9c b9 20 f9 b9 Be f9 b9 Se 2 I OZ ad ae ac plsvx beq plsvx jsr sav77 jsr plsv21 stx dosfa jsr plsv27 stx dossa lda dosfla ldx dosfla+l ldy dosfbt sta highds stx highds l dos filename I länge das sekundär-adresse das logische adresse dos primär-adresse letztes zeichen erneut nach ac tindirekter sprung} das primär-adresse dos sekundär-adresse addrl das filename I addrh das filename I bank dos Filename 1 addrl zielende (verschieben}/ temp. fac#f addrh zielende (verschieben/ temp. fac#f

223 610/710 basic-butes2 hard+soft ass/reass..... seite 0194 zeile adr. obj.-code source-code 9448 b9e sty highds+2 bank zielende (verschieben/ temp. fac#l 9449 b9e5 ad lda dos f 11 dos Filename I länge 9450 b9e b9e b9e8 ===> la,fa,sa,len,adr. befehlsstring eintragen <=== 9453 b9e b9e8 a2 64 sav3 ldx #$ b9ea 20 bd ff jsr kstnam länge und adresse des Filenamens eintragen 9456 b9ed ad lf 02 lda dosla dos logische adresse 9457 b9f0 ae ldx dosfa dos primär-adresse 9458 b9f3 ac ldy dossa dos sekundär-adresse 9459 b9f6 4c ba ff jmp kstlfs log. filenummer, geräte- und sekundäradr. eintragen 9460 b9f b9f b9f ba plsv2 7 jsr chrgot letztes zeichen erneut nach ac (indirekter sprung} 9463 b9fc fo d8 beq plsvx 9464 b9fe 4c jmp copg 9465 baoi 9466 baoi 9467 baoi plsv30 jsr chkcom test 'komma sonst fehler + ready 9468 ba ba plsv32 jsr chrgot letztes zeichen erneut nach ac (indirekter sprungl 9469 ba07 do 12 bne plsrts 9410 ba09 4c 97 jmp snerr ausgabe?syntax error', ready " 9471 baoc 9412 baoc 9413 bade a5 76 tstrom lda facsgn fac #I: vorzeichen 9474 baoe c9 Of cmp #$0f 9475 bald do Oa bne xit 9416 bal2 18 clc bal3 a9 00 lda #$ bal5 e5 74 sbc facmo fac 111: mantisse 9419 ball a9 80 lda #$ bal9 e5 75 sbc faclo fac #I: mantisse 9481 balb 60 plsrts rts 9482 balc 9483 balc 9484 balc 38 xit sec 9485 bald 60 rts 9486 bale 9487 bale 9488 bale 9489 bale ===> umwandlung integer nach gleitkomma <=== 9490 bale b f lpi n t jsr ayint umwandlung real nach integer 9491 ba21 a5 74 lda facmo fac #1: mantisse 9492 ba23 a4 75 ldy faclo fac #1: mantisse 9493 ba25 60 rts 9494 ba ba ba26 6c chrget jmp (ichrge} addrl chrget routine 9497 ba ba ba29 6c Be 02 chrgot ]mp (ichrgo} addrl chrgot routine 9500 ba2c

224 610/710 basic-butes2 hard+soft ass/reass.... seite 0195 zeile adr. obj.-code source-code 9501 ba2c 9502 ba2c ===> letztes zeichen erneut nach ac <=== 9503 ba2c 9504 ba2c 20 5a ba nchrgo jsr chrmap i6509 nach "ldaadr, charget-bank nach i ba2f 4c 3b ba jmp chrg ba ba ba32 ===> nächstes zeichen nach ac <=== 9509 ba ba a ba nchrge jsr chrmap i6509 nach 'ldaadr', charget-bank nach i " ba35 e6 85 chrgio inc txtptr addrl zeiger auf akt. term 9512 ba37 do 02 bne chrg ba39 e6 86 inc txtptr+l addrh zeiger auf akt. term 9514 ba3b ao 00 chrg20 ldy #$ ba3d bl 85 lda /txtptr},y addrl zeiger auf akt. term 9516 ba3f c9 20 cmp #$ ba41 fo f2 beq chrgio 9518 ba ba jsr qnum test in halt ac numerisch 9519 ba46 OB php 9520 bah 48 pha 9521 ba48 ad 5b 02 lda ldaadr addrl modifiable adresse 9522 ba4b sta i indirection register 9523 ba4d 68 pla 9524 ba4e 28 plp 9525 bah 60 rts 9526 ba ba ba50 ===> test inhalt ac numerisch <=== 9529 ba ba50 c9 3a qnum cmp #$3a 9531 ba52 bo 05 bcs qnrts 9532 ba54 e9 2f sbc #$2f 9533 ba56 38 sec 9534 ba57 e9 do sbc #$d ba59 60 qnrts rts 9536 ba5a 9537 ba 5a 9538 ba5a ===> i6509 nach 'ldaadr charget-bank nach i6509 <=== 9539 ba5a 9540 ba5a a5 01 chrmap lda i indirection register 9541 ba5c Bd 5b 02 sta ldaadr addrl modifiable adresse 9542 ba5f a5 87 lda txtptr+2 bank zeiger auf akt. term 9543 ba I sta i indirection register 9544 ba63 60 rts 9545 ba ba ba64 ===> lade Iinde>< I I,y in ac <=== 9548 ba ba64 a9 00 ldily lda #$ ba66 22 ora /indexl},y addrl indirekter index #I 9551 ba68 60 rts " 9552 ba ba ba69 ===> ums eh. auf bank I# in $73) <=== 9555 ba ba69 48 mapdst pha

225 610/710 basic-butes2 hard+soft ass/reass.... seite 0196 zeile adr. obj.-code source-code 9557 ba6a a5 73 lda facmoh fac II: mantisse 9558 ba6c bpl mapooi ums eh. auf bank (# in acl 9559 ba6e 9560 ba6e 9561 ba6e ===> umsch. auf bank (#in $601 <=== 9562 ba6e 9563 ba6e 48 mapdsp pha 9564 ba6f a5 60 lda dscpnt+2 bank zeiger string descriptor 9565 ball 10 lc bpl mapooi ums eh. auf bank (# in ac} 9566 ba ba ba73 ===> ums eh. auf bank I# in $241 <=== 9569 ba ba mapinx pha 9571 ba 74 a5 24 lda index 1+2 bank indirekter index 9572 ba bpl mapooi ums eh. auf bank (I in acl 9573 ba ba ba78 ===> ums eh. auf bank I 15 <=== 9576 ba ba78 48 mapsys pha 9578 ba 79 a9 Of lda 1$0f 9579 ba lb bpl mapooi ums eh. auf bank II in acl 9580 bald 9581 bald 9582 bald ===> ums eh. auf bank # 2 <=== 9583 bald 9584 bald 48 mapstr pha 9585 ba 7e a9 02 lda #$ babo 10 Od bpl mapooi ums eh. auf bank II in ac) 9587 ba ba ba82 ===> ums eh. auf bank I 2 <=== 9590 ba ba82 48 mapary pha 9592 ba83 a9 02 lda #$ bab5 10 OB bpl mapooi ums eh. auf bank (# in acl 9594 bab bab ba ba87 ===> umsch. auf bank I 2 <=== 9598 ba87 48 mapvar pha 9599 ba88 a9 02 lda 1$ baba bpl mapooi ums eh. auf bank I# in ac) 9601 ba8c 9602 babc 9603 babc ===> ums eh. auf bank # I <=== 9604 babc 9605 babc 48 mapusr pha 9606 babd a9 0 I lda 1$0 I 9607 ba8f 9608 ba8f 9609 babf ===> ums eh. auf bank I# in ac) <=== 9610 babf 9611 babf mapooi sta i indirection register 9612 ba91 68 pla 9613 ba92 60 rts 9614 ba93 "

226 6!0/710 basic-butes2 hard+soft ass/reass.... seite 0197 zeile adr. obj.-code source-code 9615 ba ba93.end.lib init

227 610/710 basic-init hard+soft ass/reass.... seite 019B zeile adr. obj.-code source-code 961B ba ba93 ===> initialisierung <=== 9620 ba ba93 ba96 ba bc 3B ff initop jsr clall sec jsr kmemtp B ba9a ba9d baao baal baa2 baa4 baa6 baa7 baa baab 9634 baac 9635 baad 9636 baaf 9637 bab I Be a6 02 Be a B Ba e9 a I B5 BB 9B e9 00 B5 B9 3B Ba e9 2b B5 17 aa bo 01 BB 963B bab bab bab5 B4 IB 9641 bab7 3B 9642 babb Ba 9643 bab9 e9 Oe 9644 babb B babd aa 9646 babe bo baco BB 9648 bac I B bac bac bac bac bac B I B baca bacc bacd bacf bado bad I bad3 bad4 bad6 bad7 bad9 badb badd badf bael baei? bae3 bae5 bae 7 3B Ba e9 07 B5 Bd aa bo 01 BB B4 Be 3B Ba e9 0' aa bo 01 BB B6 3f B4 40 a' B9 a6 BB do 01 BB ca a9 83 itp04 itp03 itp02 itp06 itp07 stx highst sty highst+l sec txa sbc #$a I s ta buffpt tya sbc #$00 sta buffpt+l sec txa sbc #$2b sta dsdesc+l tax bcs itp04 dey sty dsdesc+2 sec txa sbc #$Oe sta tempst tax bcs itp03 dey sty tempst+l sec txa sbc #$0 7 sta seedpt tax bcs itp02 dey sty seedpt+l sec txa sbc #$04 tax bcs itp06 dey stx memtop sty memtop+ I ldy buffpt+ I ldx buffpt bne itp07 dey dex stx indexl sty index1+1 lda tt$83 alle logischen files schliessen höchste speichergrenze lesen/schreiben lo-byte max. offset user bank hi-byte max. offset user bank addrl zeiger auf eingabe-puffer addrh zeiger auf eingabe-puffer addrl disc-status string addrh disc-status string addrl für 3 temp. string-descriptoren addrh für 3 temp. string-descriptoren addrl zeiger auf akt. Zufallszahl addrh zeiger auf akt. Zufallszahl addrl höchste ram-speicherstelle addrh höchste ram-speicherstelle addrh ze~ger auf eingabe-puffer addrl zeiger auf eingabe-puffer addrl indirekter index ltl addrh ~ndirekter ~ndex #1

228 610/710 basic-init hard+soft ass/reass.... seite 0199 zeile adr. obj.-code source-code 9673 bae9 ao 00 ldy 1$ baeb 20 Be ba jsr mapusr 9675 baee sta lindexll,y ums eh. auf bank I I addrl indirekter index., 9676 bafo a9 02 lda 1$ baf sta i indirection register 9678 bah sta memtop+2 bank höchste ram-speicherstelle baf sta dsdesc+j bank disc-status string 9680 bafb ao 06 ldy 1$ bafa b9 20 bb itpoi lda rseed-1, y zufallszahl nach initialisierung 9682 bafd 91 Bd sta lseedpt), y addrl zeiger auf akt. Zufallszahl 9683 baff 88 dey 9684 bboo do fb bne itpoi 9685 bb02 98 tya 9686 bb03 a2 04 ldx 1$ bb f itp05 sta lmemtop),y addrl höchste ram-speicherstelle 9688 bbo 7 cb iny 9689 bbob ca dex 9690 bb09 do fa bne itp bbob a9 28 lda 1$ bbod ab tay 9693 bboe sta ldsdesc+l),y addrl disc-status string 9694 bb10 cb iny 9695 bb II a9 ff lda #$ff 9696 bbij sta ldsdesc+1j,y addrl disc-status string 9697 bb15 cb iny 9698 bbl sta ldsdesc+7j,y addrl disc-status string 9699 bb18 a5 3f settop lda memtop addrl höchste ram-speicherstelle bb1a a4 40 ldy memtop+ 1 addrh höchste ram-speicherstelle 9701 bblc 85 3b sta fretop addrl top of string free space 9702 bble 84 Je sty fretop l addrh top of string free space 9703 bb20 60 rts zufallszahl nach initialisierung 9704 bb bb bb21 ===> zufallszahl nach initialisierung <=== 9707 bb bb21 80 rseed.byte $80, SH, Sc7, $52, $58, $2c 9708 bb22 4f 9708 bb23 c bb bb bb26 2c 9709 bb bb bb27 ===> basic kalt-start <=== 9712 bb bb27 20 bc bb init jsr initv standard-vektoren ins ram kopieren 9714 bb2a a2 02 inito ldx 1$ bb2c bd fe b4 init05 lda fcerl, x ausgabe 'illegal quantity error", ready 9716 bb2f sta usrpok,x jmp code für user-routine 9717 bb31 Cl dex 9 7 I 8 bb32 10 fb bpl init bb sta jmper $4c wert für 'jmp lfunctions-rout.j 9720 bb36 a2 04 ldx #$ I bb38 bd c7 bb init70 lda initat-l,x 9722 bb3b 9d sta tansgn,x flag für 'tan vorzeichen 9723 bb3e ca de>c bb3f do f7 bne initio

229 610/710 basic-init hard+soft ass/reass.... seite 0200 zeile adr. obj.-code source-code 9725 bb stx bits shift-zlihler 972& bb43 86 Ia stx channl speieherstelle für aktiven kanal 9727 bb stx dsdesc länge disc-status string 9728 bbh Be stx dolu vorgabe für ausgabe-adresse 9729 bbh 86 ld stx temmpt zeiger auf zeitw. stringdescriptor lrel. offset) 9730 bb4c ca dex 9731 bb4d 86 le stx lastpt addrl letzt benutzter string-descr bbh B6 lf stx lastpt+l addrh letzt benutzter string-descr bb51 38 sec 9734 bb c ff jsr kmembt unterste speichergrenze lesen/schreiben 9735 bb stx vartab addrl zeiger anfang einfache variable 973& bb57 B4 32 sty vartab+ I addrh zeiger anfang einfache variable 9737 bb d stx txttab addrl zeiger anfang basic-text 9738 bb5b 84 2e sty txttab+l addrh zeiger anfang basic-text 9739 bb5d ba jsr initop initialisierung 9140 bb60 20 Be ba jsr mapusr ums eh. auf bank # I 9741 bb63 ao 00 ldy #$ bb65 98 tya 9743 bb&6 91 2d sta ltxttabl,y addrl zeiger anfang basic-text 9744 bb68 e6 2d inc txttab addrl zeiger anfang basic-text 9745 bb&a do 02 bne init bb6c e6 2e inc txttab+l addrh zeiger anfang basic-text 9747 bb6e a2 26 init20 ldx #$ bb70 20 c3 a3 jsr msg textzeiger + xr, textausgilbe 9749 bb b Ba jsr scrtch 9750 bb76 a2 cc ldx Sec 9751 bb78 ao bb ldy Sbb 9752 bb7a 20 6f ff jsr kvrese netz einlaus reset-vector 9753 bb7d 58 cli 9754 bb7e 4c co B5 jmp ready ausgabe ready ready-status 9755 bbbi 9756 bbbi 9757 bb81 ===> text: '*** cbm basic 128.v4.0 ltltlt' <=== 975B bbbi 9759 bb81 93 signon.byte $ bb82 2a 211 2a 9760 bbb f,byte 'ltltlt commodore basic 128, v4.0 **' 97&0 bb88 4d 4d H 9760 bb8b 4f bbbe " bb bb " 9760 bb B 2c 9760 bb9a bb9d 2e bbao 2a 2a 9761 bba2 2a.byte.*. $0d, $0d, $ bbaj Od bba4 Od 9761 bba bba bba bba6 ===> tabelle der standard-vektoren <=== 9765 bba6

230 610/710 basic-init hard+soft ass/reass.... seite 0201 zeile adr. obj.-code source-code 9766 bba bba bbaa 9769 bbac 9770 bbae 9771 bbbo 9772 bbb bbb bbb bbbb 9776 bbba bbbc 9778 bbbc Cd 85 c2 88 H b I 96 c4 95 2c ba 32 ba le ba 39 9d bvtrs.word nerror.ward nmain.word ncnnch.word nqglop.word ngone.word neval.word nfrmev. word nchrgo.word nchrge.word flpint.word givayf 9779 bbbc ===> standard-vektoren ins ram kopieren <=== 9780 bbbc 9781 bbbc 9782 bbbe 9783 bbcl a2 15 bd a6 bb 9d bbc4 ca 9785 bbc5 10 f bbc bbc bbcb initv ldx #$15 initv5 lda bvtrs,x sta ierror,x dex bpl initv5 rts 9789 bbc8 ad ff ff initat lda hairq+l 9790 bbcb 60 rts 9791 bbcc 9792 bbcc 9793 bbcc ===> basic-warm-start <=== bbcc bbcc bbcd bbdo bbd3 bbd6 bbd9 bbda bbdd 9803 bbdd 9804 bbdd 78 warm 20 7b ff bc 20 7e ff 20 Be ba 58 4c co 85 sei jsr kioini jsr clall jsr kcint jsr mapusr cli jmp ready.end.lib syscal error-routine hauptroutine basic-interpreter umwandlung text in basic-tokens umwandlung basic-tokens in text dispatcher-routine folgenden num. ausdruck auswerten auswertung beliebiger ausdruck letztes zeichen erneut nach ac nächstes zeichen nach ac umwandlung integer nach gleitkomma umw. integer nach real tabelle der standard-vektoren addrl fehler routine 6509 hardware-irq-vektor initialisierung ein-/ausgabe alle logischen files schliessen initialisierung bildschirm umsch. auf bank # I ausgabe ready ready-status

231 610/710 basic-syscal hard+saft ass/reass... seite 0202 zeile adr. abj.-cade saurce-cade 9806 bbdd 9807 bbdd 9808 bbdd 9809 bbdd 9810 bbde 9811 bbe bbe bbe bbe bbe bbe bbe bbe bbe bbe bbe bbe bbe bbeb 9825 bbed 9826 bbee 9827 bbee 9828 bbee 9829 bbee 9830 bbee 9831 bbf bbf bbf bbf bbf bbf bbf bbf bbf bbfa bbfa 9842 bbfa 9843 bbfa 9844 bbfa 9845 bbfd 9846 bbff 9847 bcoo 9848 bcoo 9849 bcoo 9850 bcoo 9851 bcoo 9852 bc bc bc bc bc bc bc bc bcob 9861 bcoc 9862 bcoc 9863 bcoc ===> system-status in ac lesen <=== 38 readst sec 4c b7 ff starst jmp kreast ===> lag. file Öffnen/befehl ausgeben <=== co ff bo apen apn10 clc jsr kapen bcs iaerr rts ac in system-status schreiben lag. file Öffnen/befehl ausgeben i/a fehlerbehandlung ===> eingabe 1 char vom akt. kanal (queue-vektar) <=== 20 e4 ff getin bo 2d 60 jsr kgetin bcs iaerr rts eingabe 1 char von tastaturpuffer i/a fehlerbehandlung ===> eingabe 1 char vom akt. kanal (chn-vektar) <=== 20 cf ff basin bo jsr kbasin bcs iaerr rts ===> ausgabe 1 char auf akt. kanal <=== 20 d2 ff bsaut jsr kbsaut bo 21 bcs iaerr 60 rts ===> eingabekanal öffnen, fehlertest <=== 20 c6 ff chkin bo 1b 60 jsr kchkin bcs iaerr rts ===> ausgabekanal öffnen, fehlertest <=== 20 c9 ff bo chkaut jsr kckaut bcs iaerr rts ===> einlesen vom logischen file <=== 20 d5 ff laad bo Of 60 jsr klaad bcs iaerr rts ===> abspeichern auf logisches file <=== eingabe 1 char vom akt. kanal i/a fehlerbehandlung ausgabe 1 char auf akt. kanal i/a fehlerbehandlung eingabekanal öffnen i/a fehlerbehandlung ausgabekanal öffnen i/a fehlerbehandlung einlesen vom logischen file i/a fehlerbehandlung

232 610/710 basic-syscal hard+soft ass/reass.... seite 0203 zeile adr. obj.-code source-code 9864 bcoc 9865 bcoc 20 d8 ff save 9866 bcof bo bell bcl bcl bcl bcl bcl jsr ksave bcs ioerr rts bcl2 bcl2 ===> carry=l. log. file schliessen <=== bcl6 bcl6 bcl6 38 close sec 4c c3 ff tclose jmp kclose ===> alle logischen files schliessen <=== 9878 bcl6 18 clall clc 9879 bell 4c e7 ff jmp kclall 9880 bcla bcla 9884 bcla 9885 bclb 9886 bclc 9887 bcld 9888 bclf 9889 bc bc bc bc bc bc bc bc bc bc eooo 9902 eooo 9903 eooo 9904 eooo bcla bcla ===> i/o Fehlerbehandlung <=== 18 2a 48 a9 Oe bc 68 aa 4c ioerr clc rol a pha lda #$Oe clc jsr tclose pla tax jmp error bc28 bc28 ===> prüfbyte rom $a000-$bfff <=== b5 chkbt2.byte $b5 = $23d7.end.end abspeichern auf logisches file i/o Fehlerbehandlung logisches file schliessen alle logischen files schliessen ind. jmp zur Fehlerroutine Fehler in pass Fehler in pass 2 assemblierung ende

233

234 4. TEIL CROSSREFERENZLISTE 1 CBH B A S I C 4. 0

235

236 crossreference.... seite '-" $94ee abrktx $84e f f abs $a22f addf $b2f addfrs $880d addind $9c addon $8ce addpr2 $ H 2H addpr4 $0004 2H addpr8 $ addprc $ addrts $8cec aerbd $841a aerbs $ aercn $ aercr $852d aerdd $842e aerdi $853e aerdvo $843c '- aerfc $83e aerid $8Hd aerld $84bb aerls $846a aernf $83a aerod $83d8 61 f 713 aerom $83fe aeros $ aerot $ aerov $83f aerrg $83c aersn $83b aerst $ aertm $845c aeruf $84a aerus $840c aervr $84c aexi $84ee affrts $ afplus $b37e afrm $b ahp $btd aintxt $84d alg $b amso $82e amsf $82f ams2 $ ams3 $ ams30 $ ams3f $ ams4 $ ams5 $832f ams6 $ ams7 $ f ams8 $ ams9 $ ana $b0ef "--- anaf $b3ea andop $986e H ansoio $b ans020 $b ansbye $b ansno $b

237 crossreference... seite 2 an sub $b , H ansyes $b append $937e aremsg $850e argexp $ argho $007a arglo $007d argmo $007c argmoh $007b argsgn $007e H arisgn $00Tf H H arybnk $ arydon $9ac H33 aryend $ aryget $9a H30 H32 arytab $ aryva2 $9a aryva3 $9a aryvgo $9a asc $ab9d H aspac $8f atn $a 79 I Hl 6545 atn I $a atn2 $a Ta atn3 $a7ba atn4 $a8te atncon $a atry $8Hd attn $ avfl $b ayint $9bl H backup $ bakrts $91b bank $b73c bankt $b5a I basin $bbee tt bcklnk $a9fc begfd $ HO bigges $a bits $ " blfd $026f bload $940e bltl $ I 1364 bltlp $885 I bltu $ bltut $ bltuv $881e bnr $025f H bout $b bsave $93ec bserr $9ba bserr7 $9c79 Hl3 H bsout $bbf bsvrts $93e buf $ tH

238 crossreference..... seite buffpt $ bufful $8f buffu2 $8f buffu3 $8f9f bufful $8f8c bufsiz $00a bupl $ bvtrs $bba cat $aa7a cbn $b2d cclos $ cdout $b3e cff $b 18 I cform $026d cfrel $ae cfre2 $ae6b cfre3 $ae7c cfre4 $ae channl $001a charac $000c chea3 $86b chead $86ad chkl $b8f chk2 $b8fa chk3 $b chk4 $b90a chk5 $b chk6 $b chkbt2 $bc chkcls $972a chkcom $ chkds $979a chkerl $b8f chkerr $b chkgrb $ae chkin $bbfa chkk $b chknum $b chkok $b50d chkopn $972d chkout $bc chkstr $b chkval $b cho $b chom $b chout $b choutz $b33f chrd $aadl chrglo $ba chrg20 $ba3b chrget $ba H H

239 crossreference.... seite chrgot $ba chrmap $ba5a chsn $ chx $b clall $bcf clct2 $ cld2 $9fff cld3 $9ff cld4 $9ff clear $BaU clearc $8a clff $9fd clmwid $000a 241 cload $9fc close $bcf clrfac $a2ce clrpu $Ba clrscr $ cmd $BeBO cmnd2 $BeBB cmo $b cmpfor $81fa cnbank $93de cncj $b colooa $adf colof $ae col02 $ae col02a $ae0e col02b $ae2a col03 $ae3d colect $ comf $b4a com2 $b4aa combyt $b4cd comp $b49e comprt $Beda con I $b2el concat $ conint $b4d cont $Bbe contx $Bc contz3 $BbfB contz4 $8bfa conupk $a05c conv $boae copl $ copen $ copflt $Bdbd copg $ cops $ copstr $8dc copx $921b copy $a9bd copyoi $a9fl copyoz $a9e cos $a6a cosc $a

240 erossreferenee..... seite 5 eount $000e II 15 II epef $b09e er $000d 230 erfin $8ed ertskp $b erun05 $88e II erunio $88ee erun20 $88dl erun30 $88e erun40 $88f erun50 $88fa erun60 $ erun70 $ erun80 $892a erun90 $ eruneh $88bf esave $921b eseol $b esys $90e esysrz $90fb 2891 eurlin $ everf $91be evfl $91e ezloop $86ba data $8edf datan $8eed datbk $ I 2770 datbkl $ datlin $ I datlop $8fb datptr $004b dav $ de $ deat $ deato $ deatoo $92ad deltl $92be deatio $ deatz $92bd deat3 $92ee deat4 $92fb deat5 $ deat7 $933e deat8 $ deat9 $ delall $93bd II delear $ delose $93a deopol $a9ae deop02 $a deopy $ depy2 $ depy4 $ deeblt $885e deeeur $9e deey $b deffi $9de deffin $9deb I

241 crossreference. seite 6 defn $ defpnt $005b I 7102 dell $b68e 87H del2 $b del300 $afc del500 $afdd delete $af9d deliml $b devn2 $blad dfbank $ dibf $ didchk $ dim $910c dim3 $ dimflg $ dimrts $9ccl diserr $8e dispoo $8e2c dispol $8e dilpo2 $8e dispo3 $8e4e dispo4 $8e5b dispo5 $8e5e dispos $8e divio $aod divide $a!oo divnrm $a divsbl $al divsub $al dlimxl $b dload $93ce dn20 $b5d dntcpy $a doagin $90bd docmp $991c docond $8c6f docstr $b50e doffh $b doffl $b dolr $ H dolu $ H 9128 domin $911d done $b donel $b dop2 $ dopen $936d doprel $ doprec $961f dorel $ dores $ dosoi $b dos02 $b55e dos10 $b5f dos5 $b5a dosbnk $021a dosctl $ dosdid $ dosdsl $

242 crossreference.... seite dosdsz $ dosdsk $ dosfla $ dosfll $0210 IZ I dosfza $ dosfzl $ dosfa $ dosfbl $ dosfbz $ dosfnl $ dosla $0Zif doslfn $000e 300 dos1st $ dosofh $0Zid dosofl $0Zib dospar $b dosprs $b dosprx $b54b dosrcl $ H dossa $ HZ 9458 dosstr $ dostbl $b drvl $b drvz $b6dl dsave $93c dscpnt $005e H H dsctmp $ dsdesc $ dsptmp $OZ9e dtlpo $8fce dtlpl $8fcf dvoerr $a dvarts $9ab3 HOZ 4426 e6509 $ 9 eadj $bz3c eado $bz3a eatem $ ebase $8Z8f eexz $b efo $b end $8baa endehr $000d endfd $ endrel $960e endrel $95fd endvar $90cb enr $ eoa $b1zd eoi $ eoist $ eom $ eormsk $ erflp 1 $ac2z erflpz $ac ero $b errchl $b9zz errd $ac errdl $acze

243 crossreference..... seite 8 errdz $ac56 errdir $9d4a errend $b944 errf $bldl errfin $85ab errgo3 $9ba9 errguf $9d5Z errigd $8592 errjmp $98a5 errlen $b185 errlin $0298 errnum $008f error $8552 errorz $859d errtxt $029a erst $bl66 etz $bz11 et3 $bz6c ete $bl59 etof $OZ6c eval $96ae evalo $96b5 eval I $96ba evalz $96d0 evalzz $96bd eval3 $96f0 evah $9101 eval5 $970e eval6 $9 7 Ia exchqt $8cf8 exp $a5b3 expl $a5dl expcon $a58a expo $b45b fa $ae89 facexp $00 7 I facho $0072 faclo $00 75 facmo $OOH I I I I I 140 I z I IZ I zooz II H H8 9Ht facmoh $

244 crossreference.... seite 9 facov $ H facsgn $ H H H H fadd $9e4a faddf $9e7a fadd2 $9eet fadd4 $9e86 50H fadd5 $9e fadda $9e faddb $9e faddc $9e5a faddh $9eZ faddt $9e4d fadflt $9eb fbufpt $ H6 7H fcerf $bhe fcerr $9ba I fcerr2 $ad fcerr3 $918b fcerrb $9b fcinx2 SaZTB fcomp $a fcompc $a26f fcompd $a fcompn $a fcomps $a20b fcsign $a fdiv $aoe fdivf $a0de H5 fdivt $aoe fesp $026b ffloop $87e fform $b0e BOOT ffoun $b BHI ffrts $ fhalf $a50e 6202 fiminl $ fimin2 $871a fiminl $ fin $a2d fin I $a2f finc $a2ef findgt $a findgq $a2f findig $a3h findiv $a findp $a3z fine $a32c fine I $a32e finec $a

245 crossreference... seite 10 finecl $a finec2 $a31a 589, 5898 finedg $a fingo $985b,071,077 fini $869b finlog $a363 53, finmul $a3' finnow $9aec H60 H62 finptr $9adf '213 H55 finqng $a3' , finre2 $ I finrel $962d finzlp $a2dc fixold Saa fkey $911f ' flag $ , fligm $90ff flnrt $813c flnrts $873d II 73 fload $8a float $a ,001,032 " floate $a floats $a21b " 6008 uu 573, flpint Sbale fmaptr $9af fmult $a "" H '0' fmultt $a00b ' fndfor $87db 128' fndl20 $813e 1164 II 70 fndlin $871f 955 IIH I 95 I fndln3 $ I fndlnc $ fndo50 $9da5 492, 4921 fndoer $9d fnedgl $a fnk05 $aa I fnwai t $ fone $9f9C 5276 for $8a9' forfix $ form $ I format $9,27, forpsh $966d forsiz $ founl $b,oe fout $a3e fout I $a3ec ,0 foutio $a3fd foutll $a,c foutl2 $a,d , fout I' $a4e foutl5 Sa,ef fout 16 $au foutl7 $a foutl9 $a50' fout2 SaUf fout20 $a50c fout3 Sa,1b 606, 6071 fout31 $a, fout38 $a fout39 $a fout' $a

246 crossreference... seite II fout41 $a fout5 $a fout6 $ahd fout7 $a40e fout8 $a46b fout9 $a42d foutbl $a foutpi $ahc foutst $a7e foutyp $a49b fpwrl $a fpwrt $a fpwrtl $a54a fr4 $a fre $9cf freoi $a fre02 $a frefio $9d fref70 $9d fref80 $9dl frefac $a8e I frefst $9dl frepla $a92e frerts $a frespc $003d I frestr $a8e fretio $a fretmp $a8ef fretms $a fretop $003b I frmevl $95ca frmevl $95cl frmnum $b frmt6 $ frmt8 $945f fscaio $ fsca20 $93a fsub $9e2d fsubt $9e ftf $bl9c garba2 $adb5 " garbag $ada get $8fl getoio $8f2a get020 $8f " getadr $b4e getagn $8f get.tlyt $b4d getcmp $990a getdef $9c5e getfnm $9d5c getfor $8b0c getin $bbe getnth $ getnum $b4ca getoff $b79d getpin $b4e

247 crossreference.... seite 12 getrts $ada getspa $ad getspt $a97c getstk $ getti I $ac ' 7 gettim $ac5c getval $b78a gfor $b3ed 842' 8438 ginlin $Bfb givayf $9d glar $ glet $B7ce ' globtt $927e gloop $aded glopl $aeld 758' 7585 go $Bc7c gobadv $99af goflot $ gofuc $abab 7 '3' gogo $9a gomldv $a5ce gomovf $9Bia gonprc $971f goo $97a gooo $97b gooop $b3e HZ gooos $Bdd goorat $93a goover $a0b gordfn $b gosub $Bc gotary $9bac goto $Bc gotoo $Bc grbg99 $adb grease $9c grody $89ee 16 II '6 77 grrk $9Bcd gtbytc $b4d gtff5 $b7b gti 10 $acb gtvl2 $b1bd 3H gtvl5 $b79a hairq $fffe havfor $Bblc highds $ '38' HBZ H H8 highst $02a hightr $ ' HOB H home $00c5 232 hulp $025e BOB I hup $b1 7e hyo $b41e 8H hyol $b hyo2 $b41b 8H i6509 $

248 crossreference..... seite 13 ichrge ichrgo icrnch idcon ident ierror ieval if if50 ifc ifrmev igone imain incfac incfrt incopo incopl incop2 incrnd incy indexl $0290 $028e $0284 $b64a $b61b $0280 $028a $8c42 $8c4c $0001 $028c $0288 $0282 $9fH $9f5d $aee9 $aeeb $aefb $a lfa $b lf9 $0022 index2 $0025 indlop $9b33 infcer $aee6 ini $b2a5 init $bb27 inito $bb2a init05 $bb2c initio $bb38 init20 $bb6e initat $bbc8 initop $ba93 initv $bbbc initv5 $bbbe inlin $86e H Hl H05 Hll HIS H28 H29 H H H I

249 crossreference... seite 14 inlinc $86fl II inloop $8ff inlpno $9c1f Hll 4719 inlpnl $9c inlpnm $9c66 HOl 4136 inpcol $8ff inpcom $a H inpcon $8ffl inpflg $ inpptr $004d inprts $90d input $8f inputn $8Hb insjmp $98a inst2 $afl inst3 $af inst4 $af inst5 $ah inst6 $af inst1 $af6e instfd $af instnf $af insy $b0f int $a2bl interr $993d intflg $ intidx $9b06 H intrts $a2d inz $b21f iodone $8f ioerr $bcla iorele $8f5b H ipb $ ipbsiz $000d 308 ipccmd $ 312 ipcdat $ ipcin $ ipcjmp $ ipcout $ iqplop $ isary $9b isfun $ isletc $99bf islrts $99c isp $b ispl $b3bd ispll $b3b issec $ isvar $ isvds $ isvrts $ itpoi $bafa itp02 $bacd itp03 $bacl itp04 $bab itp05 $bb itp06 $bad itp01 $bae ity $b jmper $ jsrgm $9b01 H79 HBI

250 crossref~rence.... seite 15 kbasin $ffcf kbsout $ffdz kchkin $ffc kcint $ff7e kckout $ffc kclall $ffe kclose $ffc kclrch $ffcc keyzo $ key40 $918e keygo $91ab kfunky $ff kgetin $ffe kioini $ff7b klkupl $ff8d klkups $ff8a kload $ffd kloop $893f kloqpz $894d kmembt $ff9c kmemtp $ff knwsys $ff6c kopen $ffc kplot $fff krdtim $ffde kreast $ffb ksave $ffd kstlfs $ffba kstmsg $ff90 zoo kstnam $ffbd kstop $ffe ksttim $ffdb kvrese $ff6f la $adbd lastpt $001e ld100 $a 14d ldaabs $025a IH 6023 ldaadr $025b H03 HOl I I 9541 ldfone $8add 1848 ldform $b ldi ly $ba ldsver $923e ldver $ ldvn $bldc ldzr $99d leftd $aaeb H len $ab8e H lenl $ab lenchk $b77b let $8d8a lf $000a 229 lfor $ linget $8d4e ZZ linnum $00lb " H

251 crossreference... seite 16 linprt $a3b list $898d list4 $ listh $89a list5 $89ad lkelse $8c5c lkt50 $ac7a llar $b lmkrtt $86de , lnkprg $86a lnkrts $86d load $bc loadck $91cd loadnp $91fd log $9fca logt $9fd log2 $9fc logadr $b5c logcn2 $9fa I 5281 logeb2 Sa logerr $9fd1 53" 5316 loopt $b loop6 $b61f loopdn $8b lopfda $9b lopfdv $9b lopfn $999c lopfnd $ loppta $9bf loprel $95el lowds $006a " , 778, lowtr $006d "71 " , , , H H50 H H , lpoper $95cf lsg $b, lf stend $ lstnr $ lstpnt $ H luk4i t $8ca lukall $8ca ,15 lvrl $ lzer $b main $85ca " 1062 main I $85f3 9H 952 main2 $868f map001 $ba8f "

252 crossreference... seite 17 mapary $ba mapdsp $ba6e mapdst $ba mapinx $ba mapstr $ba7d mapsys $ba mapusr $ba8c H H " I mapvar $ba H memtop $003f H midd $ab mint $b39d mkgarb $aa mkti 10 $ace mkti50 $adle mktime $acd mktmb $ace mktmc $ad mktmd $ad0a mldexp $a mldvex $a0ab mlexio $a mlexmi $a3a mloop $ I mltpl 1 $a03b mltpl2 $a03e mltpl3 $a04d 538 I 5389 mltph $aoh mltply $a morcol $8eeo morenl $ morlin $8d morsts $8 7dl maut $b3a movoo $aed I movooi $a laa movoi $aeel movlf $al mov2f $a 19 I 56" 6352 movaf $ale HI 6H6 movafl $ale movdo $a8c movef $ale movfa $a ld movfa I Sa ld movfal $a ld movfm $al movfr Sa Hia movfrz Sal~c ~ movfum $al movins $a8ab movlp $a8ca movmf Sa movpnt $aec

253 crossreference..... seite 18 movrts $alf movtop $aed movumf $a 1a ,29 movvf $a19f msg $a3c3 90, ' ' H8 msgprt $a3cf msgrts $a3e1 602, 6030 mulio $a0b9 H mulior $a0cf 5U8 5H1 muld $a0a6 HH 5H8 muldiv $a08e U mulshf $9f multrt $a05b mvdone $a8d mvstrt $a8e mxbank $ n0999 $a3a n32168 $a50d 6191 n9999 $a3aa 599, naa $add H naa2 $aea 1 76U 7665 namel $b ' name2 $b6ef 89H 89U 8971 nbr $b30f nchrge $ba H nchrgo $ba2c 950, 9773 ncnnch $88c ndac $00, negfac $9f2a negfch $9f2d neghlf $9fc negop $a57a HO '63 6H9 65U 6567 negprc $ negrts $a58' negxqs $a3'c nerror $ neval $96b newchr $8e9a newnam $b newsgo $8b newstt $815a next $8b next6 $b69a next6a $b6a next6b $b6a 7 89H 8920 nf $ , nfrmev $95c' ngone $875, nmain $85cd nmaryt $9b nmil $a3af 5999 no' $b nocr $b0dc nodel $86, nodell $866, , nodelc $866a nodele $ nodev $ nomn $b nono $b,05 8' nonono $9b20 H

254 crossreference... seite 19 norml $9f0c 51ZI 5169 normz $9f norm3 $9ebe 51ZO 5133 normal $9eba Z 6HZ nos I $bzo I nos3 $bzz nos4 $bz H nosec $995b 4ZZZ HZ8 nos1ft $9dZc Z notabr $8f0C Z5Z5 Z57Z Z584 Z591 notdel $affl notdim $9c noteos $afbd noteve $9aZO notevl $99de notfdd $9bd notfns $99c9 4Z64 4Z97 notit $99bZ H68 4Z78 notol $8aa notop $96f8 HZ 3817 notqti $8f75 Z634 Z6H Z659 notstr $9965 4ZZ9 4Z33 nowgel $9074 Z80Z Z804 nowget $905a Z784 Z789 nowlin $8fda Z70Z Z7ZZ nqglop $89( nrange $af9a ZO 78ZZ nrfd $0080 Z63 Z67 nsttl $877b 1197 IZI9 nsttz $878c 12ZO IZZ7 nstt3 $876c IZ07 IZ31 nstt4 $876f IZ03 IZ06 IZIO nstt6 $87cl IZ5Z IZ6Z nstt9 $ IZZI nsxx4 $8bd9 ZOIZ 20Z5 nsxx6 $8be6 ZOZ8 Z034 numins $9077 Z7H Z808 numlev $001a Z40 numtmp $ nxtcmp $98ff nxtlgc $8d nxtptr $99bl 427Z 4277 nxxx $b6b Z8 oblk $b09a ochanl $935b ochlio $9362 3Z50 3Z5Z ochr $b53a Z Z ocrlf $8ec ocrl fx $8ed Z50 okgoto $8c58 ZI09 Z116 oknorm $ oldclr $b oldlin $OOH 49 ZOI oldstk $029c oldtok $029f oldtxt $ U omerr $ omerrl $9c7c omerrc $88a omerrt $88ba IH6 IH9 on $b71e

255 crossreference... seite 20 on1 $b onz $b6e oneon $8af onglop $8d3a onglp1 $8d ongoto $8d2b ongrts $8d4d open $bbe opmask $005a opn10 $bbez opptr $ H optab $80d orop $986b oserr $ ospc $b5ze out $b outc $b0a outfac $a3be outqst $b outs $b3zf overr $9f5e parchk $ parszz $b6bd parse 1 $b parsez $b6ba parsts $008b H parstx $008c H patch1 $ patchz $958c patch3 $ pchar $b peek $9e01 HZ 4993 pi $00ff" 248 pi2 $a pival $96cb 3778 ploop $89cc ploop1 $89d plsrts $ba1b plsv $b9b plsvz 7 $b9f HI 9462 plsv30 $ba plsv3z $ba plsvx $b9d H pndd $b3c pndx $b3cb pntl $b20e poit $bzzb poke $ poly $a61b poly1 $a61f 63H 6352 polyz $a poly3 $a poly4 $a polyx $a pos $9d posint $9b0c H posp $026a

256 crossreference... seite 21 post $b3a prcha $b pream $ab print $8e9d printc $8ea printn $BeTa prit3 $8afe prit3b $Ba lf prit4 $89c H prmrpt $b7b prxrpt $b7ba ptrget $992c ptrgtf $ ptrgt2 $ ptrgt3 $ ptrsiz $ puc50 $a Tcf puc60 $a7d pucbye $a7d pucoma $ puctrl $a 7c pudefs $8a pudot $ pufill $ pulst! $ pulstk $ pumony $ punt $b35f pushf $965e pushfl $ putnew $a86c putnwl $a putnw2 $a8a putnwl $a87f qchnum $ qcomp $ qdata $ qdectl $ qdot $96d qdsav $97f qdsvar $99fe qeravr $99f qerlin $9Td qinlin $BfaB qint $a2bo qintl $a2a qintgo $9b22 H qintgr $Bda qintrt $a29f qishft $a qnrts $bl qnum $ba qnumer $97ea qop $ qopgo $ qoprts $96ab qplop $B9fl qplus $a2eb qprec $ qprecl $963f 366 I 3675 qshft $al qstatv $97c

257 crossreference... seite 22 qstavr $99ea qtyer2 $b qtyerr $b71b raddc $a range $aff I 7870 rdcn $bbaa rddb $00c7 267 rdfn $bbc rdmov $b8e rdrto $b8ec rdy $b22d read $8fea readst $bbdd ready $85cO rearts $88af reasav $ reasnt $8Bb reason $ reasto $ reay $b0ba recl $94d rec2 $94d rec3 $9HO rec4 $94c rec5 $949b rec6 $94cb reclen $b5d recon $b5f recoo $b5e record $949e reddy $84de rem $8c remer $8d remn $8cfO remtxt $Bdl ren $ rename $ resoo $a rescnt $Be lf 23BO 2421 rescrl $Ba II reseio $B rese20 $ rese30 $B rese40 $B rese60 $ B 1582 resend $Be0e reser $B reserr $8ba resetc $ TB I 27B8 resho $ reslo $002b B res1st $80ef resmo $002a resmoh $ resnum $8dfl resrch $8a0e ressnr $8d resswp $8dff ~05 res to 1 $8b restor $8b restrz $Ba resumo $Be II

258 crossreference... seite 23 resum2 $8deb resume $8dc retrn $b retu1 $Bcd return $Bcb rfat $b rfata $b rid $b8bc rightd $ab22 H rleft $aafc rleft1 $ab rleft2 $ab H rleft3 $ab rmulc $a rnd $a rnd1 $a67a rnd10 $a rnd20 $a6a rndd $b1aa rndrts $9f rndshf $9flb rng100 $afff rng200 $b rngerr $affc rngrts $b rolshf $9f round Sa 1f rrts $b rsca $b87d rseed $bb rsfn $b8b rspa $b rt $b4b rtts $b run $8c run2 $8c runc $8a runc2 $8c runm10 $8ba runmod $Bell rusure $b95b II rwrt $b rwrtl $bba sa $8bc sadi2 $aa sadi3 $aa4d sadh $aa sadi8 $aa savl $b29c savio $a9h savl2 $b0df H H sav13 $91b sav 14 $abl savl5 $ab savl6 $ab savl7 $ab savib SabBd sav20 $b80b H sav3 $b9e sav30 $906b sav32 $ sav4 I $a57e

259 crossreference... seite 24 sav42 $ savh $9bc sav45 $9bcf sav47 $aac sav60 $b sav61 $b sav1 $ae I 1605 sav73 $88a sav74 $88a sav75 $9e3c sav16 $9e sav71 $b99c sav9 $938e savawo $a save $bc0c savenb $922e savenp $921e schsl $b scratc $ scrath $8a scrtch $8a2b sctcl $ sctc2 $ sdpl $b81d sdp2 $b sdp3 $b sdp4 $b sdp5 $b seedpt $008d sendp $b ser $b05f setaut $904d settop $bb sexp $b22e sfar $b3fb sgn $a sgnflg $ shfarg $a shftr2 $9f shftr3 $9f shftr4 $9f8c shftrt $9f9a shiftr $9f shpn $ble sign $a signon $bb signrt $a20f sin $a6ad sinl $a6el sin2 $a6e sin3 $a6fl sincon $a sizeok $aaad slock $ slrl $aeaf slr2 $aec sner $b snerr $97H snerrl $87d snerr2 $8f snerr3 $8d

260 crossreference.... seite 25 snerr5 $ snerr6 $90b sngflt $9d sno $026e soth $a9cd sotl $a sots $ sperr $ spos $b sqr $a sqr05 $9fb sqrzo $9fbb 5295 squeez $9f srq $ sswe $b stztxt $abf ZH stack $ HZ stasgn $98fT stkend $01fb 246 stkini $8a stkrts $8a8f stmdsl $803b stmdsp $ stoint $9d3f stold $a5c stolop $ stop $8ba stopc $8baf stopd $8bc stordo $ storst $bbde storts $9d staut $bld stp $b0f stpz2 $8bab stroio $a7e str020 $a7ed str030 $a 7f str040 $a Tff stradj $aa6c strbnk $ strcmp $98c strd $a 7db H strdnz $907f II strdon $8e strend $0039 H s trf i I $a84a strfiz $a84b strfin $a strget $a strini $a strlit $a81f strlt2 $a , 6642 s trna I $ strnam $99Tc strp2 $b51f strpj $b52b strprt $b

261 crossreference.. seite 26 strrts $97Bd strsiz $0004 zu strspa $ strst2 $a85a strtxt $96e stxbuf $a4b H8 stxfnd $ stxfor $8b0f stxtpt $b4b8 I stz $b2af subflg $ I subit $9e9Z SUIIfll $aaf swalp $15e swe $ Z synchr $ sysbnk $DOOf szer $b31d tlber $Beea tabfcb $b1bf 91ZZ 9152 tabld $b7cb tackyf $b BBZ1 tagf $b24a tag2 $bz tag3 $b21f tan $a6f8 HO 6477 tansgn $ tat $b3dz "" tclose $bcl tddb $003f 268 te $ telx $b te.npt $001d temps t $ I tenc $aod timnum $ad3d tlkr $ tmhour $0005 IZ ZZ 7439 tn~~~in $ tmpdes $0Za I I 7802 tmptrp $OZ9d tmsec $ tmten $ toin $ toout $ trans $ trap $8dl trapl $8dZ trapno $0296 IBO ZZ trmno I $90b trmnok $9013 ZB trmok $9088 ZBIZ 2815 trmpos $ trnar $b86a tryagz $ad tryagj SadS tryag4 $ad1b 7H tryag5 $ad tryg $abb I 7 trymor $ ""

262 crossreference..... seite 27 tryoff $a09b tstdir $9d57 tstdun tstop tstrom turnon twopi txtbnk txtend $89bf $95de $baoc $9975 $a72b $0001 $002f txtptr $0085 txttab $002d typlin ucnupk uexp ulstn umlcnt umult umultc umultd unit unitl unit2 unpstk unstop uround userr usgn using usrpok utlkr val val I val2 valtyp $89cl $a05e $0265 $003f $9cf0 $9cc4 $9cd7 $9ccd $b72b $b59c $b6ea $968e $8bb6 $b2c0 $8ccd $0264 $b026 $0002 $005f $abae $abb6 $abd5 $00" I HI I I " IIH II H H I I H I I II H I " varbnk $ varnam $004f varok $9a0a varpnt $ H62 H H vartab $0031 " varyo $90d vf $ HH

263 crossreference..... seite 28 vn $ waiter $ warm $bbcc xbkerr $93e xcnt $000f xeqcm $ xeqcm2 $87aa xeqcm3 $87a xeqdir $ xit $balc U4 xrfn $b8da xspac $8f xspac2 $8f zeremv $a0bl H zerita $9c3c 46H zeroft $9edc zerofc $9eda zeroml $9ede 5HO 5H5 zerot $b zerrts $9eH zout $b32d zxit $949a

264 5. TEIL ASSEHBLERLISTING 2 CBH OPERATINGSYSTEH

265

266 b7!0os.lib... seite 0001 zeile adr. obj.-code source-code pass I 0004.lib b7!0os.lab 0191.lib btioos. io 0468.lib btioos. con 0563.lib editor! 1374 eud.lib editor e985.lib editor edoc.lib monitor 3270 flc3.lib kernal! 3914 f67f.lib kernal fb34.lib kernal3 pass 2 000! 6!0/710 Operatingsystem library-file lib b7!0os.lab

267 610/710 os label-def. hard+soft ass/reass... seite 0002 zeile adr. obj.-code source-code OOH ===> externe zero-page-label <=== e6509 i6509 usrpok fnadr sal sah sas eal eah eas stal stah stas status fnlen la fa sa dftln dflto tape! ribuf stkey c3po bsour ipoint pch pcl sp xi6509 invh invl tmpl tmp2 tmpc t6509 ddisk pkybuf keypnt sedsal sedeal pnt tblx pntr grmode lstx lstp lsxp crsw ndx qtsw insrt config indx $00 $01 $02 $90 $93 $94 $95 $96 $97 $98 $99 $9a $9b $9c $9d $9e $9f $ao $a1 $a2 $a3 $a6 $a9 $aa $ab $ac $ae $af $b4 $b5 $b7 $b8 $b9 $bb $bd $be $bf $c0 $c2 $c4 $c6 $c8 $ca $cb Sec $cd $ce $cf $d0 $dl $d2 $d3 $d4 $d execution register 6509 indirection register jmp code für usr"-routine addrl akt. filename addrl akt. Load/store adresse addrh akt. Load/store adresse bank akt. Load/store adresse addrl ende akt. Load/store addrh ende akt. Load/store bank ende akt. Load/store addrl anfang akt. Load/store addrh anfang akt. load/store bank anfang akt. Load/store i/o operation status länge akt. filename akt. logische Filenummer akt. primäradresse lgeräte-nummerl akt. Sekundäradresse vorgabe input-grätenummer vorgabe output-gerätenummer addrl kassettenpuffer addrl rs232 eingabe-puffer stop tasten flag ieee puffer flag ieee zeichen puffer addrl ram indirekt-painter addrh programmzähler pc addrl programmzähler pc stack-pointer sp alte indirection bank addrh user interrupt-vektor addrl user interrupt-vektor addrl monitor zwei-byte zeiger I addrl monitor zwei-byte zeiger 2 ablage letzter monitor-befehl laufende 6509 indirection bank lfd. disk-primäradr. für monitor addrl start programmierbare tasten addrl akt. pgm tastenpuffer addrl scroll-zeiger start addrl scroll-zeiger ende addrl zeiger auf akt. zeichen im video-ram cursor zeile cursor spalte flag für grafik/text-modus index letztes zeichen screen edit Startposition letzte position lzeilel flag er bei bs-eingabe anzahl bytes im tastaturpuffer flag für anführungszeichen-modus insert flag cursor type I char. vor blinken position letztes zeichen in zeile

268 610/710 os 1abe1-def. hard+soft ass/reass.... seite 0003 zeile adr. obj.-code source-code kyndx rptcnt delay sedtl sedt2 adata sctop scbot sclf scrt modkey norkey bitabl $d6 $d1 $d8 $d9 $da $db $dc $dd $de $df $e0 $el $e2 ===> externe ram-label <=== stack buf cinv cbinv nminv iopen iclose ichkin ickout iclrch ibasin ibsout istop igetin iclall iload isave usrcmd escvec ctlvec isecnd itksa iacptr iciout iuntlk iunlsn ilistn italk lat fat sat lowadr hiadr memstr memsiz timout verck ldtnd msgflg t I t2 $0100 $0200 $0300 $0302 $0304 $0306 $0308 $030a $030c $030e $0310 $0312 $0314 $0316 $0318 $031a $031c $031e $0320 $0322 $0324 $0326 $0328 $032a $032c $032e $0330 $0332 $0334 $033e $0348 $0352 $0355 $0358 $035b $035e $035f $0360 $0361 $0363 $0364 zeichenzähler für pgm tastenbefehl zeit zwischen zeichen bei repeat zeit bis zum einsetzen des repeat mehrfach benutzte editorvariable mehrfach benutzte editorvariable akt. ausgabezeichen oberste zeile bildschirm I0-25) unterste zeile bildschirm 10-25) linker rand bildschirm rechter rand bildschirm flag shift/control-taste flag normale taste tabe11e basic-doppelzeilen 14 byte) 6509 cpu-stack basic input-puffer -$2ff addrl irq vector addrl brk-vector addrl nmi-vector addrl open file-vector addrl close-vector addrl open eingabekanal-vector addrl open ausgabekanal-vector addrl close kanal-vector addrl eingabe akt. kanal-vector addrl ausgabe akt. kanal-vector addrl prüfe stoptaste-vector addrl char aus tast.-puffer vector addrl alle files schliessen-vector addrl lade vom file-vector addrl save auf file-vector addrl monitor erweiterung-vector addrl user esc-tasten-vector addrl unbenuzte ctrl tasten-vector addrl ausgabe sek.adr. nach listen addrl akt. sekundäradr. auf iec-bus addrl zeichen von iec-bus nach ac addrl ac auf iec-bus ausgeben addrl untalk auf iec-bus ausgeben addrl unlisten auf iec-bus ausgeben addrl listen auf iec-bus ausgeben addrl talk auf iec-bus ausgeben tabelle akt. log. file # 110 byte) tabelle akt. primäradr. tabe11e akt. sekundäradr. addrl anfang des system speichers addrl ende des system speichers addrl anfang des benutzer speichers addrl ende des benutzer speichers ieee timeout enable flag load/verify flag zeiger in file-tabellen message flag kernalvariable temporär kernalvariable temporär

269 610/710 os label-def. hard+soft ass/reass..... seite 0004 zeile adr. obj.-code source-code OIH OIH xsav savx alarm itape relsal relsah relsag cas 1 m51ctr m51cdr rsstat dcdsr ridbs ridbe pkyend keyseg keysiz rvs lintmp 1stehr insflg scrdis bitmsk keyidx logscr bellmd pagsav tab keyd funvec sedt3 evect ipjtab ipptab $0365 $0366 $0369 $036a $036f $0370 $0371 $0375 $0376 $0377 $031a $037b $037c $037d $0380 $0382 $0383 $0397 $0398 $0399 $039a $039b $039c $039d $039e $039f $03a0 $03a 1 $03ab $03b5 $03b7 $03f8 $0810 $0910 ===> externe rom-label <=== pulstl = $ ===> bildschirm-label <=== H linzo linzl linz2 linz3 linz4 linz5 linz6 linzt linz8 linz9 linzio linzll linzl2 linzl3 linzl4 $d000 $d050 $doao $d0f0 $dl40 $dl90 $dle0 $d230 $d280 $d2d0 $d320 $d310 $d3c0 $d410 $d460 kernalvariable temporär kernalvariable temporär flag für irq von 6526 addrl indir. cassette addrl variable start-load-adr. addrh variable start-load-adr. bank variable start-load-adr. cassette switchflag rs232: kopie 6551 control-reg. rs232: kopie 6551 command-reg. rs232: akt. rs232-status rs232: letzter dcd/dsr wert rs232: eingabe start zeiger rs232: eingabe end zeiger addrl endadr. funkt.tastenpuffer ram-segment I für funktionstasten funktionstasten (20bytesl revers flag puffer für bs-zeilen I letztes gedrucktes zeichen auto insert flag scroll disable flag bit mask/funkt.tasten temporär index programmierbare befehle logical/physical scroll flag flag für glocke am zeilenende zeitweise ram page tabstop flags (max. 10byt/80bitl tastaturpuffer (10 bytesl addrl ind. jmp für funktionstasten temporär list funktionstasten addrl warmstart-vector coprozessor-jump tabelle coprozessor-parameter tabelle bildschirm-adr. zeile bildschirm-adr. zeile 2 bildschirm-adr. zeile 3 bildschirm-adr. zeile 4 bildschirm-adr. zeile 5 bildschirm-adr. zeile 6 bildschirm-adr. zeile 7 bildschirm-adr. zeile 8 bildschirm-adr. zeile 9 bildschirm-adr. zeile 10 bildschirm-adr. zeile 11 bildschirm-adr. zeile 12 bildschirm-adr. zeile 13 bildschirm-adr. zeile 14 bildschirm-adr. zeile 15

270 610/710 OS label-def. hard+soft ass/reass.... seite 0005 zeile adr. obj. -code source-code 0179 linzl5 $d4b0 bildschirm-adr. zeile linzl6 $d500 bildschirm-adr. zeile I linzl7 $d550 bildschirm-adr. zeile linzl8 $d5a0 bildschirm-adr. zeile linzl9 $d5f0 bildschirm-adr. zeile linz20 $d640 bildschirm-adr. zeile linz21 $d690 bildschirm-adr. zeile linz22 $d6e0 bildschirm-adr. zeile linz23 $d730 bildschirm-adr. zeile linz24 $d780 bildschirm-adr. zeile end 0191.lib b710os.io

271 610/710 input/output hard+soft ass/reass.... seite 0006 zeile adr. obj.-code source-code ===> 6509 microprozessor <=== dieser mikroprozessor unterscheidet sich von seinem bekannten bruder 6502 nur durch die möglichkeit, I megabyte zu adressieren. der befehlssatz ist identisch. es werden beim 6509 lediglich bei zwei befehlen alle 20 adressleitungen ausgewertet lzero-page byte 0/IJ, die verwendete taktfrequenzist verdoppelt 12 mhzj. ===> 6845 video display controller 'vdc" bzw. <=== ===> 6545 cathode ray tube controller 'crtc" <=== mit dem 'vdc' wird die bildschirmausgabekontrolliert und verwaltet. er ist das bindeglied zwischen dem bildschirmspeieher und bildschirm. vdc adreg dareg $d800 0 mögliche werte des adress-registers -- basis-adresse des 6845-vdc/6545-crtc adress-register daten-register roo 0 horizontal total roi horizontal displayed r02 2 horizontal synch position r03 3 horizontal + vertical synch widths r04 4 vertical total r05 5 vertical total adjust r06 6 vertical displayed r07 vertical synch position r08 8 mode control r09 9 scan line rio 10 cursor start rll II cursor end r12 12 addrh display start address rl3 13 addrl display start address rl4 addrh cursor position rl5 " 15 addrl cursor position rl6 16 addrh light-pen rl7 I 7 addrl light-pen ===> 6581 sound interface device 'sid' <=== dieser dreistimmige synthesizer bietet umfangreiche möglichkeiten zur erzeugung von tönen und musik. es kann fur jeden der drei Oszillatoren die wellenform, frequenz, Lautstärke, anstiegs- und abfallzeit, sowie ein filter programmiert werden. sid = $da00 Offsetadressen der oszillatoren oscl osc2 0 7 basis-adresse des 6581-sid offset-adresse 6581-oszillator offset-adresse 6581-oszillator 2

272 610/710 input/output hard+soft ass/reass.... seite 0007 zeile adr. obj.-code source-code osc3 = 14 register der oszillatoren freqlo freqhi pulsef pulsec oscctl atkdcy susrel Offsetadressen filter fclow fchi resnce volume restliche offsetadressen potx poty random cenv offset-adresse 6581-oszillator 3 addrl frequenz oszillator addrh frequenz oszillator addrl pulsbreite oszillator addrh pulsbreite oszillator Steuerregister oszillator attack/decay-time oszillator sustain/release time oszillator addrl filterfrequenz addrh filterfrequenz filter-wahlschalter und resonanzeinstellung lautstärkeregler Wahlschalter tief-, band-, hochpab a/d-wandler I a/d-wandler 2 rauschgenerator hüllkurvengeneratot ===> 6526 complex interface adapter "cia" <=== die zwei eingebauten "complex interface adapter" steuern über ihre ports die angeschlossenen einheiten (z.b. user-port, ieee-daten, coprozessor "z80 zilog" und "8088 intel"). in den "6526" stehen auch noch zwei 16-bit-zähler und eine 24-stunden-uhr zur verfügung. Offsetadressen der register pra cia periph. data reg. a (pra J prb I 6526 cia periph. data reg. b (prb) ddra cia data direct. reg. a (ddra) ddrb cia data direct. reg. b (ddrb) talo 6526 cia timer a lo reg. (ta loj tahi 5 ' 6526 cia timer a hi reg. (ta hi) tblo cia timer b lo reg. (tb lo) tbhi cia timer b hi reg. (tb hi) todio B 6526 cia uhrzei t: 1/10 sek. reg. todsec cia uhrzeit: sekunden reg. todmin cia uhrzeit: minuten reg. todhr II 6526 cia uhrzeit: std. am/pm reg. sdr cia serial data register (sdr) icr cia irq control reg. ( icrj cra 6526 cia control register a (cra J erb cia control register b /erb) " ===> cia, für coprozessor-communication (z80/8088) <===

273 inputloutput hard+soft asslreass seite 0008 zeile adr. obj.-code source-code ipcia = $db00 basis-adresse cia I belegung der einzelnen bits pra = data port H prbo: busyl II => 6509 off dbusj prbl: busy2 II => 8088lz80 off dbusj prb2: signalflag 8088lz80 prb3: signalflag 6509 prb4: unbenutzt prb5: unbenutzt prb6: irq to 8088lz80 llo) prb1: unbenutzt bit-offset port b sem88 sem prb bit2 prb bit3 ===> cia 2 für ieee-daten, user-port, spiele usw. <=== cia = $dc00 basis-adresse cia 2 belegung der einzelnen bits -- timer a: ieee local I cass. local I music I game timer b: ieee deadm I cass. deadm I music I game prao: pra I: pra2: pra3: ieee data I I ieee data2 ieee data3 ieee data4 pra4: ieee data5 pra5: ieee data6 pra6: ieee data7 pra7: ieee data8 I I I I I I I prbo: user I game 10 prbl: user I game II prb2: user I game 12 prb3: user I game 13 prb4: user I game 20 prb5: user I game 21 prb6: user I game 22 prb7: user I game flag: user I cassette read 0351 pc user 0358 ct user 0359 oooo sp user ===> 0363 ===> 0364 user I paddle game user 1 paddle game 2 user user user user user I game trigger 14 user I game trigger asynchronius communications interface adapter <=== ac~a rs 232-c Schnittstellen-controller <===

274 inputloutput hard+soft asslreass.... seite 0009 zeile adr. obj.-code source-code , " , 0422 dieserbausteinübernimmt diesteuerungder 'rs 232-c' Schnittstelle. es sind Übertragungsraten von 50 bis baud einstellbar. er Überwacht den datentransfer und wandelt die zu Übertragende information in das gewünschte format (bit, parität usw.j um. acia = $dd00 offset-adressen der register drsn srsn cdr ctr 0, 2 3 basis-adresse 6551 acia ===> 6525 triport interface device 'tpi' <=== data register lwritelread) reset bei write, status bei read command-register control-register dieser baustein verfügt Über 24 eingabelausgabe- und 2 handshakeleitungen, sowie 5 unterbrechungseingängen. es werden damit die tastatur und der ieee-bus kontrolliert. offset-adressen der register pa 0 port register a pb port register b pc 2 port register c ddpa 3 data direction register a ddpb 4 data direction register b ddpc 5 data direction register c creg 6 control register air active interrupt register ===> 6525 triport I für ieee-control <=== network I vic I irq tri I $de00 basis-adresse triport I belegung der einzelnen port-bits pao: ieee dc control pa I: ieee te control pa2: ieee ren pa3: ieee atn pa4: ieee dav pa5: ieee eoi pa6: ieee ndac pa 7: ieee nrfd I ti partsj lti partsj pbo: ieee ifc pb1: ieee srq pb2: network transmitter enable pb3: network receiver enable pb4: arbitration logic switch pb5: cassette write pb6: cassette motor ltlrj

275 610/710 input/output hard+soft ass/reass seite 0010 zeile adr. obj.-code source-code 0423 pb7: cassette switch irqo: 50/60 hz irq 0426 irq I: ieee srq 0427 irq2: 6526 irq 0428 irq3: loptj 6526 inter-processor 0429 irq4: ===> 6525 triport 2 für keyboard 0433 und vic 16k control <=== tri2 $df00 basis-adresse triport belegung der einzelnen bits pao: keyboard out 8 OHO pa I: keyboard out 9 OHI pa2: keyboard out 10 OH2 pa3: keyboard out II OH3 pa4: keyboard out 12 04H pa5: keyboard out 13 OH5 pa6: keyboard out 14 OH6 pa 7: keyboard out 15 OH7 OH8 pbo: keyboard out 0 OH9 pbl: keyboard out I 0450 pb2: keyboard out pb3: keyboard out pb4: keyboard out pb5: keyboard out pb6: keyboard out pb7: keyboard out pco: keyboard in pcl: keyboard in I 0459 pc2: keyboard in pc3: keyboard in pc4: keyboard in 0462 pc5: keyboard in pc6: vic 16k bank select low 0465 pc7: vic 16k bank select hi end 0468.lib b710os.con

276 610/710 konstanten hard+soft ass/reass..... seite 0011 zeile adr. obj.-code source-code ===> ascii- und asc-codes <=== ===> H er clrscr home eom $0a $Od IH 197 $80 system-konstanten und parameter <=== forsiz numlev bufsiz addprc addpr2 addpr4 addpr8 stkend clmwid pi strsiz ptrsiz numtmp I addprc+addprc addpr2+addpr2 addpr4+addpr4 $0 lfb 10 $ff 0498 ===> ieee-konstanten und parameter <=== ! " dc te ren attn dav eoi ndac nrfd ifc srq rddb tddb eoist tlkr lstnr utlkr ulstn toout toin eoist nodev sperr 3 3 $01 $02 $04 $08 $!0 $20 $40 $80 $01 $02 ascii für "line feed" ascii für "carriage return asc für clear screen asc für cursor home end-of-message-kennung erstes byte für stack spaltenbreite für tabulation basic-token für pi anzahl speieherstellen für string-descriptor anzahl speieherstellen für speicher-zeiger 75160/75161 control line 75160/75161 control line remote enable attention data available end or identify not data accepted not ready for data interface clear service request nrfd+ndac+te+dc+ren direction for receiver eoi+dav+attn te dc ren direction for transmit $40 $40 $20 $5f $3f $01 $02 $40 $80 $!0 eoi status test device is talker device is listener device untalk device unlisten timeout status on output timeout status on input eoi on input no device on bus verify error mit

277 610/710 konstanten hard+soft ass/reass..... seite 0012 zeile adr. obj.-code source-code ===> ===> ===> > slock $40 dibf $80 vorbelegte speicher-segmente sysbnk mxbank txtbnk varbnk arybnk strbnk $0f sysbnk+l dos-interface-konstanten <=== dosfnl dosdsk doslfn dosctl dos1st screen editor lock-out data in output buffer <=== 21 dosfnl+dosfnl+dosfnl+16 nummer der system-bank erste nicht erreichbare bank bank für basic-programme bank für einfache variablen (256k-versionl bank für variablenfelder (256k-versionl bank für strings (256k-versionl länge von filenamen vorgabewert für disc-gerätenummer dos internal logical file nummer kernal coprozessor communications-variablen <=== ipb ipbsiz $ offsets im ipc-puffer ipccmd 0 ipcjmp 1 ipcin 3 ipcout ipcdat 5.end.lib edi tor 1 <--- basisadresse ipc-puffer kernal inter process communication puffer-länge ipc befehl ipc sprung-adresse anzahl ipc eingabe-bytes anzahl ipc ausgabe-bytes ipc data-puffer (8 bytesl

278 610/710 os-editorl hard+soft ass/reass.... seite 0013 zeile adr. obj.-code source-code = $e eooo eooo eooo ===> "jmp sprung-tabelle <=== 0570 eooo 4c 09 ee jmonon jmp monoff e003 e003 ea nop 0513 e e004 4c 44 eo jcint jmp eint 0515 e e001 4c fe eo jlp2 jmp lp eooa eooa eood 4c 79 e I jloop5 jmp loop eood eoio 4c 99 e2 jprt jmp prt eoio e013 4c 3f eo jscror jmp scrorg 0584 e013 4c 65 e8 jkey jmp key 0585 e e016 4c da eo jmvcur jmp movcur 0581 e e019 4c 25 eo jplot jmp plot eoic eoic 4c Ja eo jiobas jmp iobase eo lf eoif 4 c 70 e9 jescrt jmp escape 0593 e e022 4c f8 e6 jfunky jmp keyfun 0595 e e025 monitor-kaltstart {basic aus) bildschirm-, funkt.tasten-reset zeichen aus tastenpuffer in ac char von bs holen {get o. inputl zeichen aus ac auf bildschirm max.anzahl: spalten=xr, zeilen=yr tastatur lesen/in puffer schreiben cursor-pos. in reg. 14/15 vdc 6851 akt. x,y-pos. des cursors lesen I schreiben basisadr. ilo-gerät nach xr/yr bearbeitung von escape-funktionen vector für funktionstasten 0597 e025 ===> akt. x,y-pos. des cursors lesen I schreiben <=== 0598 e e025 bo Oe plot bcs rdplt 0600 e ca stx tblx 0601 e cf stx lsxp 0602 e02b 84 cb sty pntr 0603 e02d 84 ce sty lstp 0604 e02f 20 cd eo jsr stupt 0605 e da eo jsr movcur 0606 e e e e e II e e e03a ===> cursorzeile in xr, spalte in yr <=== a6 ca a4 cb 60 rdplt ldx tblx ldy pntr rts cursorzeile in xr, spalte in yr cursor zeile letzte position lzeilel cursor spalte screen edit startposition bs-zeiger auf cursor-zeile cursor-pos. in reg. 14/15 vdc 6851 cursor zeile cursor spalte 0614 e03a 0615 e03a ===> basisadr. i/o-gerät nach xr/yr <=== 0616 e03a 0617 eoja a2 oo iobase ldx 1$ e03c ao dc ldy l$dc 0619 e03e 60 rts 0620 e03f 0621 efl3f

279 610/710 os-editor1 hard+soft ass/reass seite 0014 zeile adr. obj.-code source-code 0622 e03f ===> max. anzahl spalten nach xr, zeilen nach yr <=== 0623 e03f e03f e041 e eoh 0628 eoh a2 50 ao scrorg ldx #$50 ldy #$19 rts 0629 e044 ===> bildschirm-, funkt.tasten-reset <=== 0630 eoh 0631 eoh 0632 e e e04a 0635 e04b 0636 e04d 0637 eoh 0638 e e e e e e05b 0644 e05d 0645 e05f 0646 e e e e e06b 0651 e06d 0652 e e e e e07b 0657 e07d 0658 e07f 0659 e e e e e08a 0664 e08c 0665 e08d 0666 e08f 0667 e e e094 a9 00 a c2 ca 10 fb a2 20 9d ca 10 fa a9 Oe 85 d8 a d4 a9 2a 8d b5 03 a9 e9 8d b6 03 a5 co 05 c 1 do 3d ad d ad d a9 40 a2 oo ao ff bo 26 8d e8 86 co do 01 c8 84 c1 ao e2 eint lda #$00 ldx #$23 cloop1 sta keypnt,x dex bpl cloop1 ldx #$20 cloop2 sta rvs,x dex bpl cloop2 lda #$Oe sta delay lda #$60 sta config lda #$2a sta funvec lda #$e9 sta funvec+1 lda pkybuf ora pkybuf+1 bne noroom lda hiadr sta pkyend lda hiadr+1 sta pkyend+1 lda #$40 ldx #$00 ldy #$02 jsr kalloc bcs noroom sta keyseg inx stx pkybuf bne room10 iny room10 sty pkybuf+1 ldy #$39 jsr pagst2 addrl akt. pgm tastenpuffer revers flag 0670 e094 ===> 10 Funktionstasten vorbesetzen <=== 0671 e e e e e09a 0676 e09c 0677 e09f 0678 eoa e0a4 b9 2d ec co do f e2 ao oa b9 23 ec kyset1 lda keydef-l,y dey sta lpkybufl,y bne kyset1 jsr pagres ldy #$0a kyset2 lda keylen-2+1,y sta keyseg,y zeit bis zum einsetzen des repeat cursor type I char. vor blinken addrl ind. jmp für funktionstasten addrh ind. jmp für funktionstasten addrl start programmierbare tasten addrh start programmierbare tasten addrl ende des system speichers addrl endadr. funkt.tastenpuffer addrh ende des system speichers addrh endadr. funkt.tastenpuffer allocation-routine ram-segment # für Funktionstasten addrl start programmierbare tasten addrh start programmierbare tasten segment funktionstasten setzen tab. 1 funktionstastenbefehle -1 addrl start programmierbare tasten 10 Funktionstasten vorbesetzen segment zurücksetzen ram-segment # für Funktionstasten

280 610/710 os-editorl hard+soft ass/reass..... seite 0015 zeile adr. obj.-code source-code 0680 eoa e0a8 do f eoaa 20 c7 e eoad 0684 eobo 0685 eob e0b e0b e0b e0b e0b e0b eobc 0693 eobe 0694 eobf 0695 eocl 0696 eoc I e e2 dey bne kyset2 noroom jsr sreset jsr txcrt jsr crtint ===> bildschirm löschen <=== 20 cl eo 20 Cf eo e2 e4 dd eb 90 f5 clsr clsio jsr nxtd jsr scrset jsr clrln cpx scbot inx bcc clsio 0697 eocl ===> home-position setzen <=== 0698 eocl a6 dc 86 ca 86 cf a4 de 84 cb 84 ce nxtd stuio ldx sctop stx tblx stx lsxp ldy sclf sty pntr sty lstp eocl e0c3 e0c5 e0c1 eoc9 eocb eocd eocd eocd ===> bs-zeiger auf cursor-zeile <=== 0708 eocd 0709 eocd a6 ca 0110 eocf 0711 eocf stupt ldx tblx bs-fenster auf volle grösse (home-homel textmodus setzen crt-controller programmieren home-position setzen bs-zeiger setzen,zeilenoffset=xr bs-zeile löschen unterste zeile bildschirm (0-251 oberste zeile bildschirm (0-251 cursor zeile letzte position lzeilel linker rand bildschirm cursor spalte screen edit Startposition cursor zeile 0712 eocf ===> bs-zeiger setzen.zeilenoffset=xr <=== 0713 eocf 0714 eocf bd b2 eb scrset lda ldtb2,x 0115 e0d2 85 cb sta pnt 0716 e0d4 bd cb eb lda ldtbl,x 0717 e0d7 85 c9 sta pnt+l 0118 e0d eoda 0120 eoda 0721 eoda ===> cursor-pos. in reg. 14/15 vdc 6851 <=== 0122 eoda eoda eodc eodd ao Of 18 a5 c8 movcur ldy 1$0f clc lda pnt eodf eoel e0e4 e0e7 eoeb eoeb eoee eofo 65 cb Be 00 d8 8d 01 d8 88 Be 00 d8 ad 01 db 29 f8 85 d9 rts adc pntr sty vdc+adreg sta vdc+dareg dey s ty vdc ~adreg lda vdc+dareg and l$f8 sta sedtl tab. anfangs-addrl bs-zeilen addrl zeiger auf akt. zeichen im video-ram tab. anfangs-addrh der bs-zeilen addrh zeiger auf akt. zeichen im video-ram addrl zeiger auf akt. zeichen im video-ram cursor spalte 6845 vdc: adress-reg vdc: daten-reg vdc: adress-reg vdc: daten-reg. mehrfach benutzte editorvariable

281 610/710 os-editorl hard+soft ass/reass.... seite 0016 zeile adr. obj.-code source-code OHO OH I e0f2 eoh e0f6 eofb eofa eofd eofe eofe a5 c d9 Bd 01 db 60 lda pnt+ 1 adc 1$00 and 1$07 ora sedtl sta vdc+dareg rts 0742 eofe ===> zeichen aus tastenpuffer in ac <=== 0743 eofe 07H eofe 0745 eioo OH6 07H 0748 OH , 0752 el02 el05 eiob eioa eiod eiof e el el H 0755 eih a6 d6 fo 12 ac 9d e2 bl c e2 c6 d6 ee 9d lp2 ldk kyndk beq lp3 ldy keyidk jsr pagst2 lda lkeypntl,y jsr pagres dec kyndk inc keyidk cli rts addrh zeiger auf ak.t. zeichen im video-ram mehrfach benutzte editorvariable 6845 vdc: daten-reg. zeichenzähler für pgm tastenbefehl tastatur-puffer in ac, pufferinhalt verschieben indek programmierbare befehle segment funktionstasten setzen addrl akt. pgm tastenpuffer segment zurücksetzen zeichenzähler für pgm tastenbefahl indek programmierbare befehle ===> tastatur-puffer in ac, pufferinhalt verschieben <=== , e I 14 e 114 e I 14 eilt ell9 e llc ac ab 03 a2 00 bd ac 03 9d ab 03 lp3 lpl 0762 ellf eb 0763 el20 e' dl 0764 el22 do f el24 el26 el27 el28 c6 dl el el el29 ===> input <=== 0772 el29 loop4 loop H , , el29 el2c el2e el30 el33 el36 el38 el3a el3c el3d el3f e 142 eih e 148 elh ehe ehe e2 ao oa a5 d4 Be 00 db Bd 01 db a5 d I 05 d6 fo fa 78 a9 20 Be 00 db Bd 01 db 20 fe eo c9 Od do dd 85 do 20 H e5 ldy keyd ldk 1$00 lda keyd+i,k sta keyd,k ink CPK ndk bne lpl dec ndk tya cli rts jsr prt ldy I$Oa lda config sty vdc+adreg sta vdc+dareg loop3a lda ndk ora kyndk beq loop3a sei lda 1$20 sty vdc+adreg sta vdc+dareg jsr lp2 cmp l$0d bne loop' sta crsw jsr fndend tastaturpuffer 110 bytesl tastaturpuffer +I {10 bytes} tastaturpuffer 110 bytesl anzahl bytes im tastaturpuffet anzahl bytes im tastaturpuffer zeichen aus ac auf bildschirm cursor type I char. vor blinken 6845 vdc: adress-reg vdc: daten-reg. anzahl bytes im tastaturpuffer Zeichenzähler für pgm tastenbefehl 6845 vdc: adress-reg vdc: daten-reg. zeichen aus tastenpuffer in ac input flag 'er' bei bs-eingabe cursor an zeilenende lese, k}

282 610/710 os-editor! hard+soft ass/reass..... seite 0017 zeile adr. obj.-code source-code B 0799 OBOO OBO! OB02 OB03 OB04 OB05 OB06 OB07 OBOB el51 el54 e157 el59 e!5b e!5d e15f el61 e!63 el65 el67 el6a el6c el6e e170 e 172 eih e 176 el79 OB09 e I 79 Be 9B e5 a9 oo B5 d2 a4 de a5 cf c5 ca 90 Of a4 ce cd 9B 03 do 04 c4 d5 fo 02 bo II B5 ca B4 cb 4c Bb el lp70 lp75 lpbo stx lintmp jsr fistrt lda lt$00 sta qtsw ldy sclf lda lsxp bmi lpbo cmp tblx bcc lpbo ldy lstp cmp lintmp bne lp70 cpy indx beq lp75 bcs clp2 sta tblx sty pntr jmp lop5 puffer für bs-zeilen lt cursor auf zeilenanfang flag für anführungszeichen-modus linker rand bildschirm letzte position lzeilel cursor zeile OB!O el79 ===> char von bs holen (get o. inputl <=== OBI! OB12 OB13 OB14 OB15 OB16 OBI7 OB!B OB!9 OB20 OB21 OB22 OB23 OB24 el79 e 179 e 17a e!tb e 17c e 17d el7f eibi e!b3 e!b5 e!b 7 e!b9 e!bb e!bb 9B 48 Ba 4B a5 do fo ab 10 OB a9 00 B5 do a9 Od do 39 loop5 clp2 tya pha txa pha lda crsw beq loop3 bpl lop5 lda lt$00 sta crsw lda l$0d bne clp el8b ===> char von bs holen (getl <=== OB26 e!bb OB27 OB2B OB29 OB OB32 OB OB35 OB36 OB37 OB38 OB OB41 OB e!bb el8e e 191 e193 el95 el97 el99 el9b el9d el9f e Ia I e!a3 ela5 e Ia 7 elaa elac elaf 20 cd eo e2 B5 db 29 3f 06 db 24 db BO a6 d2 do cd el a4 ca cc 9B Oa 08H elbl ' cb OBH e!b3 c4 d5 OB46 elb OB47 elb7 66 do lop5 lop54 lop52 lop53 jsr stupt jsr get Ich sta adata and l$3f asl adata bit adata bpl lop54 ora 1$80 bcc lop52 ldx qtsw bne lop53 bvs lop53 ora lt$40 jsr qtswc ldy tblx cpy lintmp bcc clpoo ldy pntr cpy indx bcc clpoo ror crsw screen edit Startposition puffer für bs-zeilen lt position letztes zeichen in zeile cursor zeile cursor spalte char von bs holen lgetl flag er bei bs-eingabe char von bs holen (get} flag er bei bs-eingabe bs-zeiger auf cursor-zeile zeichen von cursorpos. in ac akt. ausgabezeichen akt. ausgabezeichen akt. ausgabezeichen flag für anführungszeichen-modus quote-mode-flag invertieren cursor zeile puffer für bs-zeilen # cursor spalte position letztes zeichen in zeile flag er bei bs-eingabe

283 610/710 os-editor! hard+soft ass/reass... seite 0018 zeile adr. obj.-code source-code 0848 elb elbb e elbe c9 de 0851 e!co do e!c2 a9 ff 0853 elc4 85 db 0854 elc e lc7 elc8 elc9 elca elcc aa 68 ab a5 db e!cd 0861 e!cd clpoo clp! clp7 bmi clp! jsr nxtchr cmp l$de bne clp 7 lda l$ff sta adata pla tax pla tay lda ada ta rts 0862 e!cd ===> quote-mode-flag invertieren <=== 0863 e!cd 0864 e!cd c9 22 qtswc cmp 1$ elcf do Oe bne qtswl 0866 e!d! a5 d3 lda insrt e!d3 do 06 bne qtswi 0868 e!d5 a5 d2 lda qtsw 0869 eld eor 1$0 I 0870 e!d9 85 d2 sta qtsw 0871 e!db 0872 e!db 0813 e!db ===> in ac <=== e!db eldb e!dd e!de elde elde elde a elde elel ele3 ele5 ele7 ele9 eleb elee elfo 2c a6 d3 fo 02 c6 d3 2c 9a nxt3 nvs nvsa 0890 elf! 20 e4 e elf4 a2 oo Z elf6 elf8 elf9 elfc elfe e200 e203 e206 e206 e206 ez06 e206 e208 e20b 86 d lc e2 co H do d e4 20 2e e6 a5 db nvs 1 nvs2 loop2 qtswi lda 1$22 qtswl rts ===> zeichen auf bs ausgeben <=== bit rvs bpl nvs ora 1$80 ldx insrt beq nvsa dec insrt bit insflg bpl nvs I pha jsr insert ldx 1$00 stx insrt pla jsr dspp cpy 1$45 bne nvs2 jsr bell jsr movchr ===> ende Zeichenausgabe <=== 8d da eo lda adata sta 1stehr jsr movcur cursor I pos. rechts akt. ausgabezeichen akt. ausgabezeichen insert flag in ac flag für anführungszeichen-modus flag für anführungszeichen-modus revers flag insert flag insert flag auto insert flag zeichen einfügen 1$941 insert flag char in ac an cursorposition glocke anschlagen 1$07 oder $871 test zeilenende, zeile einfügen akt. ausgabezeichen letztes gedrucktes zeichen cursor-pos. in reg. 14/15 vdc 6851

284 610/710 os-editorl hard+soft ass/reass..... seite 0019 zeile adr. obj.-code source-code 0906 e20e 0907 e20f 0908 e e e e e217 e218 e e21a 0916 e21a 68 ab a5 d3 fo 02 H 68 aa d2 lop2 pla tay lda insrt beq lopz lsr qtsw pla tax pla rts 0917 e21a ===> space an Cursorposition <=== 0918 e21a 0919 e21a a9 20 doblnk lda #$ e21c 0921 e21c 0922 e21c ===> char in ac an cursorposition <=== 0923 e21c 0924 e21c a4 cb dspp ldy pntr 0925 e21e 20 7d e2 jsr pagset 0926 e cb sta (pntl,y 0927 e e e e e227 jsr pagres rts 0931 e227 ===> bs-zeile löschen <=== 0932 e e227 a4 de clrln ldy sclf 0934 e es jsr clrbit 0935 e22c 0936 e22d 0937 e22e 0938 e e e232 e233 e235 e238 e23a e23c e23d e23f Ba 48 as cb e240 aa 0949 e24 I e e242 cb 84 cb 20 Ia ez c4 df do f cb 68 clrprt txa pha lda pntr pha dey clrio iny sty pntr jsr doblnk cpy scrt bne clrio pla sta pntr pla tax rts 0952 e242 ===> zeichen von cursorpos. in ac <=== insert flag flag für anführungszeichen-modus cursor spalte segment 15 setzen addrl zeiger auf akt. zeichen im video-ram segment zurücksetzen linker rand bildschirm akt. zeile als l.doppelzeile eintragen cursor spalte cursor spalte space an cursorposition rechter rand bildschirm cursor spalte 0953 e e242 a4 cb getlch ldy pntr cursor spalte 0955 ezh 0956 e2h 0957 e2h ===> zeichen von zeile in ac, spalte=yr <=== 0958 e2h 0959 e d e e247 bl cb getych jsr pagset lda lpntl,y segment 15 setzen addrl zeiger auf akt. zeichen im video-ram

285 610/710 os-editor1 hard+soft ass/reass.... seite 0020 zeile adr. obj.-code source-code 0961 e2h 0962 e24c 0963 e24d e24d e24d e24d 0967 e24d 0968 e2h 0969 e e2 60 jsr pagres rts ===> umsch. text l$0e) - graphik l$8el <=== ao 10 bo 02 ctext ldy lt$10 bcs crtset e251 e251 ===> textmodus setzen <=== 0972 e e251 ao oo 0974 e e253 txcrt ldy lt$ e253 ===> crt-umschaltung, yr = text/grafik <=== 0977 e e e e e25a 0982 e25c 0983 e25f 0984 e e cc ad 06 de 29 ef 05 cc 8d 06 de 60 crtset sty grmode lda tri 1 creg and tt$ef ora grmode sta tri1 creg rts 0986 e260 ===> crt-controller programmieren <=== e e e e e e e26b 0994 e26d 0995 e26f 0996 e e e e e27a 1001 e21c 1002 e27d 1003 e21d ao 11 2c 02 df ao ao 35 a2 11 b9 6f ec Be 00 db Bd 01 d8 88 ca 10 f3 60 crtint ldy 1$11 bit tri2+pc bmi crt10 ldy 1$23 bvs crt10 ldy 1$35 crt10 ldx tt$11 crt20 lda atext,y stx vdc+adreg sta vdc dareg dey dex bpl crt20 rts 1004 e27d ===> segment 15 setzen <=== 1005 e27d 1006 e27d e27e a9 3f 1008 e280 do e e282 pagset pha lda ll$3f bne pagsub 1011 e282 ===> segmentfunktionstastensetzen <=== 1012 e e e e e pagst2 pha ad lda keyseg 1017 e286 ===> segment I# in acl setzen <=== 1018 e286 segment zurücksetzen crt-umschaltung, yr text/grafik flag für grafik/text-modus 6525 triport 1: control reg. flag für grafikltext-modus 6525 triport 1: control reg triport 2: port reg. c codetab. 1 für bs-crt vdc: adress-reg vdc: daten-reg. segment II in acl setzen ram-segment II für funktionstasten

286 610/710 os-editorl hard+soft ass/reass... seite 0021 zeile adr. obj.-code source-code 1019 e pagsub pha 1020 e287 a5 01 lda i indirection register 1021 e Bd ao sta pagsav zeitweise ram page 1022 e2bc 68 pla 1023 e2bd sta i indirection register 1024 e28f 68 pla 1025 e rts 1026 e e e291 segment zurücksetzen <=== ===> 1029 e e pagres pha 1031 e292 ad ao 03 lda pagsav zeitweise ram page 1032 e sta i indirection register 1033 e pla 1034 e29b 60 rts 1035 e e e299 ===> zeichen aus ac auf bildschirm <=== 1038 e e prt pha 1040 e29a c9 ff cmp l$ff 1041 e29c do 02 bne prt e29e a9 de lda l$de 1043 e2a0 85 db prtio sta adata akt. ausgabezeichen loh e2a2 Ba txa 1045 e2a3 48 pha 1046 e2a4 98 tya loh e2a5 48 pha 1048 e2a6 a9 00 lda 1$ e2a8 85 do sta crsw flag er bei bs-eingabe 1050 e2aa a4 cb ldy pntr cursor spalte 1051 e2ac a5 db lda adata akt. ausgabezeichen 1052 e2ae 29 7f and l$1f 1053 e2b0 c9 20 cmp 1$ e2b2 90 lb bcc ntcn Steuerzeichenbehandlung 1055 e2b4 ae ldx Istehr letztes gedrucktes zeichen 1056 e2b7 eo lb cpx l$1b 1057 e2b9 do 06 bne njtio 1058 e2bb e6 jsr sequen aufruf user esc-funktionen lind.-vektorl 1059 e2be 4c 03 e3 jmp getaut ende Zeichenausgabe 1060 e2c e2c e2cl 29 3f njtio and #$3f 1063 e2c3 24 db njt20 bit adata akt. ausgabezeichen 1064 e2c bpl njt e2c ora 1$ e2c9 20 Cd e I njt30 jsr qtswc quote-mode-flag""" invertieren e2cc 4c de el jmp nxt3 zeichen auf bs ausgeben 1068 e2cf 1069 e2cf 1070 e2cf ===> Steuerzeichenbehandlung <=== 1071 ezcf 1072 e2cf c9 Od ntcn cmp #$0d 1073 e2d1 fo 29 beq ntcn20 ctr-adr. auf stapel, zeichenausg. loh e2d3 c9 cmp #$ e2d5 fo 25 beq ntcn20 ctr-adr. auf stapel, zeichenausg. "

287 610/710 os-editorf hard+soft asslreass... seite 0022 zeile adr. obj.-code source-code 1076 e2d e2d e2db 1079 e2dd 1080 e2df 1081 e2ef 1082 e2e e2e e2e e2ea 1086 e2ec 1087 e2ee 1088 e2f e2f e2f e2f e2f e2fa 1094 e2fc 1095 e2fc c9 lb do II 24 db 30 Od a5 d2 05 d3 fo I 1 20 a2 e3 85 db fo 10 c9 03 fo Oe a4 d3 do 04 a4 d2 fo do c1 cmp 1$fb bne ntcn1 bit adata bmi ntcnl lda qtsw ora insrt beq ntcn20 jsr toqm sta adata beq ntcn20 ntcn1 cmp 1$03 beq ntcn20 ldy insrt bne ntcnio ldy qtsw beq ntcn20 ntcn 10 ora 1$80 bne njt20 akt. ausgabezeichen flag für anführungszeichen-modus insert flag ctr-adr. auf stapel, zeichenausg. 'inst- quote- rvs -mode aus akt. ausgabezeichen ctr-adr. auf stapel, zeichenausg. ctr-adr. auf stapel, zeichenausg. insert flag flag für anführungszeichen-modus ctr-adr. auf stapel, zeichenausg e2fc ===> ctr-adr. auf stapel, zeichenausg. <=== 1097 e2fc 1098 e2fc a5 db ntcn20 lda adata akt. ausgabezeichen Oa asl a aa tax e3 jsr ctdsp 4c 06 e2 getaut jmp loop "10 "" "12 "13 "" "15 "16 "17 "18 " e2fe e2ff e300 e303 e306 e306 e306 e306 e306 e309 e30a e30d e30e e310 e3 II e311 e3 II e3 14 e314 e314 e3 14 e3 14 e316 e319 e31c e31e e31f e321 e322 e323 e323 e323 ===> ctr-adr. auf stapel, ac =ausgabez. <=== bd e5 eb u bd e4 eb u a5 db 60 6c e e323 a6 dc 1133 e325 e4 ca ctdsp lda ctable+l,x pha lda ctable,x pha lda ada ta rts cuser jmp lctlvecl ===> cursor unten I$ II I - oben I $91 I < bo Od cdnup 20 7a e3 20 f5 e4 cdnio bo Cf 18 cdrts 60 bcs cup jsr nxln jsr getbit bcs cdrts sec ror lsxp clc rts ===> cursor nach oben <=== cup ldx sctop cpx tblx ctr-adr. auf stapel, ac =ausgabez. ende Zeichenausgabe adress-tab. der control-routinen adress-tab. der control-routinen akt. ausgabezeichen addrl unbenuzte 'ctrl tasten-vector cursor nach oben test bs-ende, cursor nächste zeile test auf doppelzeile lakt. zeilel letzte position lzeilel oberste zeile bildschirm (0-251 cursor zeile

288 610/710 os-editor1 hard+soft ass/reass.... seite 0023 zeile adr. obj.-code source-code 1134 e327 bo Of bcs critgo 113S e e3 cup10 jsr cdn e32c c6 ca dec tblx cursor zeile 1137 e32e 4c Cd eo jmp stupt bs-zeiger auf cursor-zeile 1138 e e e331 ===> cursor rechts l$1d} - links l$9d} <=== 1H1 e331 11H e331 bo 06 crtlf bcs cleft cursor nach links 1H3 e H es jsr nxtchr cursor 1 pos. rechts 11H e336 bo e1 bcs cdn10 11H e critgo rts 11H e339 11H e e339 ===> cursor nach links <=== 1H9 e339 11SO e es cleft jsr bakchr cursor 1 position nach links 11S1 e33c bo fa bcs critgo 11S2 e33e do e1 bne cdrts 11S3 eho e6 ca inc tblx cursor zeile 11S4 e342 do es bne cup e3h 11S6 e3h 11S7 e3h ===> revers on 1$12} - off 1$92} <=== 11S8 e3h 11S9 e3h u 80 rvsf eor #$ e346 8d sta rvs revers flag 1161 eh9 60 rts 1162 e34a 1163 e3h 1164 e3h ===> cursor home 1$13} - bs clear 1$93} <=== 116S e3h 1166 e3h homclr bcc homes cursor home e34c 4C b3 eo jmp clsr bildschirm löschen 1168 e3h 1169 e34f 1170 e3h ===> cursor home <=== e3h 1172 e3h cd homes cmp 1stehr letztes gedrucktes zeichen 1173 e3s2 do 03 bne hm110 11H e c7 e9 jsr sreset bs-fenster auf volle grösse lhome-home} 111S e357 4c c1 eo hm110 jmp nxtd home-position setzen 1176 e35a 1177 e35a 1178 e35a ===> tab 1$09} - setzen/löschen 1$89} <=== 1119 e35a 1180 e35a a4 cb tabit ldy pntr cursor spalte 1181 e35c bo 12 bcs tabtog tabulator setzen/löschen 1182 e35e 1183 e35e 1184 e35e ===> tabulator löschen <=== 1185 e35e 1186 e35e c4 df tab I cpy scrt rechter rand bildschirm e OS bcc tab e362 a5 df lda scrt rechter rand bildschirm 1189 e cb sta pntr cursor spalte 1190 e rts

289 610/710 os-editor! hard+soft ass/reass..... seite 0024 zeile adr. obj.-code source-code 1191 e e e e368 1!95 e36b 1196 e36d 1197 e36f 1198 eho 1199 eho c8 20 5a e9 fo f! 84 cb 60 tab2 iny jsr gettab beq tab! sty pntr rts 1200 e370 ===> tabulator setzen/löschen <=== 1201 e e e eh eh eha 1201 e31a 20 5a e9 4d 9c 03 9d a I tabtog jsr gettab eor bitmsk sta tab,x rts tabulator holen tabulator löschen cursor spalte 1208 e31a ===> test bs-ende, cursor nächste zeile <=== 1209 eha 1210 e31a 1211 ehe 1212 ehe 1213 e e e e e e38b 1219 e38e 1220 e38f 1221 e e e394 a6 ca e4 dd 90 Of 2C 9b a5 dc 85 ca bo f6 e3 18 e6 ca 4c cd eo nxln ldx tblx cpx scbot bcc nxln! bit scrdis bpl doscrl lda sctop sta tblx bcs nowhop doscrl jsr scrup clc nxln! inc tblx nowhop jmp stupt 1224 e394 ===> carr~age return ($0d oder $8dl <=== 1225 e e e e H e5 e e e39b a4 de 1230 e39d 84 cb 1231 e39f 20 Ta e e3a e3a2 nxt! jsr fndend inx jsr clrbit ldy sclf sty pntr jsr nxln 1234 e3a2 ===> 'inst- quote- rvs -mode aus <=== 1235 e3a e3a e3a e3a e3a e3ab 124 I e3ae 1242 e3b e3b e3b e3b4 a d3 8d d2 cd 9f 03 do 03 Bd 18 da toqm lda 1$00 sta insrt sta rvs sta qtsw cmp bellmd bne toqmx sta sid+volume toqmx rts 1246 e3b4 ===> zeilen verschieben <=== tabulator holen bit mask/funkt.tasten temporär tabstop flags (max.!obyt/80bitl cursor zeile unterste zeile bildschirm (0-251 scroll disable flag oberste zeile bildschirm (0-251 cursor zeile nach oben scrollen cursor zeile bs-zeiger auf cursor-zeile cursor an zeilenende lese, kl akt. zeile als!.doppelzeile eintragen linker rand bildschirm cursor spalte test bs-ende, cursor nächste zeile insert flag revers flag flag für anführungszeichen-modus flag für glocke am zeilenende lautstärke I schalter tief-, band-, hochpass

290 610/710 os-editorl hard+soft ass/reass..... seite 0025 zeile adr. obj.-code source-code e3b4 e3b4 e3b7 e3b9 e3bc e3be e3cl e3c e3c e3c e3c e3ca 1259 e3cd 1260 e3cd bd b2 eb 85 c4 bd cb eb movlin lda ldtb2,x sta sedsal lda ldtb I, X 85 c5 sta sedsal+l 20 7d e2 jsr pagset bl c4 movlio lda (sedsal),y 91 c8 sta (pntj,y c4 df c8 90 f7 4c 91 e2 cpy scrt iny bcc movlio jmp pagres 1261 e3cd ===> nach unten scrollen <=== 1262 e3cd 1263 e3cd a6 cf scrdwn ldx lsxp 1264 e3cf bmi scd e3dl e4 ca 1266 e3d e3d e3d e3d e3dc 1271 e3de e3e e3e e3e e3e e3e e3ea 1278 e3eb e3ee 1280 e3f e3f e3f e3f6 e6 cf a6 dd 20 cf eo a4 de e4 ca fo Oe Cl 20 f7 e4 e e5 Cl 20 b4 e3 bo e e2 4c 12 e5 scd30 scdio scd20 cpx tblx bcc scd30 inc lsxp ldx scbot jsr scrset ldy sclf cpx tblx beq scd20 dex jsr getbtl inx jsr putbtl dex jsr movlin bcs scdio jsr clrln jmp setbi t 1284 e3f6 ===> nach oben scrollen <=== 1285 e3f e3f6 a6 dc scrup ldx sctop I e3f8 e3f9 e3fc e3fe e400 e402 e404 e405 e8 20 f7 e4 90 Oa e4 dd 90 f6 a6 dc e e5 scruoo inx jsr getbtl bcc scrul5 cpx scbot bcc scruoo ldx sctop inx jsr clrbi t IZ I 1302 e408 e40a e40c e40e e410 e4!2 e4 14 e416 c6 ca 24 Cf C6 Cf a6 dc e4 da bo 02 c6 da scrul5 dec tblx bit lsxp bmi scru20 dec lsxp scru20 ldx sctop cpx sedt2 bcs scru30 dec sedt2 tab. anfangs-addrl bs-zeilen addrl scroll-zeiger start tab. anfangs-addrh der bs-zeilen addrh scroll-zeiger start segment 15 setzen addrl scroll-zeiger start addrl zeiger auf akt. zeichen im video-ram rechter rand bildschirm segment zurücksetzen letzte position (Zeile) cursor zeile letzte position (zeile) unterste zeile bildschirm (0-25) bs-zeiger setzen,zeilenoffset=xr linker rand bildschirm cursor zeile test auf doppelzeile (xr zeilen verschieben bs-zeile löschen zeile) oberste zeile bildschirm (0-25) test auf doppelzeile (xr = zeilej unterste zeile bildschirm (0-25) oberste zeile bildschirm (0-25) akt. zeile als l.doppelzeile eintragen cursor zeile letzte position (zeilej letzte position (Zeile) oberste zeile bildschirm (0-25) mehrfach benutzte editorvariable mehrfach benutzte editorvariable

291 610/710 os-editorl hard+soft ass/reass.... seite 0026 zeile adr. obj.-code source-code 1303 e d e e41b a6 dc 1305 e41d 20 f7 e e420 OB 1307 e e e e e427 2c 9e e42a 30 dc 1312 e42c e42d 1314 e42d 1315 e42d 1316 e e e cf eo a4 de e4 dd bo Oe 1319 e436 eb 1320 e f7 e e4ja ca 1322 e43b e5 scru30 jsr scrio ldx sctop jsr getbtl php jsr clrbit plp bcc scruio bit logscr bmi scru15 scruio rts scrio jsr scrset ldy sclf cpx scbot bcs scr40 inx jsr getbtl dex jsr putbtl inx jsr movlin bcs scrio jsr clrln ldx l$ff ldy Sfe jsr getlin and,$20 bne scr e4je e4jf eh2 eh4 e447 eh9 ehb ehe e450 eb 20 b4 e3 bo e e2 a2 ff ao fe e do Od scr40 I 332 e e e452 ===> langsam scrollen <=== 1335 e e452 ea scr60 nop e453 ea nop 1338 e454 ca dex 1339 e455 do fb bne scr e dey 1341 e458 do f8 bne scr e45a 84 dl scr70 sty ndx 1343 e45c 4c f7 e8 scr75 jmp keyxt e45f 1345 e45f scrbo e45f e461 e463 e466 e468 e46a e46d e46f eh I e473 e475 e478 e4 7a ehe a2 f7 ao ff e do f e fo f9 ao oo a2 oo zo 80 e4 29 3f 49 3f fo f3 scr90 scr95 ldx sh ldy l$ff jsr getlin and 1$10 bne scr75 jsr getlin and #$10 beq scr90 ldy soo ldx 1$00 jsr getlin and l$3f eor #$3f beq scr95 oberste zeile bildschirm (0-251 test auf doppelzeile (xr = zeilel akt. zeile als l.doppelzeile eintragen logical/physical scroll flag bs-zeiger setzen,zeilenoffset=xr linker rand bildschirm unterste zeile bildschirm (0-251 test auf doppelzeile (xr zeilen verschieben bs-zeile löschen zeilel triport 2 setzen, tastenabfrage langsam scrollen langsam scrollen anzahl bytes im tastaturpuffer triport 2 setzen, tastenabfrage triport 2 setzen. tastenabfrage triport 2 setzen, tastenabfrage

292 610/710 os-editor1 hard+soft ass/reass seite 0027 zeile adr. obj.-code source-code 1360 e4 7e do da bne scr e e e480 ===> triport 2 setzen, tastenabfrage <=== 1364 e e480 OB getlin php 1366 e481 1B sei 1367 e482 Be 00 df stx tri2+pa 6525 triport 2: port reg. a 136B e485 Be 01 df sty tri2+pb 6525 triport 2: port reg. b 1369 e48b 20 1e e9 jsr getkey tastaturabfrage Über triport e48b 2B plp 1371 e48c 60 rts 1372 e48d 1373 e48d.end 1374 e48d.lib editor2

293 610/710 os-editor2 hard soft ass/reass.... seite 0028 zeile adr. obj.-code source-code 1376 eud 1377 e4bd ===> glocke anschlagen ($07 oder $871 <=== 1378 eud 1379 e4bd ad 9f 03 bell 1380 e490 do e492 a9 Of 1382 e494 Bd 18 da 1383 e497 ao e499 Be 05 da 1385 e49c a9 Oa 1386 e49e Bd 06 da 13B e4al e4a3 a9 30 Bd 01 da lda bellmd bne bellgo lda #$0f sta sid volume ldy #$00 sty sid oscl atkdcy oszi lda #$0a sta sid oscl susrel oszi lda #$30 sta sid oscl freqhi flag für glocke am zeilenende Lautstärke I schalter tief-, band-, hochpass ' 65BI sid: attack/decay-time 65BI sid: sustain/release time 65BI sid: addrh frequenz oszi 13B e4a6 ehb a9 60 Bd Of da lda #$60 sta sid osc3 freqhi 3 65BI sid: addrh frequenz oszi 139' e4ab ehd e4b0 a2 15 Be 04 da ea ldx #$15 stx sid oscl oscctl bellio nop 65B1 sid: steuerreg. oszi e4bl ea nop 1395 e4b2 cb iny 1396 e4b3 do fb bne bellio 1397 e4b5 ca dex 139B e4b6 Be 04 da stx sid oscl oscctl 65BI sid: steuerreg. oszi e4b9 60 bellgo rts e4ba 1401 e4ba 1402 e4ba ===> löscht letzte eingegebene zahl "ce <=== 1403 e4ba B '" ' e4ba e4bc e4bd e4bf e4c0 e4c3 e4c5 e4c7 e4c9 e4cb e4cc e4cf e4dl e4d3 e4d5 e4d7 e4db e4db e4dd e4df e4el e4e3 a5 cb 4B a4 cb BB 20 H e2 c9 2b fo 04 c9 2d do OB BB 20 H e2 c9 05 do Ia c9 05 do 04 BB 20 H e2 c9 2e 90 Oe c9 2f fo Oa c9 Ja 1426 e4e5 bo e4e7 20 bo e5 142B e4ea 4c bd e4 ce ceto cetl cet2 cet3 lda pntr pha ldy pntr dey jsr getych cmp #$2b beq cetl cmp #$2d bne cet2 dey jsr getych cmp #$05 bne cet4 cmp #$05 bne cet3 dey jsr getych cmp #$2e bcc cet4 cmp #$2f beq cet' cmp #$3a bcs cet4 jsr deleet jmp ceto cursor spalte cursor spalte zeichen von zeile in ac, spalte=yr zeichen von zeile in ac, spalte=yr zeichen von zeile in ac, spalte=yr zeichen löschen ($141

294 610/710 os-editor2 hard+soft ass/reass..... seite 0029 zeile adr. obj.-code source-code 1429 e4ed 1430 e4ed 1431 e4ed e4ee es cb 1433 e4f0 do c e4f2 4c bo es 1435 eh ehs cet4 pla cmp pntr bne bellgo jmp deleet cursor spalte 1437 e4fs ===> test auf doppelzeile lakt. zeilel <=== 1438 ehs 1439 e4fs a6 ca getbit ldx tblx IHO eh eh e4f7 ===> test auf doppelzeile lxr 1443 eh eh7 20 le es getbtl jsr bitpos 144S eha 3S e ehe c e4fe 4c Oe es 1448 eso esoi and bitabl,x cmp 1$01 jmp bitout zeichen löschen 1$141 cursor zeile zeile} <=== 14SO esoi ===> akt. zeile als doppelzeile eintragen <=== 14S1 esoi 14S2 e501 a6 ca 14S3 es03 bo Od 1454 es OS 145S e e50s 14S7 e es OS 14S9 e508 Uff 1460 esoa 3S e esoc 9S e esoe ae 9c esii e512 IUS e es12 2c 9b es1s 70 eo 1468 es17 20 le es IHS lud es1a es1c esie es1e es1e es1e esie es21 es22 es24 es2s &528 es29 es2c es2d putbit ldx tblx putbtl bcs setbit flag für doppelzeile holen, zeiger für bit-tab. setzen tabelle basic-doppelzeilen 14 bytel cursor zeile ===> akt. zeile als 1.doppelzeile eintragen <=== 20 le es clrbit jsr bitpos IS e2 do ee eor l$ff and bitabl,x bitsav sta bitabl,x bitout ldx bitmsk rts setbit bit scrdis bvs getbtl jsr bitpos ora bi tabl, x bne bitsav flag für doppelzeile holen, zeiger für bit-tab. setzen taballe basic-doppelzeilen 14 bytel taballe basic-doppelzeilen 14 bytel bit mask/funkt.tasten temporär scroll disable flag test auf doppelzeile lxr = zeilel flag für doppelzeile holen, zeiger für bit-tab. setzen tabelle basic-doppelzeilen 14 bytel ===> flag für doppelzeile holen, zeiger für bit-tab. setzen <=== Be 9c 03 Ba aa bd 67 ec u ad 9c 03 4a 4a bitpos stx bitmsk txa and 1$07 tax lda keyend,x pha lda bitmsk lsr a lsr a bit mask/funkt.tasten temporär bit-tabelle für zeilen-link bit mask/funkt.tasten temporär

295 610/710 os-editor2 hard+soft ass/reass.... seite 0030 zeile adr. obj.-code source-code e52e e52f e530 e531 e532 e532 4a aa lsr a tax pla rts 1490 e532 ===> cursor an zeilenanfang lese. j) <=== 149 I e e e e e536 a4 de 84 cb fndfst ldy sclf sty pntr 1496 e536 ===> cursor auf zeilenanfang <=== 1497 e e f5 e e e53b c6 ca 1501 e53d 10 f e53f e6 ca fistrt jsr getbit bcc fndo dec tblx bpl fistrt inc tblx 1503 e541 4c cd eo fndo jmp stupt 1504 e5h 1505 e5h " ' e5h e5h e5h e546 e548 e54a e54c e5h e551 e553 e556 e558 e55a e55c e55f e56 I e564 e566 e568 e56a e56c e56f e511 e e e574 ===> cursor an zeilenende lese, k) <=== a5 ca c5 dd bo 09 e6 ca 20 f5 e4 bo f3 c6 ca 20 cd eo a4 df 84 cb e5 bo e2 c9 20 do 09 c4 de do fo 20 f5 e4 bo eb 84 d5 60 fndend lda tblx cmp scbot bcs eloupp inc tblx jsr getbit bcs fndend dec tblx eloupp jsr stupt ldy scrt sty pntr bpl eloup2 eloupl jsr bakchr bcs endbye eloup2 jsr getlch cmp #$20 bne endbye cpy sclf bne eloupl jsr getbi t bcs eloupl endbye sty indx rts 1532 e574 ===> cursor I pos. rechts <=== I 533 e e5h e575 e517 e579 e57b e57e e a4 cb c4 df a e3 a4 de e nxtchr pha ldy pntr cpy scrt bcc bumpnt jsr nxln ldy sclf dey sec linker rand bildschirm cursor spalte test auf doppelzeile lakt. zeilel cursor zeile cursor auf zeilenanfang cursor zeile bs-zeiger auf cursor-zeile cursor zeile unterste zeile bildschirm cursor zeile test auf doppelzeile lakt. zeile) cursor an zeilenende lese, k) cursor zeile bs-zeiger auf cursor-zeile rechter rand bildschirm cursor spalte cursor I pasitian nach links zeichen von cursarpos. in ac linker rand bildschirm test auf dappelzeile lakt. zeilel pasitian letztes zeichen in zeile cursor spalte rechter rand bildschirm test bs-ende, cursor nächste zeile linker rand bildschirm

296 610/710 os-editor2 hard+soft ass/reass.... seite 0031 zeile adr. obj.-code source-code 1542 e e583 15H e585 15U e5b e & e e e e e58a 1553 e5bc 1554 e58e 1555 e e e e e & I e59c 1562 e59d 1563 e59f 1564 e5a I 1565 e5a e5a e5a e5a5 cb 84 cb bumpnt iny sty pntr pla rts ===> cursor 1 position nach links <=== a4 cb c4 de bo Of a4 dc c4 ca bo Oe c6 ca cd eo 68 a4 df 84 cb c4 df 18 bakchr ldy pntr dey bmi bakotl cpy sclf bcs bakout bakotl ldy sctop cpy tblx bcs bakot2 dec tblx pha jsr stupt pla ldy scrt bakout sty pntr cpy scrt clc bakot2 rts cursor spalte cursor spalte linker rand bildschirm oberste zeile bildschirm cursor zeile cursor zeile 1569 e5a5 ===> cursor-zeile und -spalte retten <=== 1510 e5a e5a e5a e5a e5ab 1575 e5ad 1576 e5ae 1577 e5ae a4 cb 84 d9 a6 ca 86 da 60 savpos ldy pntr sty sedt1 ldx tblx stx sedt2 rts bs-zeiger auf cursor-zeile rechter rand bildschirm cursor spalte rechter rand bildschirm 1578 e5ae ===> zeichenlöschen 1$141, einfügen 1$94} <=== 1579 e5ae 1580 e5ae bo I e5b e5b0 deiins bcs insert 1583 e5b0 ===> zeichen löschen 1$141 <=== e5b0 e5b0 e5b3 e5b6 e5b8 e5ba e5bc e5be e5bf e5c2 e5c4 e5c 7 e5c9 e5cb e5cd e5cf e3 20 a5 e5 bo Of c4 df a6 ca e8 20 f7 e4 bo Oe 20 Ia e2 a5 d9 85 cb a5 da 85 ca 4c cd eo deleet jsr cleft jsr savpos bcs deiout deloop cpy scrt bcc delopl ldx tblx inx jsr getbt1 bcs delopl jsr doblnk delout lda sedt1 sta pntr lda sedt2 s ta tblx jmp stupt cursor spalte mehrfach benutzte editorvariable cursor zeile mehrfach benutzte editorvariable zeichen einfügen 1$941 cursor nach links cursor-zeile und -spalte retten rechter rand bildschirm cursor zeile test auf doppelzeile lxr zeilel space an Cursorposition mehrfach benutzte editorvariable cursor spalte mehrfach benutzte editorvariable cursor zeile bs-zeiger auf cursor-zeile

297 610/710 os-editor2 hard+soft ass/reass.... seite 0032 zeile adr. obj.-code source-code 1600 e5d e5d e5d2 20 H e5 delop 1 jsr nxtchr cursor I pos. rechts 1603 e5d e2 jsr getlch zeichen von cursorpos. in IC 1604 e5d e5 jsr bakchr cursor I posi tion nach links 1605 e5db 20 lc e2 jsr dspp char in ac an Cursorposition 1606 e5de e5 jsr nxtchr cursor I pos. rechts e5el 4C b8 e5 jmp deloop 1608 e5e e5e e5e4 ===> zeichen einfügen 1$94) <=== 1611 e5e e5e4 20 a5 e5 insert jsr savpos cursor-zeile und -spalte retten 1613 e5e7 20 e5 jsr fndend cursor an zeilenende lese, I<) " 1614 e5ea e4 da cpx sedt2 mehrfach benutzte editorvariable 1615 e5ec do 02 bne insio 1616 e5ee c4 d9 cpy sedtl mehrfach benutzte editorvariable 1617 e5f insio bcc ins e5f2 20 2e e6 jsr movchr test zeilenende, zeile einfügen 1619 e5f5 bo 22 bcs insout 1620 e5f e5 ins30 jsr bakchr cursor 1 position nach links 1621 e5fa e2 jsr getlch zeichen von cursorpos. in IC 1622 e5fd 20 H e5 jsr nxtchr cursor 1 pos. rechts 1623 e lc e2 jsr dspp char in ac an Cursorposition 1624 e e5 jsr bakchr cursor I position nach links 1625 e606 a6 ca ldx tblx cursor zeile 1626 e60b e4 da cpx sedt2 mehrfach benutzte editorvariable 1627 e60a do eb bne ins e60c c4 d9 cpy sedt 1 mehrfach benutzte editorvariable 1629 e60e do e7 bne ins e II e2 jsr doblnk space an cursorposition 1631 e613 e6 d3 ins 50 inc insrt insert flag 1632 e615 do 02 bne insout 1633 e617 c6 d3 dec insrt insert flag 1634 e619 4c c7 e5 insout jmp delout 1635 e61c 1636 e61c 1637 e61c ===> dload"*" er run er' 1$83) <=== 1638 e61c 1639 e61c 90 Of stprun bcc runrts 1640 e61e 78 sei 1641 e61f ldx So e dl stx ndx anzahl bytes im tastaturpuffer 160 e623 bd ab eb runlop lda runtb-1, x 1644 e626 9d aa 03 sta keyd-i,x tastaturpuffer bytes) 1645 e629 ca dex 1646 e62a do f7 bne runlop 1647 e62c 58 cli 1648 e62d 60 runrts rts 1649 e62e 1650 e62e 165, e62e ===> tes t zeilenende, zeile einfügen <= = 1652 e62e 1653 e62e c4 df movchr cpy scrt rechter rand bildschirm 1654 e Ob bcc movc!o 1655 e632 a6 ca ldx tblx cursor zeile 1656 e634 e4 dd cpx scbot unterste zeile bildschirm 10-25) 1657 e bcc movcio

298 610/710 os-editor2 hard+soft ass/reass.... seite 0033 zeile adr. obj.-code source-code H e638 e63b e63d e640 e643 e6h e648 e64a ehd e64e e e e e e655 2c 9b cd eo e5 90 Of 20 f5 e4 bo ed cd e3 bit scrdis bmi movc30 movcio jsr stupt jsr nxtchr bcc movc30 jsr getbit bcs movc20 jsr bszeil sec bvs movc30 jsr scrdwn movc20 clc movc30 rts 1673 e655 6c sequen jmp lescvecl 1674 e e658 scroll disable flag bs-zeiger auf cursor-zeile cursor I pos. rechts test auf doppelzeile lakt. zeilel anzahl zeilen bs=l, dann pla, pla nach unten scrollen addrl user esc-tasten-vector 1676 e658 ===> zeile unter aktueller zeile einfügen lese, il <=== 1677 e e658 e65b e65e e65f e662 e663 e666 e667 e669 e66a e66c e66d 20 cd e3 20 c7 eo eb 20 f7 e4 OB e5 28 bo cf 60 iline jsr scrdwn jsr stuio inx jsr getbtl php jsr putbit plp bcs linrts sec ror lsxp linrts rts nach unten scrollen letzte position lzeilel 1690 e66d 1691 e66d ===> aktuellezeilelöschen lese, dl <=== 1692 e66d 1693 e66d e5 dline jsr fistrt 1694 e670 a5 dc lda sctop 1695 e pha 1696 e673 a5 ca lda tblx 1697 e dc sta sctop 1698 e677 ad 9e 03 lda logscr 1699 e67a 48 pha 1100 e6 Tb a9 80 lda 11$ e67d 8d 9e 03 sta logscr 1102 e e4 jsr scru e pla I 704 e684 8d 9e 03 sta logscr 1705 e68 7 a5 dc lda sctop I 706 e ca sta tblx 1707 e68b 68 pla 1708 e68c 85 dc sta sctop 1709 e68e 38 sec 1710 e68f 66 cf ror lsxp 1711 e691 4c c7 eo jmp stu e694 test auf doppelzeile lxr = zeilel akt. zeile als doppelzeileeintragen cursor auf zeilenanfang oberste zeile bildschirm cursor zeile oberste zeile bildschirm logical/physical scroll flag logical/physical scroll flag logical/physical scroll flag oberste zeile bildschirm cursor zeile oberste zeile bildschirm letzte position lzeilel 1713 e e694 ===> zeile von cursor bis ende löschen lese, ql <=== 1715 e694

299 610/710 os-editor2 hard+soft ass/reass.... seite 0034 zeile adr. obj.-code source-code 1716 e e e69a 1719 e69c 1720 e69f 1721 e6al 1722 e6a4 f 723 e6a e6a e6a9 20 a5 e5 20 2c e2 e6 ca 20 cd eo a4 de 20 f5 e4 bo fl 4c c7 e5 etoeol jsr savpos etol jsr clrprt inc tblx jsr stupt ldy sclf jsr getbit bcs etol etout jmp delout cursor-zeile und -spalte retten cursor zeile bs-zeiger auf cursor-zeile linker rand bildschirm test auf doppelzeile lakt. zeile) 1726 e6a9 ===> zeile von cursor bis anfang löschen lese, p) <=== 1727 e6a e6a e6ac 1730 e6af f 731 e6bl 20 a5 e5 20 Ia e2 c4 de do e6b3 20 f5 e e6b6 90 ee 1734 e6b e e6bb 90 ef 1736 e6bd 1737 e6bd etosol jsr savpos etstol jsr doblnk cpy sclf bne etsioo jsr getbi t bcc etout etsioo jsr bakchr bcc etstol 1738 e6bd ===> bildschirm aufwärts rollen lese, v) <=== 1739 e6bd 1740 e6bd 20 a5 e5 suup 174 f e6c0 Ba 1742 e6cl e6c2 20 f6 e3 17H e6c e6c6 85 da 1746 e6c8 4c a6 e6 f 747 e6cb f 748 e6cb jsr savpos txa pha jsr scrup pla sta sedt2 jmp etout cursor-zeile und -spalte retten space an Cursorposition linker rand bildschirm test auf doppelzeile (akt. zeile) cursor 1 position nach links cursor-zeile und -spalte retten nach oben scrollen 1749 e6cb ===> bildschirm abwärts rollen lese, w) <=== 1750 e6cb 1751 e6cb 1752 e6ce 1753 e6dl 1754 e6d e6d e6d e6d e6da 1759 e6dd e6e0 e6e3 e6e3 20 a5 e5 20 f5 e4 bo cf a5 dc 85 ca 20 cd e e5 4c a6 e6 sddn sddn2 jsr savpos jsr getbit bcs sddn2 sec ror lsxp lda sctop sta tblx jsr scrdwn jsr clrbi t jmp etout e6e3 ===> bildschirm-scroll ein lese, l) <=== 1764 e6e e6e e6e e6e e6e e6e e6e6 a9 00 scrswo clc.byte $24 e6e5 e6e5 ===> bildschirm-scroll aus lese, ml <=== scrsw7 sec lda #$00 mehrfach benutzte editorvariable cursor-zeile und -spalte retten test auf doppelzeile (akt. zeile) letzte position (Zeile) oberste zeile bildschirm (0-25) cursor zeile nach unten scrollen akt. zeile als l.doppelzeile eintragen

300 610/710 os-editor2 hard+soft ass!reass seite 0035 zeile adr. obj. -code source-code I 773 e6eb 6a ror a I 774 e6e9 Bd 9b 03 sta scrdis scroll disable flag I 775 e6ec 60 rts I 776 e6ed I 777 e6ed 177B e6ed IB clc 1779 e6ee bcc logsw 17BO e6f0 3B sec I 7B I e6fl a9 00 logsw lda #$00 I 7B2 e6f3 6a ror a I 7B3 e6h Bd 9e 03 sta logscr logical/physical scroll flag I 7B4 e6f7 60 rts I 7B5 e6fb I 7B6 e6fb I 7B 7 e6fb ===> Funktionstasten setzen, ändern, Listen <=== I 7BB e6fb I 7B9 e6fb 7B keyfun sei 1790 e6f9 BB dey 1791 e6fa bmi listky def. Funktionstasten-liste 1792 e6fc 4c be e7 jmp addkey zusätzliche Funktions-tasten 1793 e6ff I 794 e6ff 1795 e6ff ===> def. Funktionstasten-liste <=== 1796 e6ff 1797 e6ff ao 00 listky ldy #$00 179B I 799 e70 I e702 cb Be b7 03 sty sedt3 listlp iny temporär List Funktionstasten IBOO e 705 BB dey IBO I e706 b9 B3 03 lda keysiz,y Funktionstasten (20bytes} IB03 index programmierbare befehle IB04 e70e e9 jsr findky funktiontasten-adr. in ac,xr IB05 e7 II B5 c2 sta keypnt addrl akt. pgm tastenpuffer IB06 e7 13 B6 c3 stx keypnt., addrh akt. pgm tastenpuffer IB02 e709 e70b fo 6c Bd 9d 03 beq nodefn sta keyidx IB07 e7 15 a2 03 ldx #$03 I BOB e717 bd a6 e7 preamb lda keword,x text für Funktions-tasten 1809 e71a 20 d2 ff jsr kbsout ausgabe I char auf akt. kanal 1810 elld ca dex IB" elle 10 f7 bpl preamb IB 12 e720 a2 2f ldx #$2f IBI3 e722 ad b7 03 lda sedt3 temporär List Funktionstasten IBH e725 3B sec IBI5 e726 eb ky2asc inx IBI6 e 72 7 e9 Oa sbc #$0a IB I 7 e729 bo fb bcs ky2asc 1818 e72b 69 Ja adc #$3a IB 19 e72d eo 30 cpx #$ e72f fo 06 beq nosec IB21 e73 I 48 pha 1822 IB23 e732 e d2 ff jsr Ba txa kbsout ausgabe char auf akt. kanal 1824 e pla IB25 e d2 ff nosec jsr kbsout 1826 e73a ao 00 ldy #$00 ausgabe char auf akt. kanal 1827 e73c a9 2c lda #S2c IB28 e lje 20 d2 ff lstk20 jsr lebsaut ausgabe I char auf akt. kanal 1B29 eh I a2 07 ldx #$07 IB30 e B2 e2 txtprt jsr pagst2 segment Funktionstasten setzen

301 610/710 os-editor2 hard+soft ass/reass..... seite 0036 zeile adr. obj.-code source-code IBH I e746 e748 ehb ehd e7h e75 I e753 e755 e75 7 e759 e75b e75c e75e e76 I e762 e765 e767 e768 e76b e 76d e76f e 712 e774 e777 e77a e 7 7c e 77e e7 7f e780 e 78 I e7b I e7b I e783 e784 e786 e e e7ba 1869 e78b 1870 e78d 1871 e e e e e798 bl c e2 c9 Od fo 32 c9 Bd fo 31 c9 22 fo 30 eo 09 fo a d2 ff d2 ff a2 09 cb cc 9d 03 do d6 a d2 ff a9 Od 20 d2 ff ac b 7 03 co 14 do a2 Oa 2c a2 73 2c a2 Oe Ba 48 a2 06 bd aa e7 fo Oa 20 d2 ff ca 70 f e799 aa 1877 e79a do f e79c c e79d cc 9d e7a0 fo do 7887 e1a2 a9 2b 1882 e7a4 do lda lkeypnt),y jsr pagres cmp tt$od beq lstkcr cmp #$Bd beq lstksc cmp #$22 beq Istkat cpx tt$09 beq IstklO pha lda tt$22 jsr kbsout pla lstk70 jsr kbsout ldx tt$09 iny cpy keyidx bne txtprt lda #$22 jsr kbsout lstk30 lda #$0d jsr kbsout nodefn ldy sedt3 cpy #$ 14 bne listlp cli clc rts lstkcr ldx #$Oa.byte $2c lstksc ldx #$73. byte $2c Istkat ldx #$Oe txa pha ldx tt$06 lstklp lda cdword,x beq lstk40 jsr kbsout dex bpl lstklp pla tax bne lstl<lp lst/<40 iny cpy l<eyidx beq lst/<30 lda l$2b bne lst/<20 e7a6 e 7a6 e7a6 ===> text für funktions-tasten <=== 1886 e7a e7a l<eword.byte yel<' 1887 e7a9 4b addrl akt. pgm tastenpuffer segment zurücksetzen ausgabe ausgabe char auf al<t. /<anal char auf al<t. /<anal index programmierbare befehle ausgabe char auf al<t. /<anal ausgabe char auf al<t. /<anal temporär list Funktionstasten ausgabe 1 char auf al<t. /<anal index programmierbare befehle

302 610/710 os-editor2 hard+soft ass/reass.... seite 0037 zeile adr. obj.-code source-code IBBB IBBB IBBB e7aa e7ad e7b0 IBBB e7bl oo IBB9 e7b2 IBB9 e7b5 IB90 e7b6 IB90 e7b9 IB91 e7ba IB91 e7bd IB92 e7be IB93 e7be IB94 e7be IB95 e7be IB96 e7be IB9 7 e7bf IB9B e7c0 IB99 e1c e7c4 190 I e7c e7cb 1903 e7ca 1904 e7cd 1905 e7ce 1906 e7dl 1907 e1d3 190B e7d e7d e1da 19" e 1dc 1912 e1de 1913 e7e I 1914 e7e e7e e 7e e7e8 191B e7e e7ec aa 1920 e1ed 9B I B B 1939 e1ee e1ef e7fl e7f2 e7h e7f6 e7f9 e7fb e7fc e7fe eboo eb02 eb04 eb06 e809 ebob ebod ebof eb II 2B b I cdword.byte "($rhc, $00.byte. 131", $00.byte "143", $00. byte. I I 4 I. ===> zusätzliche funktions-tasten <=== 48 aa B4 d9 b f9 B3 03 B5 da 6e 9c 03 cb e9 B5 c4 B6 c5 ao e9 B5 c6 B6 c7 ac 9c ed BO 03 ab Ba ed BI 03 IB 65 da Ba bo 6c e2 a5 c6 IB e5 c4 a5 c7 e5 c5 90 2a ao 00 ad 9c " a5 c6 do 02 c6 c7 c6 c6 addkey pha tax sty sedtl lda e6509,x sec sbc keysiz,y sta sedt2 ror bitmsk iny jsr findky sta sedsal s tx sedsal>l ldy 1$" jsr findky sta sedeal stx sedeal>l ldy bitmsk bpl keysho clc sbc pkyend tay txa sbc pkyend+l tax tya clc adc sedt2 txa adc 1$00 bcs kyxit keysho jsr pagst2 kymove lda sedeal clc sbc sedsal lda sedeal+t sbc sedsal+t bcc keyins ldy 1$00 lda bitmsk bpl kshort lda sedeal bne newky4 dec sedeal+ I newky4 dec sedeal mehrfach benutzte editorvariable 6509 execution register funktionstasten (20bytesl mehrfach benutzte editorvariable bit mask/funkt.tasten temporär funktiontasten-adr. in ac,xr addrl scroll-zeiger start addrh scroll-zeiger start funktiontasten-adr. in ac,xr addrl scroll-zeiger ende addrh scroll-zeiger ende bit mask/funkt.tasten temporär addrl endadr. funkt.tastenpuffer addrh endadr. funkt.tastenpuffer mehrfach benutzte editorvariable segment funktionstasten setzen addrl scroll-zeiger ende addrl scroll-zeiger start addrh scroll-zeiger ende addrh scroll-zeiger start bit mask/funkt.tasten temporär addrl scroll-zeiger ende addrh scroll-zeiger ende addrl scroll-zeiger ende

303 610/710 os-editor2 hard+soft ass/reass..... seite 0038 zeile adr. obj.-code source-code 1940 e813 bl c6 lda I sedeall. y addrl scroll-zeiger ende 1941 elll!i a4 da ldy sedt2 mehrfach benutzte editorvariable 1942 e c6 sta lsedeall,y addrl scroll-zeiger ende 1943 e819 4c f9 e7 jmp kymove 1944 elllc 1945 e81c 1946 elllc bl c4 kshort lda I sedsiil I, y addrl scroll-zeiger start 1947 ebie a4 da ldy sedt2 mehrfach benutzte editorvariable 1948 e820 c6 c5 dec sedsal+l addrh scroll-zeiger start 1949 ell22 91 c4 sta I sednl I, y addrl scroll-zeiger start 1950 e824 e6 c5 sedsal+l inc addrh scroll-zeiger start 1951 e82& e& c4 inc sedsal addrl scroll-zeiger start 1952 ell28 do cf bne kymove 1953 e82a e6 c5 inc sedsald addrh scroll-zeiger s tart 1954 ell2c do cb bne kymove 1955 ell2e a4 keyins mehrfach benutzte editorvariable!956 e e9 jsr findky funktiontasten-adr. in ac,xr d9 ldy sedt ell33 85 c4 sta sedsal addrl scroll-zeiger start e835 8& c5 stx sedsal 1 addrh scroll-zeiger start 1959 e837 a4 d9 ldy sedtl mehrfach benutzte editorvariable 19&0 ell39 &II pla 19&1 ell3a 48 pha!962 e83b aa tax 19&3 ell3c b5 00 lda e6509,x 6509 execution register 19&4 e83e sta keysiz,y Funktionstasten l20bytesj 1965 eh! ab tay 19&& e842 fo Ia beq kyinok 19&7 e8h b5 01 lda i6509, X &509 indirection register 1968 ebh 85 c6 sta sedeal addrl scroll-zeiger ende 1969 e8u b5 02 lda usrpok,x jmp code für usr -routine 1970 e84a 85 c7 sta sedeal+! addrh scroll-zeiger ende 19 7 I e84c 88 kyinlp dey 1972 e84d b5 03 lda usrpok+1, x addrl usr -routine 1973 e8h s ta i indirection register 1974 e85! bl c6 lda (sedeal},y addrl scroll-zeiger ende 1975 e e2 jsr pagres segment zurücksetzen 1976 e856 zo 82 e2 jsr pagst2 segment funktionstasten setzen e c4 sta I udsal J, y addrl scroll-zeiger start 1978 e85b 98 tya 1979 e85c do ee bne kyinlp 1980 e85e e2 kyinok jsr pagres segment zurücksetzen 1981 e86! 18 clc 1982 e kyxit pla 1983 e cli 1984 e864 &0 rts 1985 e eb e865 ===> tast. lesen, in puffer schreiben <=== 1988 e e865 ao ff key ldy #l$ff 1990 e eo sty modkey flag shift/control-taste 1991 e el sty norkey flag normale taste 1992 e86b cb iny 1993 e86c Be 01 df sty tri2 pb &525 triport 2: port reg. b 199, e86f Be 00 df sty tri2+pa 6525 triport 2: port reg. a 1995 e le e9 jsr getkey tastaturabfrage Über triport eb f and #l$3f 1997 e f eor #l$3f

304 610/710 os-editor2 hard+soft ass/reass.... seite 0039 zeile adr. obj.-code source-code 1998 e879 do 03 bne keyxl 1999 e87b 4c f3 e8 jmp nulxit 2000 e87e 2001 e8 7e 2002 e87e a9 ff keyxl lda l$ff 2003 e880 8d 00 df sta tri2+pa 6525 triport 2: port reg. a 2004 e883 Oa asl a 2005 e884 8d 01 df sta tri2+pb 6525 triport 2: port reg. b 2006 e le e9 jsr getkey tastaturabfrage Über triport e88a 48 pha 2008 e88b 85 eo sta modkey flag shift/control-taste 2009 e88d ora 1$ e88f do 03 bne lineoi 20 II e le e9 linelp jsr getkey tastaturabfrage Über triport e894 a2 05 lineoi ldx 1$ e896 4a kyloop lsr a 2014 e bcc havkey tastenwert aus tabeile lesen 2015 e899 c8 iny 2016 e89a ca dex 2017 e89b 10 f9 bpl kyloop 2018 e89d 38 sec 2019 e89e 2e 01 df rol tri2+pb 6525 triport 2: port reg. b 2020 e8a I 2e 00 df rol tri2+pa 6525 triport 2: port reg. a 2021 e8a4 bo eb bcs linelp 2022 e8a6 68 pla 2023 e8a 7 90 h bcc nulxit 2024 e8a e8a e8a9 ===> tastenwert aus tabelle lesen <=== 2027 e8a e8a9 84 el havkey sty norkey flag normale taste 2029 e8ab be 29 ea ldx normtb,y code-tab. für tastatur 1-shift) 2030 e8ae 68 pla 2031 e8af oa asl a 2032 e8b0 oa asl a 2033 e8bl oa asl a 2034 e8b2 90 Oe bcc doctl 2035 e8b4 30 Of bmi havasc tastenwert in ta s t. -puffer 2036 e8b6 be 89 ea ldx shfttb, y code-tab. für tastatur (+shift) 2037 e8b9 a5 cc lda grmode flag für grafikltext-modus 2038 e8bb fo 08 beq havasc tastenwert in tast.-puffer 2039 e8bd be e9 ea ldx shftgr, y code-tab. für tastatur (graphik+shift) 2040 e8c0 do 03 bne havasc tastenwert in tast.-puffer 2041 e8c2 be 49 eb doctl ldx ctltbl, y code-tab. für tastatur lcontrol-modus) 2042 e8c e8c e8c5 ===> tastenwert in tast.-puffer <=== 2045 e8c e8c5 eo ff havasc cpx 1$ff 2047 e8c7 fo Zc beq keyxit 2048 e8c9 eo eo cpx l$e e8cb bcc notfun 2050 ebcd 98 tya 2051 e8ce 48 pha 2052 e8cf e9 jsr funjmp aufruf funktionstasten lind.-vektor) 2053 e8d2 68 pla

305 610/710 os-editor2 hard soft ass/reass.... seite 0040 zeile adr. obj.-code source-code 2054 e8d e8d e8d ebd ebd ebdb 2060 ebdd 2061 ebdf 2062 ebe! 2063 ebe ebe ebe ebe ebeb 2068 ebed 2069 ebfo 2070 ebfl 2071 ebf ebf ebf ebf ebfc 2076 ebfe 2077 e B e e902 ab bo lf Ba c4 cd fo 27 a2 13 B6 db a6 dl eo 09 fo Oe co 59 do 29 eo OB fo 06 9d ab 03 eb do!f ao ff B4 cd a2 7f Be 00 df a2 ff Be 01 df 60 tay bcs keyxit notfun txa cpy lstx beq dorat ldx 1$13 stx delay ldx ndx cpx 11$09 beq nulxit cpy 11$59 bne savkey cpx ii$0b beq nulxit sta keyd,x inx bne savkey nulxi t ldy l$ff keyxit sty lstx keyxt2 ldx II$ 7f stx tri2+pa ldx l$ff stx tri2 pb rts 20BO e902 ===> repeat-schleife <=== 20B! e902 20B2 e902 20B3 e904 20B4 e906 20B5 e90b 20B6 e90a 20B 7 e90c 20BB e90e 20B9 e e e e e91b 2094 e91a 2095 e91c 2096 e91e 2097 e91e c6 db 10 fl e6 db c6 d7 10 eb e6 d7 a6 d! do e5 9d ab 03 eb B6 d! a2 03 B6 d7 do d7 dorat dec delay bpl keyxt2 inc delay dec rptcnt bpl keyxt2 inc rptcnt ldx ndx bne keyxt2 savkey sta keyd,x inx stx ndx ldx 1$03 stx rptcnt bne keyxit 209B e91e ===> tastaturabfrage Über triport 2 <=== 2099 e91e 2100 e91e 2101 e e e e e927 ad 02 df Cd 02 df do f8 getkey lda tri2+pc cmp tri2 pc bne getkey rts 2106 e927 6c b5 03 funjmp jmp lfunvec} 2107 e92a ZIOB e9za 2109 e92a c4 cd cpy lstx 2110 e92c fo 19 beq funrts 2111 e92e a5 d! lda ndx index letztes zeichen repeat-schleife zeit bis zum einsetzen des repeat anzahl bytes im tastaturpuffer tastaturpuffer 110 bytesl index letztes zeichen 6525 triport 2: port reg. a 6525 triport 2: port reg. b zeit bis zum einsetzen des repeat zeit bis zum einsetzen des repeat zeit zwischen zeichen bei repeat zeit zwischen zeichen bei repeat anzahl bytes im tastaturpuffer tastaturpuffer 110 bytesl anzahl bytes im tastaturpuffer zeit zwischen zeichen bei repeat 6525 triport 2: port reg. c 6525 triport 2: port reg. c tastaturabfrage Über triport 2 addrl ind. jmp für Funktionstasten index letztes zeichen anzahl bytes im tastaturpuffer

306 610/710 os-editor2 hard+soft ass/reasso 0 zeile adro objo-code source-code 0 o o oseite 00" 2112 e d6 ora kyndx Zeichenzähler für pgm tastenbefahl 2113 e932 do 13 bne funrts 2114 e934 Bd 9d 03 sta keyidx index programmierbare befehle 2115 e937 Ba txa 2116 e lf and #$1f 2 II 7 e93a ab tay 2118 e93b b lda keysiz,y funktionstasten (20bytesl 2119 e93e 85 d6 sta kyndx zeichenzählet für pgm tastenbefahl 2120 e e9 jsr findky funktiontasten-adro in ac,xr 2121 e90 85 c2 s ta keypnt addrl akt 0 pgm tastenpuffer 2122 e c3 stx keypnt+l addrh akt 0 pgm tastenpuffet 2123 e9h 38 funrts sec 2124 e rts 2125 e e e949 ===> funktiontasten-adro in ac,xr <=== 2128 e e949 a5 co findky lda pkybuf addrl start programmierbare tasten 2130 e94b a6 cl ldx pkybuf+l addrh start programmierbare tasten 2131 e94d 18 findlp clc 2132 ehe 88 dey 2133 e9h 30 OB bmi fndout 2134 e adc keysiz,y funktionstasten (20bytes} 2135 e f7 bcc findlp 2136 e956 eb inx 2137 e957 do H bne findlp 2138 e fndout rts 2139 e95a 2140 e95a 2141 e95a ===> tabulator holen <=== 2142 e95a 210 e95a 98 gettab tya 21H e95b and #$ e95d aa tax 2146 e95e bd 67 ec lda keyend,x bit-tabelle für zeilen-link 21H e961 Bd 9c 03 sta bitmsk bit mask/funktotasten temporär 2148 e tya 2149 e965 4a lsr a 2150 e966 4a lsr a 2151 e967 4a lsr a 2152 e968 aa tax 2153 e969 bd a I 03 lda tab,x tabstop flags (maxo IObyt/BObit} 2154 e96c 2c 9c 03 bit bitmsk bit mask/funktotasten temporär 2155 e96f 60 rts 2156 e e e970 ===> bearbeitung von esc-funktionen <=== 2159 e e f escape and #$7f 2161 e sec 2162 e973 e9 sbc #$ e975 c9 Ia cmp #$Ia " 2164 e bcc escgo esc-sequenz-adro auf stack 2765 e e e979 ===> esc-sequenz abbrechen (esc, xl <=== 2168 e e escrts rts

307 610/710 os-editor2 hard+soft ass/reass..... seite 0042 zeile adr. obj.-code source-code 2170 e97a 2171 e97a 2172 e97a 2113 e97a ===> esc-sequenz-adr. auf stack <=== 2174 e97a oa escgo asl a 2115 e97b aa tax 2176 e97c bd 86 e9 lda escvct+ 1. x adress-tabelle der esc-routinen (esc a-zl 2177 e97f 48 pha 2178 e980 bd 85 e9 lda escvct.x adress-tabelle der esc-routinen (esc a-zl 2119 e pha 2180 e rts 2181 e e985.end 2183 e985.lib editor3

308 610/710 os-editor3 hard+soft ass/reass.... seite 0043 zeile adr. obj.-code source-code 218S e98s 2186 e98s ===> adress-tabelle der esc-routinen lese a-zl <=== 2181 e98s 2188 e98s 2189 e e e98b 2192 e98d 2193 e98f 2194 e S e e99s 2191 e e e99b 2200 e99d 2201 e99f 2202 e9a I 2203 e9a S II S e9a5 e9a 7 e9a9 e9ab e9ad e9af e9bl e9b3 e9bs e9b7 e9b9 e9b9 e9b9 e9b9 e9b9 e9ba e9bb e9bb e9bb 22 ea ba e9 lf ea 6c e6 ee e9 es e9 d5 e9 d7 e9 57 e6 3 I es 43 e5 e2 e6 e4 e6 04 ea a I e3 ab e6 93 e6 fs e9 eb e9 b8 e9 db e9 bc e6 ca e6 78 e9 01 ea f8 e9 escvct.word auton-1. word sethtb- I.word autoff-1. word dline- I.word setcr4-l.word setcr2-l.word bellon-1.word bellof-1. word iline- I.word fndfst-1.word fndend-1.word scrsw0-1.word scrswl-1. word nrmscr- I. word toqm- I. word etosol- I. word e toeol- I.word revscr-1.word setcr3-l.word sethtt-1.word setcrl-1.word suup-1.word sddn- I.word escrts-1.word nrmset-1.word usrset-1 auto insert'-modus ein lese, al cursorpos- = untere rechte bildschirm-ecke lese, bl 'auto insert'-modus aus lese, cl aktuelle zeile löschen lese, dl festen cursor ein lese, e) blinkenden cursor ein lese, f) glocke am zeilenende ein lese, g) glocke am zeilenende aus lese, hl zeile unter aktueller zeile einfügen lese, i I cursor an zeilenanfang lese, j) cursor an zeilenende lese, kl bildschirm-scroll ein lese, 11 bildschirm-scroll aus lese, ml bildschirm revers auf 'normal' lese, nl 'inst- quote- rvs -mode aus zeile von cursor bis anfang löschen lese, p) zeile von cursor bis ende löschen lese, q) bildschirm normal' auf revers lese, rl vollen cursor ein lese, sl cursorpos. = obere linke bildschirm-ecke lese, t I unterstrich-cursor ein lese, ul bildschirm aufwärts rollen lese, vl bildschirm abwärts rollen lese, wl esc-sequenz abbrechen lese, xl standard zeichengen. ein lese, yl benutzer zeichengen. ein lese, zl ===> cursorpos. = obere linke bildschirm-ecke lese, tl <=== e9bb 2224 e9bb e9bc 2226 e9bc ZZ e9bc e9bc e9bc e9be e9c0 e9c2 e9c2 e9c2 sethtt clc.byte $24 ===> cursorpos- = untere rechte bildschirm-ecke lese, b) <=== sethtb sec ===> bs-fenster links oben l$0fl I rechts unten l$8fl <=== a6 cb a5 ca 90 Of ===> ac window ldx pntr lda tblx bcc settps cursor spalte cursor zeile ac = obere, xr bildschirm-ecke untere, xr rechte bildschirm-ecke <=== linke

309 610/710 os-editor3 hard+soft ass/reass.... seite 0044 zeile adr. obj.-eode souree-code e9e2 e9c2 e9e4 e9e6 e9e7 e9e7 e9e7 e9e7 e9e7 e9es e9cb e9ce e9d0 e9dl e9dl e9dl e9dl e9dl e9d3 e9d5 e9d6 e9d6 85 dd 86 df 60 setbts sta scbot stk sert rts ==~> bs-fenster auf volle grosse lhome-homel <=== a9 18 a2 4f 20 cz e9 a9 00 aa ===> ae 85 dc 86 de 60 sreset lda 1$!8 ldk 1$4f jsr setbts lda 1$00 tak unterste zeile bildschirm I0-251 rechter rand bildsehirm ac = untere, xr bildschirm-eeke obere, xr = linke bildsehirm-ecke <=== settps sta setop stk self rts 2257 e9d6 ===> glocke am zeilenende ein lese, gl <=== 2258 e9d e9d6 a e9d e9d8 e9d8 e9d8 e9d8 e9db e9de e9dc e9de e9de e9dc e9de e9el e9e3 e9e5 e9e6 e9e6 e9e e9e e9e e9e e9ea 2282 e9ec 2283 e9ee bellon lda #$00 ===> glocke am zeilenende aus lese, hl <=== rechte oberste zeile bildsehirm linker rand bildsehirm 8d 9f 03 bellof sta bellmd flag für glocke am zeilenende 60 rts ===> unterstrich-cursor ein lese, ul <=== a9 Ob 2c 02 df a9 06 2c setcrl lda #$Ob bit tri2+pc bmi setung lda s$06.byte $2c ===> blinkenden cursor ein lese, fl <=== a d4 do 07 seterz lda #$60 setung ora config bne setcr e9ec ===> vollen eursor ein lese, sl <=== 2285 e9ec 2286 e9ec a9 fo 2287 e9ee 2c 2288 e9ef 2289 e9ef setcr3 lda #$f0.byte $2e 2290 e9ef ===> festen cursor ein lese, el <=== 2291 e9ef 6525 triport 2: port reg. c cursor type I char. vor blinken

310 os-editor3 hard+soft asslreass... seite 0045 zeile adr. obj.-code source-code 2292 e9ef a9 Of setcr4 lda lf$0f 2293 e9f1 25 d4 and config cursor type I char. vor blinken 2294 e9f3 B5 d4 setcr5 sta config cursor type I char. vor blinken 2295 e9f5 60 rts 2296 e9f e9f6 229B e9f6 ===> bildschirm 'normal auf revers lese, rj <=== 2299 e9f e9f6 a9 20 revscr lda lf$ e9fb 2c.byte $2c 2302 e9f e9f e9f9 ===> benutzer zeichengen. ein (esc, zj <=== 2305 e9f e9f9 a9 10 usrset lda lf$10 23(}7 e9fb a2 Oe ldx lf$oe 230B e9fd Be 00 db stx vdc+adreg 6B45 vdc: adress-reg eaoo Od 01 db ora vdc+dareg 6B45 vdc: daten-reg ea03 do Od bne setscr 2311 ea ea ea05 ===> bildschirm revers auf 'normal' lese, n} <=== 23" ea ea05 a9 df nrmscr lda lf$df 2316 ea07 2c.byte $2c 2317 eaob 231B eaob 2319 eaob ===> standard zeichengen. ein (esc, y} <=== 2320 eaob 2321 eaob a9 ef nrmset lda lf$ef 2322 eaoa a2 Oe ldx lf$0e 2323 eaoc Be 00 db stx vdc+adreg 6B45 vdc: adress-reg eaof 2d 01 db and vdc dareg 6B45 vdc: daten-reg ea12 Bd 01 db setscr sta vdc dareg 6B45 vdc: daten-reg ea and lf$ ea17 a2 Oe ldx lf$oc 232B ea19 Be 00 db stx vdc+adreg 6B45 vdc: adress-reg ea1c Bd 01 db sta vdc+dareg 6B45 vdc: daten-reg ea1f 60 rts 2331 ea ea ea20 ===> 'auto insert'-modus aus lese, c} <=== 2334 ea ea20 a9 00 autoff lda #$ ea22 2c.byte $2c 2337 ea23 233B ea ea23 ===> 'auto insert'-modus ein (esc, a J <=== 2340 ea ea23 a9 ff auton lda #$ff 2342 ea25 Bd 9a 03 sta insflg auto insert flag 2343 ea2b 60 rts 2344 ea29 ZJ45 eal ea29 ===> code-tab. für tastatur (-shiftj <=== 2341 ea29 234B ea29 eo normtb. byte $e0, $1b, $09, $ff, $00, $01 234B ea2a 1b

311 610/710 os-editor3 hard+soft ass/reass..... seite 0046 zeile adr. obj. -code source-code 2348 ea2b ea2c ff 2348 ea2d ea2e ea2f el. byte Se I. $3 I, $51. $41. $5a, $ff 2349 ea ea ea ea33 5a " 2349 ea34 ff 2350 ea35 e2.byte $e2, $32. $57. $53, $58, $ ea ea ea ea ea3a ea3b e3. byte $e3, $33, $45, $H, $46, $ ea3c ea3d ea3e H 2351 ea3f ea ea41 e4.byte $e4, $34, $52. $54, $41, $ ea ea ea ea ea eah e5.byte $e5, $35, $36, $59, $48, $h 2353 ea ea ea4a ea4b ea4c 4e 2354 ea4d e6.byte $e6, $37, $55, $4a, $4d, $ ea4e eah ea ea51 4d 2354 ea ea53 &7. byte Se 7, $38, $49, $4b, $2c, $2e 2355 ea ea ea56 4b 2355 ea57 2c 2355 ea58 2e 2356 &159 &8.byte $e8, $39, $H, $4c. $3b, $2f 2356 ea5a ea5b 4f 2356 ea5c 4c 2356 ea5d 3b 2356 ea5e 2f 2357 ea5f e9.byte $e9, $30, $2d, $50, $5b, $ ea ea61 2d 2351 ea ea63 5b 2357 ea64 27

312 610/TIO os-editor3 hard+soft ass/reass.... seite OOH zeile adr. obj.-code source-code " 2358 ea65. byte S II, $3d, $5f, $5d, $0d, $de 2358 ea66 3d 2358 ea6t 5f 2358 ea6b 5d 2358 ea69 Od 235B ea6a de 2359 ea6b ea6c 9d.byte $91, $9d, $1d, s". $02, Sff 2359 ea6e 2359 ea6f ea6d ld " 2359 ea TO ff 2360 eati 13.byte $13, $3f, $3T. $34, $3'. $ ea T2 3f 2360 eat3 3T 2360 ea T ea T ea T ea77 12.byte $12, $04, $3B, $35, $32, $2e 236' ea TB ea T9 3B 236' ea Ta ea Tb ea Tc 2e 2362 ea Td Be. byte $Be, $2a, $39, $36, $33, $ ea Te 2a 2362 ea 7f eabo ea ea ea83 03.byte $03, $2f, $2d, $2b, $0d, Sff 2363 ea84 2f 2363 ea85 2d 2363 ea86 2b 2363 eabt Od 2363 eabb ff 2364 eab eab eab9 ===> code-tab. für tastatur l+shiftl <=== 236T eab9 236B eab9 ea shfttb.byte Sea, $1b, $B9, $ff, $00, $ ea8a lb 236B eabb B eabc ff 2368 eabd B eabe eabf eb.byte Seb, $2'. $dl, Sei, $da, Sff 2369 ea ea91 dl 2369 ea92 cl 2369 ea93 da 2369 ea94 ff 23TO ea95 ec.byte Sec, $40, $d7. $d3, $db, $c ea ea97 d ea9b d ea99 db 2310 ea9a c3

313 610/710 os-editorj hard+soft ass/reass.... seite 0048 zeile adr. obj.-code source-code 2371 ea9b ed. byte Sed, S2J, SeS, Sc4, Sc6, Sd ea9c 2J 2J71 ea9d es 2J 71 ea9e c ea9f c eaao d eaal ee.byte See, S24, Sd2, Sd4. Sc7. Sc eaa2 24 2J72 eaaj d eaa4 d4 2J72 eaas c7 2J72 eaa6 c2 237J eaa 7 ef. byte Sef, S2S, sse. Sd9, $c8, See 237J eaa8 2S 237J eaa9 Se 237J eaaa d9 237J eaab c8 237J eaac ce 2J74 eaad fo. byte $f0, S26, SdS, Sca, $cd, $a0 2J74 eaae eaaf ds 2374 eabo ca 2374 eabl Cd 2J74 eab2 ao 2J7S eabj fl. byte $f I, $2a, $c9, $cb, $Je, $Je 2J7S eab4 2a 2J7S eabs c9 2J7S eab6 cb 2J7S eab7 Je 237S eab8 Je 2376 eab9 f2.byte $f2, $28. $cf, Sec, $Ja, $Jf 2376 eaba eabb cf 2376 eabc cc 2J76 eabd Ja 2J76 eabe Jf 2377 eabf fj. byte $fj. $29, $2d, $d0, $Sb. $22 2J77 eaco 29 2J77 eac I 2d 2J77 eac2 do 2J77 eacj 5b 2J 77 eac4 22 2J78 eac5 II. byte $11, $2b, $5c, $Sd, $8d, $de 2378 eac6 2b 2J78 eac7 5c 2J 78 eac8 5d 2378 eac9 8d 2378 eaca de 2J79 eacb 91.byte $91, $9d, $ld, $94, $82, $ff 2J79 eacc 9d 2J79 eacd ld 2J79 eace eacf eado ff 2380 eadl 93. byte $93. SJf, SJ7. SJ4. SJI. $JO 2J80 ead2 Jf 2J80 ead3 J ead4 34

314 610/710 os-editor3 hard+soft ass/reass.... seite 0049 zeile adr. obj.-code source-code 2380 ead ead ead7 92. byte $92, SB,, $38, $35, $32, $2e 2381 eadb ead eada eadb eadc 2e 2382 eadd Oe.byte soe, $2a, $39, $36, $33, $ eade 2a 2382 eadf eaeo eael eae eae3 83.byte $83, $2f, $2d, $2b, $8d, Sff 2383 eae4 2f 2383 eae5 2d 2383 eae6 2b 2383 eae7 Bd 2383 eaeb ff 2384 eae eae eae9 ===> code-tab. für tastatur lgraphik+shiftl <=== 2387 eae eae9 ea shftgr.byte Sea, Slb, $89, Sff, $00, $ eaea lb 2388 eaeb eaec ff 2388 eaed eaee eaef eb.byte Seb, $21' $dl, Sc I, $da, Sff 2389 eafo eafl dl 2389 eaf2 cl 2389 eaf3 da 2389 eaf4 ff 2390 eaf5 ec.byte Sec, s,o, $d7' $d3, $db, Sco 2390 eaf eaf7 d eaf8 d eaf9 d eafa co 2391 eafb ed.byte $ed, $23, $c5, $c4, $c6, Sc eafc eafd c eafe c eaff c eboo c eboi ee.byte See, $2,, $d2, $d4, $c7, $c eb eb03 d eb04 d eb05 c eb06 c eb07 ef. byte $ef, $25' $5e, $d9, $c8, $dd 2393 eb eb09 Se 2393 eboa d9

315 610/710 os-editorj hard+soft ass/reass..... seite 0050 zeile adr. obj. -code source-code 2J9J ebob c8 2J9J eboc dd 2J94 ebod fo.byte $f0, $26, $d5, $ca, $cd, $ao 2J94 eboe 26 2J94 ebof d5 2J94 ebio ca 2J94 ebll cd 2J94 ebl2 ao 2J95 ebij fl. byte $fl, $2a, Se9, Scb, $Je, $Je 2J95 ebl4 2a 2J95 ebl5 e9 2J95 ebl6 cb 2J95 ebl7 Je 2J95 ebl8 Je 2J96 ebl9 f2.byte $f2, $28, Sef, $d6, $Ja, $Jf 2J96 ebla 28 2J96 eblb Cf 2J96 eblc d6 2J96 ebld Ja 2J96 eble Jf 2J97 eblf fj. byte SfJ, $29, $2d, $d0, $5b, $22 2J97 eb eb21 2d 2J97 eb22 do 2J97 eb2j 5b 2J91 eb eb25 2J98 eb26 2b ". byte S II, $2b, $5c, $5d, $8d, Sde 2J98 eb27 5c 2J98 eb28 5d 2J98 eb29 8d 2J98 eb2a de 2399 eb2b 9 I. byte $9 I, $9d, $Ia, $94, $82, $ff 2J99 eb2c 9d 2J99 eb2d Ia 2J99 eb2e 94 2J99 eb2f 82 2J99 ebjo ff 2400 eb31 9J. byte $93, $Jf. $J7. $J4, $3 I, $JO 2400 eb32 3f 2400 eb eb34 J ebj ebj ebj7 92.byte $92, $04, $J8, $35, $J2, S2e 2401 ebj I ebj9 J ebja J eb3b J eb3e 2e 2402 eb3d Oe.byte $Oe. S2a, $39. $36, $33, $ eb3e 2a 2402 eb3f J eb ,02 eb" eb42 JO 240J ebo 8J.byte $83, $2f, $2d, $2b, $8d, $ff 240J ebh 2f

316 610/710 os-editor3 hard+soft ass/reass.... seite 0051 zeile adr. obj.-code source-code 2403 ebh 2d 2403 ebh 2b 2403 ebh 8d 2403 eb48 ff 2404 eb eb eb49 ===> code-tab. für tastatur (control-modusl <=== 2407 eb eb49 ff ctltbl. byte $ff, $ff, $ff. $ff, $ff, $ff 2408 eb4a ff 2408 eb4b ff 2408 eb4c ff 2408 eb4d ff 2408 eb4e ff 2409 ebh ff.byte $ff, $a I, $ eb50 a I $Ia, $0 ' $ff 2409 eb eb eb53 Ia 2409 eb54 ff 2410 eb55 ff. byte $ff, $a2, $77, $73, $18, $ eb56 a eb eb eb eb5a eb5b ff. byte $ff, $a3, $05, $04, $06, $ eb5c a eb5d eb5e eb5f eb eb61 ff. byte $ff, $a4, $12, $". $07. $ eb62 a eb eb64 " 2472 eb eb eb67 ff. byte $ff, $a5, $a 7, s 79, $08, $Oe 2473 eb68 a eb69 a eb6a eb6b eb6c Oe 24" eb6d ff. byte $ff. $be, $75, $0a, $Od, $ff 24" eb6e be 2414 eb6f 75 24" eb70 Oa 24" eb71 Od 2414 eb72 ff 2475 eb73 ff. byte $ff, $bb, $09, $Ob, $ce, $ff 2475 eb74 bb 2475 eb eb76 Ob 2475 eb77 ce 2475 eb78 ff 2416 eb79 ff. byte $ff, $bf. $0f. $Oe. $dc, $ff 2416 eb7a bf

317 610/710 os-editor3 hard+soft ass/reass... seite 0052 zeile adr. obj.-code source-code 2416 eb7b Of 2416 eb7c Oe 2416 eb7d dc 2416 eb7e ff 2417 eb7f ff. byte $ff, $ac, $bc, $10, Sec, $ab 2417 ebbo ac 2417 ebbi bc 2417 ebb eb83 cc 2417 eb84 ab 241B eb85 ff. byte $ff, $a9, $df, $ba, $ff, $a6 241B ebb6 a eb87 df 2418 ebb8 ba 2418 eb89 ff 2418 eb8a a eb8b ff. byte $ff, $ff, $ff, $ff, $ff, $ff 2419 eb8c ff 2419 eb8d ff 2419 ebbe ff 2419 ebbf ff 2419 eb90 ff 2420 eb91 ff. byte $ff, $b7. $b4. $bl. $b0, $ad 2420 eb92 b eb93 b eb94 bl 2420 eb95 bo 2420 eb96 ad 2421 eb97 ff.byte $ff, $b8, $b5, $b2, Sae, $bd 2421 eb98 b eb99 b eb9a b eb9b ae 2421 eb9c bd 2422 eb9d ff. byte $ff, $b9, $b6, $b3, $db, Sff 2422 eb9e b eb9f b ebao b ebal db 2422 eba2 ff 2423 eba3 ff.byte $ff, $af, $aa, $ab, $ff 2423 eba4 af 2423 eba5 aa 2423 eba6 ab 2423 eba 7 ff 2424 ebab ff. byte $ff 2425 eba eba eba eba9 ===> befehlstext 'dload"* -er- run <=== 2429 eba9 H runtb.byte 'd'. $cc 2429 ebaa cc 2430 ebab 22 2a.byte... *. $0d 200 ebad Od Z43! ebae 5Z 55 4e.byte run. $0d 201 ebbl Od 202 ebb2 203 ebb2

318 610/710 os-editor3 hard+soft ass/reass..... seite 0053 zeile adr. obj.-code source-code 2434 ebb2 ===> tab. anfangs-addrl bs-zeilen <=== 2435 ebb ebb2 ebb3 ebb4 ebb5 ebb6 ebb7 ebb8 ebb9 ebba ebbb ebbc ebbd ebbe ebbf ebco ebcl ebc2 ebc3 ebc4 ebc5 ebc6 ebc7 ebc8 ebc9 ebca ebcb ebcb ao fo eo do co bo ao fo eo ldtb2.byte <linzo.byte <linzl. byte <linz2.byte <linz3.byte <linz4.byte <linz5.byte <linz6.byte <linz7.byte <linz8.byte <linz9.byte <linzio. byte <linz II.byte <linzl2.byte <linzl3.byte <linzl4.byte <linzl5.byte <linzl6.byte <linzl7.byte <linzl8.byte <linzl9.byte <linz20.byte <linz21.byte <linz22.byte <linz23.byte <linz ebcb ebcb ===> tab. anfangs-addrh der bs-zeilen <=== ebcb ebcc ebcd ebce ebcf ebdo ebdl ebd2 ebd3 ebd4 ebd5 ebd6 ebd7 ebd8 ebd9 ebda do do do do dl dl dl d2 d2 d2 d3 d3 d3 d4 d4 d4 ldtbl.byte >linzo.byte >linzl.byte >linz2.byte >linz3.byte >linz4.byte >linz5. byte >linz6. byte >linz 7.byte >linz8. byte >linz9.byte >linzio. byte >linz II. byte >linz 12.byte >linzl3. byte >linz 14.byte >linzl ebdb d5. byte >linz ebdc d5. byte >linz I ebdd d5. byte >linz ebde d5.byte >linzl ebdf d6.byte >linz ebeo d6. byte >linz ebel d6,byte >linz ebe2 ebe3 d7 d7.byte >linz23.byte >linz ebe ebe4 bildschirm-adr. zeile bildschirm-adr. zeile 2 bildschirm-adr. zeile 3 bildschirm-adr. zeile 4 bildschirm-adr. zeile 5 bildschirm-adr. zeile 6 bildschirm-adr. zeile 7 bildschirm-adr. zeile 8 bildschirm-adr. zeile 9 bildschirm-adr. zeile 10 bildschirm-adr. zeile II bildschirm-adr. zeile 12 bildschirm-adr. zeile 13 bildschirm-adr. zeile 14 bildschirm-adr. zeile 15 bildschirm-adr. zeile 16 bildschirm-adr. zeile 17 bildschirm-adr. zeile 18 bildschirm-adr. zeile 19 bildschirm-adr. zeile 20 bildschirm-adr. zeile 21 bildschirm-adr. zeile 22 bildschirm-adr. zeile 23 bildschirm-adr. zeile 24 bildschirm-adr. zeile 25 bildschirm-adr. zeile I bildschirm-adr. zeile 2 bildschirm-adr. zeile 3 bildschirm-adr. zeile 4 bildschirm-adr. zeile 5 bildschirm-adr. zeile 6 bildschirm-adr. zeile 7 bildschirm-adr. zeile 8 bildschirm-adr. zeile 9 bildschirm-adr. zeile 10 bildschirm-adr. zeile II bildschirm-adr. zeile 12 bildschirm-adr. zeile 13 bildschirm-adr. zeile 14 bildschirm-adr. zeile 15 bildschirm-adr. zeile 16 bildschirm-adr. zeile 17 bildschirm-adr. zeile 18 bildschirm-adr. zeile 19 bildschirm-adr. zeile 20 bildschirm-adr. zeile 21 bildschirm-adr. zeile 22 bildschirm-adr. zeile 23 bildschirm-adr. zeile 24 bildschirm-adr. zeile 25

319 610/110 os-editor3 hard+soft asslreass... seite 0054 zeile adr. obj.-code source-code 2492 ebe4 ===> adress-tab. der control-routinen <=== 2493 ebe ebe4 10 e ebe6 10 e ebe8 10 e ebea lb e ebec b9 e ebee 10 e ebfo 2501 ebf ebh 10 e3 Be e4 10 e ebf6 59 e ebfb 10 e ebfa 10 e ebfc 2507 ebfe 2508 ecoo 2509 ec02 10 e3 93 e3 4c e2 bb e ec04 10 e ec06 13 e ecob 43 e ecoa 49 e ecoc ad e ecoe 10 e ecio 10 e ecl2 10 e ecl4 10 e ecl6 10 e ecib 10 e ecla 10 e eclc 10 e ecle 30 e ec20 10 e3 Z5Z5 eczz 10 e ec ec24 ctable.word cuser-1.word cuser-1.word cuser-1. word s tprun- I.ward ce-1.word cuser-1.ward cuser-1.ward bell- I.ward cuser-1.word tabit-1.ward cuser-1. ward cuser- I.ward cuser-1.ward nxtl-1.ward ctext-1.word window-1.ward cuser-1.word cdnup-1.ward rvsf-1.word homclr-1.ward delins-1. word cuser- I.word cuser-1. word cuser- I. word cuser- I.word cuser-1.word cuser-1. word cuser- I.ward cuser-1.ward crtlf-1.ward cuser-1.ward cuser ec24 ===> länge der funktionstasten-befehle <=== user control-funktionen lind.-vektor) user Cantral-funktionen I ind.-vektor J user control-funktionen lind.-vektor) dload"*" er run er 1$83) löscht letzte eingegebene zahl user control-funktionen I ind. - vektor J user control-funktionen I ind.-vektor J glocke anschlagen 1$07 oder $87} user control-funktionen (ind.-vektor) tab 1$09) - setzen/löschen ($89) user control-funktionen lind.-vektor) user control-funktionen lind.-vektor) user control-funktionen I ind.-vektor J carriage return ($0d oder $8d) umsch. text ($Oe) - graphik l$8e) bs-fenster links oben ($0f) I rechts unten l$8f) user control-funktionen I ind. -vektor J cursorunten 1$11) - oben 1$91) revers an 1$12) - off 1$92) cursor home 1$13) - bs clear ($93) zeichen löschen 1$14), einfügen ( $94) user control-funktionen lind.-vektor) user control-funktionen lind.-vektor) user control-funktionen (ind.-vektor) user control-funktionen lind.-vektor) user control-funktionen lind.-vektor) user control-funktionen I ind. -vektor J user control-funktionen lind. -vektor) user control-funktionen lind.-vektor) cursor rechts I$ ld J - links I $9d J user control-funktionen lind.-vektor)

320 610/710 os-editor3 hard+soft ass/reass... seite 0055 zeile adr. obj.-code source-code 2529 ec ec24 05 keylen.byte $05, $04, $06, $06, $05. $ ec ec ec ec ec ec2a 04. byte $04. $09, $ ec2b ec2c ec2d 05.byte $05 tab. 1 funktionstastenbefehle -I 2533 ecze 2534 ec2e 2535 ec2e ===> tabelle der funktionstasten befehle I t I I <=== 2536 ec2e 2537 ec2e keydef.byte print 2537 ec31 4e ec33 4c byte "list 2538 ec ec c H.byte "dload"" 2539 ec3a ec3d H 53.byte "dsave" 2540 ec " 2541 eco H H 50. byte "dopen 2541 ec e 2542 ec48 H 43 4c. byte dclose 2542 ec4b H ec4e 43 H 50.byte copy 2543 ec ec52 H byte 'directory' 2544 ec H ec5b H ec5b byte "scratch' " 2545 ec5e ec ec byte 'ehr$!' 2546 ec ec ec ec67 ===> bit-tabelle für zeilen-link <=== 2550 ec ec67 80 keyend.byte $80, $40, $20, $10, $08, $ ec ec ec6a ec6b OB 2551 ec6c ec6d 02. byte $02, $ ec6e 0 I 2553 ec6f 2554 ec6f 2555 ec6f codetab. I für bs-crt 6845 <=== ===> 2556 ec6f 2557 ec6f 6c atext.byte $6c 2558 ec byte $50 bildfenster horizontal: 80 zeichen 2559 ec71 53.byte $53 horizontal synch pos.: ec12 Of.byte $0f hori/verti synch widths: 0/ ec byte $19 bildschirm vertikal: 25 zeilen

321 610/710 os-editor3 hard+soft ass!reass... seite 0056 zeile adr. obj.-code source-code 2562 ech 03.byte $03 feinjustierung vertikal: ec75 19.byte $19 bs-fenster vertikal: 25 zeilen 2564 ec76 19.byte $19 vertical synch pos.: ec77 00.byte $00 steuerreg.: alle reg. binär 2566 ec78 Od.byte $0d abtastzeilen/zeichen: ec79 60.byte $60 abtastzeile cursor-obergrenze: 0, blinken ($6xl 2568 ec7a Od.byte $Od abtastzeile cursor-untergrenze: ec7b 00.byte $00, $00 bildschirm start adr. im bs-ram 2569 ec7c ec7d 00.byte $00, $00 cursor-pos. im bildschirmram 2570 ec7e ec7f 00.byte $00, $00 lichtgriffel-adr. bildschirmram 2571 ec ec ec ec81 ===> codetab. 2 für bs-crt 6845 <=== 2575 ec ec81 7e ntext.byte $7e 2577 ec82 50.byte $50 bildfenster horizontal: 80 zeichen 2578 ec83 62.byte $62 horizontal synch pos.: ec84 Oa.byte $Da hori/vert synch widths: 0/ ec85 lf.byte $1f bildschirm vertikal: 25 zeilen 2581 ec86 06.byte $06 feinjustierung vertikal: ec87 19.byte $19 bs-fenster vertikal: 25 zeilen 2583 ec88 lc.byte $1c vertical synch pos.: ec89 00.byte $00 steuerreg.: alle reg. binär 2585 ec8a 07.byte $07 abtastzeilen/zeichen: ec8b 00.byte $00 abtastzeile cursor-obergrenze: 0, cursor fest ec8c 07.byte $07 abtastzeile cursor-untergrenze: 2588 ec8d 00. byte $00, $00 bildschirm start adr. im bs-ram 2588 ec8e ec8f 00.byte $00, $00 cursor-pos. im bildschirmram 2589 ec ec91 00.byte $00, $00 lichtgriffel-adr. im bs-ram 2590 ec ec ec ec93 ===> codetab. 3 für bs-crt 6845 <=== 2594 ec ec93 7f ptext.byte $7f 2596 ec94 50.byte $50 bs-fenster horizontal: 80 zeichen 2597 ec95 60.byte $60 horizontal synch pos.: ec96 Da.byte $Da hori/verti synch widths: 0/ ec97 26.byte $26 bildschirm vertikal: 38 zeilen 2600 ec98 01.byte $01 feinjustierung vertikal: I 2601 ec byte $19 bs-fenster vertikal: 25 zeilen 2602 ec9a le.byte $1e vertical synch pos. : ec9b 00.byte $00 steuerreg.: alle reg. binär 2604 ec9c 07.byte $0 7 abtastzeilenlzeichen: ec9d 00. byte $00 abtastzeile cursor-obergrenze: 0, cursor fest 2606 ec9e 07.byte $07 abtastzeile cursor-untergrenze: 2607 ec9f 00.byte $00, $00 bildschirm start adr. im bs-ram 2607 ecao eca I 00.byte $00, $00 cursor-pos. im bildschirmram 2608 eca2 00

322 610/710 os-editor3 hard+soft ass/reass... seite 0057 zeile adr. obj.-code source-code 2609 eca3 00.byte $00, $00 lichtgriffel-adr. im bs-ram 2609 eca eca eca eca5 ===> prüfbyte rom $eood-$ffff <=== 2613 eca eca5 65 cksume.byte $ eca eca eca6 = $5a 2618 edoo 2619 edoo 2620 edoo ===> anzahl zeilen bs=l, dann pla, pla <=== 2621 edoo 2622 edoo a6 dd bszei 1 ldx scbot unterste zeile bildschirm ( ed02 e4 dc cpx sctop oberste zeile bildschirm ( ed04 do 02 bne bszeib 2625 ed06 68 pla 2626 ed07 68 pla 2627 ed08 2c 9b 03 bszeib bit scrdis scroll disable flag 2628 edob 60 rts 2629 edoc 2630 edoc.end 2631 edoc.lib monitor

323 610/710 os-monitor hard+soft ass/reass.... seite 0058 zeile adr. obj.-code source-code 2633 edoc 2634 edoc = $H 2635 eeoo 2636 eeoo ===> monitor-einsprung evect' <=== 2637 eeoo 2638 eeoo 20 fb f9 monon jsr ioinit i/o register init ee03 20 a2 fb jsr restor standard-vektoren für jsr und interrupts einrichten 2640 ee eo jsr jcint 2641 ee ee ee09 ===> monitor-kaltstart (basic aus) <=== 2644 ee ee09 20 cc ff monoff jsr kclrch ein-iausgabekanal schliessen 2646 eeoc a9 5a lda l$5a 2641 eeoe a2 00 ldx 1$ eeio ao ee ldy l$ee 2649 eel2 20 ca fb jsr vreset 2650 eel5 58 cli 2651 eel eel eel6 ===> monitor-einsprung sys 60950' call <=== 2654 eel eel6 a9 co time lda #$co 2656 eeib Bd sta msgflg message flag 2657 eelb a9 40 lda 1$ eeld 85 bd sta tmpc ablage letzter monitor-befehl 2659 ee lf do 10 bne b ee ee ee21 ===> monitor-einsprung 'break-vektor' <=== 2663 ee ee21 20 cc ff timb jsr kclrch ein-/ausgabekanal schliessen 2665 ee24 a9 53 lda 1$ ee26 85 bd sta tmpc ablage 4etzter monitor-befehl ee28 db cld 2668 ee29 a2 05 ldx 1$ ee2b 68 bl pla 2670 ee2c 95 ae sta pch,x addrh programmzähler pc ee2e ca dex 2672 ee2f 10 fa bpl bl 2673 ee31 a5 01 b3 lda i indirection register 2614 ee33 85 b5 sta xi6509 alte indirection bank 2675 ee35 ad lda cinv addrl irq vector 2676 ee38 85 bb sta invl addrl user interrupt-vektor 2677 ee3a ad 0 I 03 lda cinv l addrh irq vector 2678 ee3d 85 b7 sta invh addrh user interrupt-vektor 2619 ee3f ba tsx 2680 ee40 86 b4 stx sp stack-pointer sp 2681 ee42 58 cli 2682 ee43 a9 OB lda #$ ee45 85 bf sta ddisk lfd. disk-primäradr. für monitor 2684 eeh a4 bd ldy tmpc ablage letzter monitor-befehl 2685 ee49 20 lc f2 jsr spmsg test errorflag, ausgabe systemmeldung 2686 ee4c a9 52 lda 1$ ee4e do 27 bne so monitor-befehl lesen Ieinsprung von usrcmdl

324 610/710 os-monitor hard+soft ass/reass..... seite 0059 zeile adr. obj.-code source-code 2688 ee ee ee50 ===> mon-error, ausgabe.?. er <=== 2691 ee ee ef erropr jsr outqst ausgabe ascii "fragezeichen' 2693 ee53 68 pla 2694 ee54 68 pla 2695 ee55 a9 co lda ll$co 2696 ee57 Bd sta msgflg message flag 2697 ee5a a9 00 lda 11$ ee5c sta fnadr addrl akt. filename 2699 ee5e a9 02 lda 11$ ee sta fnadr+l addrh akt. filename 2701 ee62 a9 Of lda ll$0f 2702 ee sta fnadr+z bank akt. filename 2703 ee ef jsr crlf ausgabe mon-prompter er 2704 ee ee ee69 ===> sprung monitor-erweiterung <=== ee ee69 20 cf ff stl jsr kbasin eingabe 1 char vom aktiven kanal in ac lchn-vectorl 2709 ee6c c9 Ze cmp ll$2e 2710 ee6e fo f9 beq stl sprung monitor-erweiterung ee70 c9 20 cmp t$ ee72 fo f5 beq stl sprung monitor-erweiterung eeh 6c le 03 jmp lusrcmd) addrl monitor erweiterung-vector 2714 ee ee ee77 ===> monitor-befehl lesen Ieinsprung von usrcmd) <=== 2717 ee ee77 al 00 so ldx 11$ ee d stx fnlen länge akt. filename 2720 ee7b ab tay 2721 ee7c a9 ee lda ll$ee 2722 ee7e 48 pha 2723 ee7f a9 54 lda 1$ eebi 48 pha 2725 ee82 98 tya 2726 ee ee ee83 ===> mon-befehl mit tabelle vergleichen <=== 2729 ee ee83 dd d5 ee s 1 cmp cmds,x tabeile monitor-befehle/adressen 2731 ee86 do 10 bne sz nächster mon-befehl 2732 ee88 Bd sta savx kernalvariable temporär 2733 ee8b bd d6 ee lda cmds +I, x 2734 ee8e 85 b9 sta tmpl addrl monitor zwei-byte zeiger 2735 ee90 bd d7 ee lda cmds.,., + 1, x 2736 ee93 85 ba sta tmpl+l addrh monitor zwei-byte zeiger ee95 6c b9 00 jmp ltmpl J addrl monitor zwei-byte zeiger 2738 ee ee ee98 ===> nächster mon-befehl <=== ee98 2HZ ee98 e8 sz inx 270 ee99 e8 inx 27H ee9a e8 inx

325 610/710 os-monitor hard+soft ass/reass.... seite 0060 zeile adr. obj.-code source-code 2745 ee9b 2746 ee9d 2747 ee9f 2748 eeal 2749 eea I eo e4 a2 00 cpx 11$24 bcc sl ldx 11$ eeal ===> eingabe name mon-disk-befehl <=== eea I 2752 eea I c9 Od s3 cmp ll$0d 2753 eea3 fo Od beq s eea5 c9 20 cmp 11$ eea7 fo 09 beq s eea9 9d sta buf,x 2757 eeac 20 cf ff jsr kbasin 2758 eeaf 2759 eebo 2760 eeb eeb2 eb do ef 85 9d a9 40 Bd a5 bf 85 9f a9 Of a2 ff ao ff 20 d5 ff bo 05 a5 bd Sc 99 oo 60 s6 inx bne s3 mon-befehl mit tabelle vergleichen kein mon-befehl, befehl von disk kein mon-befehl, befehl von disk basic input-puffer -$2ff eingabe I char vom aktiven kanal in ac lchn-vectorl eingabe name mon-disk-befehl 2762 eeb2 ===> kein mon-befehl, befehl von disk <=== 2763 eeb eeb2 85 bd s4 sta tmpc ablage letzter monitor-befehl 2765 eeb4 Ba txa 2766 eeb5 fo ld beq s6 sta fnlen länge akt. filename lda 11$40 sta msgflg message flag lda ddisk lfd. disk-primäradr. für monitor s ta fa akt. primiradresse lgeräte-nummerl lda ll$0f sta i indirection register ldx ll$ff ldy l$ff jsr kload einlesen vom log. file bcs s6 lda tmpc ablage letzter monitor-befehl jmp Istall addrl anfang akt. load/store Z eeb7 eeb9 eebb eebe eeco eec2 eec4 eec6 eecb eeca eecd eecf eedl eed4 eed4 eed4 eed5 eed5 eed5 eed5 eed5 eed6 eedb eed9 eedb eedc eede eedf eeel eeez eee4 eee5 eee 7 rts ===> tabelle monitor-befehle/adressen <=== 3a f5 ef 3b cb ef 52 4c ef 4d Bf ef fo 4c 4a fo 53 cmds.byte. word altm.byte.word altr.byte r.word dsplyr.byte 'm'.word dsplym.byte g.word go.byte '1.ward ld.byte s mon-befehl ram mon-befehl mon-befehl (16byt} mon-befehl r m registerzeile ins registerausgabe druckt memoryzeile g goto xxxxxx mon-befehl '1 =load, s =save

326 610/710 os-monitor hard+soft ass/reass.... seite 0061 zeile adr. obj.-code source-code 2800 eee eeea 2802 eeeb 2803 eeed 2804 eeee 2805 eefo 2806 eefl 4a fo 56 e I ef fl 5a 72 ff eef eef4 f9 ee 2809 eef eef7 eb ef 2811 eef eef9.ward ld.byte v.ward view.byte.ward disk.byte z.ward kipcgo.byte x.ward xeit.byte u.ward unitd 2813 eef9 ===> mon-befehl x =ende <=== 2814 eef eef9 68 xeit pla 2816 eefa 68 pla 2817 eefb 78 sei 2818 eefc 6c f8 03 jmp levectl 2819 eeff 2820 eeff 2821 eeff ===> adr. von tmpl nach pcl <=== 2822 eeff a5 b9 85 af a5 ba 85 ae 60 putp lda tmp I sta pcl lda tmp1+1 sta pch rts eeff efoi ef03 ef05 ef07 ef08 ef08 efob efob efob efoa efoc efoe efio efl2 efl4 efl6 efl7 efl7 efl7 efl7 efl7 efl8 eflb eflc eflf eflf eflf eflf eflf ef21 ef22 ef22 ef22 ===> sr, ac setzen, bank= $f <=== a9 bo 85 b9 a9 oo 85 ba a9 Of a setr lda 11$b0 sta tmpl lda 11$00 sta tmpl+l lda II$Of sta i6509 lda 11$05 rts mon-befehl "l "=load, s =save mon-befehl v = bankswitch mon-befehl = disk-kurzbefehle mon-befehl z umsch. auf coprozessor mon-befehl ===> ausgabe 'er' ac + space <=== ef d2 ff altrit pha jsr crlf pla jsr kbsout ===> ausgabe ascii space <=== a9 20 2c space lda #$20.byte $2c ===> ausgabe ascii 'Fragezeichen <=== x"=ende mon-befehl u = ändern diskadresse addrl warmstart-vector addrl monitor zwei-byte zeiger addrl programmzähler pc addrh monitor zwei-byte zeiger addrh programmzihler pc addrl monitor zwei-byte zeiger addrh monitor zwei-byte zeiger 6509 indirection register ausgabe mon-prompter er' ausgabe 1 char auf akt. kanal

327 610/710 os-monitor hard+soft ass/reass.... seite 0062 zeile adr. obj.-code source-code 2857 ef ef22 a9 3f ef24 ef27 ef27 4c d2 ff outqst lda #$3f jmp kbsout 2862 ef27 ===> ausgabe mon-prompter er 2863 ef ef27 ef29 ef2c ef2e ef31 a9 Od 20 d2 ff a9 2e 4c d2 ff crlf lda #$0d jsr kbsout lda #$2e jmp kbsout ausgabe 1 char auf akt. kanal <=== ausgabe ausgabe 2869 ef ef31 ===> kopf für cpu-register ausgabe <=== 2871 ef ef31 Od regle 2873 ef ef ef ef3b ef3e eh! efh efh eha ehe 2875 ehe.byte $Od.byte pc irq sr ac xr yr sp 2876 ef4c ===> mon-befehl r = registerausgabe <=== 2877 ehe 2878 ef4c a2 00 dsplyr ldx #$ ehe 2880 ehe 2881 ef4e ===> cpu-register ab xr ausgeben <=== char auf akt. kanal char auf akt. kanal 2882 ehe ehe ef51 ef54 ef55 ef57 ef59 bd 31 ef d2 20 d2 ff eb eo lb do f5 a9 3b lda regk.x jsr kbsout inx cpx #$1b bne d2 lda #$3b kopf für cpu-register ausgabe ausgabe 1 char auf akt. kanal cpu-register ab xr ausgeben 2889 ef5b ef jsr al tri t ausgabe er + ac + space ef5e ef60 ef62 ef65 ef68 ef6a ef6c ef6f a6 ae a4 af 20 f6 fo 20 lf ef a6 b7 a4 bb 20 f6 fo ef ldx pch ldy pcl jsr wroa jsr space ldx invh ldy invl jsr wroa jsr setr addrh programmzählet pc addrl programmzähler pc ausgabe xr/yr als vier ascii-bytes ausgabe ascii space addrh user interrupt-vektor addrl user interrupt-vektor ausgabe xr/yr als vier ascii-bytes sr. ac setzen, bank= $f 2898 ef ef ef72 ===> druckt spc, hexdump ab $69, länge in $bd <=== 2901 ef ef72 ef74 85 bd ao 00 dm sta tmpc ldy #$00 ablage letzter monitor-befehl sty fnlen länge akt. filename 2904 ef d 2905 ef ef78

328 610/710 os-monitor hard+soft ass!reass... seite 0063 zeile adr. obj.-code source-code 2907 ef78 ===> druckt spc, hexdump ab $69 + yr <=== 2908 ef ef78 20 lf ef dml jsr space 2910 ef7b b I b9 lda ltmpl},y 2911 efld 20 fb (0 jsr wrob 2912 efbo e6 b9 inc tmpl 2913 ef82 do 06 bne dm efh e6 ba inc tmpl+l 2915 ef86 do 02 bne dm efbb c6 9d dec fnlen 2917 efba c6 bd dm2 dec tmpc 2918 efbc do ea bne dml 2919 efbe 60 rts 2920 efbf 2921 efbf ausgabe ascii space addrl monitor zwei-byte zeiger I ausgabe ac als ascii-doppelbyte addrl monitor zwei-byte zeiger I addrh monitor zwei-byte zeiger länge akt. filename ablage letzter monitor-befehl druckt spc, hexdump ab $69 + yr 2922 efbf ===> mon-befehl m =druckt memoryzeile l16byt) <=== 2923 efbf 2924 efbf fo dsplym jsr rdoae SI 29S2 ef92 ef95 ef98 ef9a ef9c ef9e efao efa2 efas efab efaa efac efaf efbl efb3 efb6 efbb fl fl 90 OB as bb BS b9 as bc 85 ba fl 20 e I ff (0 20 a9 Ja ef a6 ba a4 b9 20 (6 (0 a ef efbb as 9d efbd do Ob efbf 38 efeo as bb efe2 es b9 efc4 as bc efc6 es ba efcb bo db efca 60 efcb efcb dspl23 dspl begsl jsr t2t2 jsr rdoa bcc dspl23 lda tmp2 sta tmpl lda tmp2+1 sta tmpl+ I jsr t2t2 jsr kstop beq begsl lda l$3a jsr altri t ldx tmpl+l ldy tmp I jsr wroa lda 1$10 jsr dm lda fnlen bne begsl sec lda tmp2 sbc tmpl lda tmp2+1 sbc tmpl+l bcs dspl rts 4 zeichen nach hex in tmpl, bcs=error tmpl mit tmp2 vertauschen 4 zeichen nach hex in tmpl 29S3 efcb ===> mon-befehl ';' = registerzeile ins ram <=== 2954 efeb 29SS efcb (0 altr jsr rdoae 29S6 efce 20 ff ee 29S7 efdl fo 29S8 efd4 a5 b9 29S9 efd6 BS bb 2960 efdb a5 ba jsr putp jsr rdoae lda tmp I sta invl lda tmpl+l addrl monitor zwei-byte zeiger 2 addrl monitor zwei-byte zeiger addrh monitor zwei-byte zeiger 2 addrh monitor zwei-byte zeiger tmpl mit tmp2 vertauschen stop-taste lesen ausgabe er + '. ', ac + space addrh monitor zwei-byte zeiger addrl monitor zwei-byte zeiger ausgabe xr/yr als vier ascii-bytes druckt spe, hexdump ab $69, länge in $bd länge akt. Filename addrl monitor zwei-byte zeiger 2 addrl monitor zwei-byte zeiger I addrh monitor zwei-byte zeiger 2 addrh monitor zwei-byte zeiger I zeichen nach hex in tmpl, bcs=error adr. von tmpl nach pcl 4 zeichen nach hex in tmpl, bcs=error addrl monitor zwei-byte zeiger addrl user interrupt-vektor addrh monitor zwei-byte zeiger

329 610/710 os-monitor hard+soft ass/reass.... seite 0064 zeile adr. obj.-code source-code 2961 efda 85 b efdc ef 296J efdf do efe I 2965 efe I 2966 efe I efe I 2968 efel 20 Ja fo view 2969 efe efe efe J efea efeb efeb efeb efeb sta invh jsr setr bne a4 ===> mon-befehl 'v' = bankswitch <=== c9 10 bo 5f rts jsr rdobe cmp 1$10 bcs errl sta i6509 ===> mon-befehl u = jndern diskadresse <=== 2977 efeb 20 Ja fo unitd jsr rdobe addrh user interrupt-vektor sr, ac setzen, bank= $f 2 zeichen (lbytl nach hex in ac, bcs=error mon-error, ausgabe '? ', er', 6509 indirection register 2 zeichen (lbytl nach hex in ac, bcs=error 2978 efee c9 20 cmp 1$ effo bo 55 bcs errl 2980 eff2 85 bf sta ddisk 2981 efh 60 rts 2982 eff5 298J eff eff5 ===> mon-befehl ': = memoryzeileins ram (16 byt} <=== 2985 eff eff fo altm 2987 eff effa 2989 effc 2990 efff 2991 fooi 2992 fooj 299J f f f foob 2997 food 2998 foof 2999 foio JOOO foio a bd 20 JO fl bo Oe ao oo 91 b9 e6 b9 do 02 e6 ba c6 bd do ed 60 a4 a5 a6 a9 jsr rdoae lda 1$10 sta tmpc jsr rdob bcs a9 ldy 1$00 s t a ( tmp I I, y inc tmpl bne a6 inc tmpl+l dec tmpc bne a5 rts JOOI foio ===> mon-befehl 'g' goto XXXXXX < J002 foio JOOJ foio 20 5f fl go jsr rdoc eingabe J004 foij fo 06 beq gl J005 f fo jsr rdoae J006 fo 18 J007 foib J008 foid J009 foie JOIO foif 3011 f021 J012 f024 JOIJ f026 JO 14 f ff ee a6 b4 9a 78 a5 b7 Bd a5 bb Bd a5 b5 gl jsr putp ldx sp txs sei lda invh sta cinv+1 lda invl sta cinv lda xi6509 mon-error, ausgabe '?','er',.' lfd. disk-primjradr. für monitor 4 zeichen nach hex in tmpl, bcs=error ablage letzter monitor-befehl 2 zeichen (lbytl nach hex in ac addrl monitor zwei-byte zeiger addrl monitor zwei-byte zeiger addrh monitor zwei-byte zeiger ablage letzter monitor-befehl char.in ac, test er 4 zeichennachhex in tmpl, bcs=error adr. von tmpl nach pcl stack-pointer sp addrh user interrupt-vektor addrh irq vector addrl user interrupt-vektor addrl irq vector alte indirection bank

330 610/710 os-monitor hard+soft ass/reass.... seite 0065 zeile adr. obj.-code source-code 3015 f02b f02d a f02f b5 ae 3018 f f032 e f033 f035 f037 f03a f03a f03a f03a f03a f03d f03f eo 06 do f8 4c a5 fc g2 sta i6509 ldx 1$00 lda pch,x pha inx cpx 1$06 bne g2 jmp prend 6509 indirection register addrh programmzählet pc irq-ende, stacknach yr,xr,ac ===> 2 zeichen {lbytl nach hex in ac, bcs=error <=== fl bo 06 rdobe jsr rdob bcs errlpl 2 zeichen {lbyt} nach hex in ac 60 rdoxit rts 3030 f f040 f040 ===> 4 zeichennachhex in tmpl, bcs=error <=== 3033 f f fl rdoae jsr rdoa 4 zeichen nach hex in tmpl 3035 foo 3036 f f foh 3039 f04a H f04a f04a f04a f04a f04c f04e foh f051 f053 f055 f057 f059 f05b f05d f060 f062 f064 f066 f068 f06a f06d f06f f071 f073 f075 f077 f078 f07a fo 7c f07e f081 f083 f fa c 50 ee bcc rdoxit errlpl pla pla errl jmp erropr mon-error, ausgabe "?" er, ===> mon-befehl '1 '=load, s =save <=== ao f 88 a9 ff 85 b9 85 ba a be a9 Of f f1 fo lc c9 20 fo f7 c9 22 do dd 20 5f f1 fo Of c9 22 fo ld e6 9d c8 co 10 fo cb do ec ad c9 4e do e3 a5 be ld ldy 1$01 sty fa dey lda l$ff sta tmp1 sta tmpl+l lda i6509 sta t6509 lda ISOf sta i6509 jsr rdoc beq 15 cmp #$20 beq 11 cmp #$22 bne errl jsr rdoe beq 15 cmp #$22 beq 18 sta lfnadr},y inc fnlen iny cpy 1$10 beq errl bne 13 lda savx cmp #$4c bne 12 lda t6509 akt. primäradresse {geräte-nummerl addrl monitor zwei-byte zeiger addrh monitor zwei-byte zeiger 6509 indirection register laufende 6509 indirection bank 6509 indirection register eingabe 1 char. in ac, tes t er mon-error, ausgabe '?","er",. eingabe I char.in ac, test er addrl akt. filename länge akt. Filename mon-error, ausgabe?, er, kernalvariable temporär laufende 6509 indirection bank

331 610/710 os-monitor hard+soft ass/reass.... seite 0066 zeile adr. obj.-code source-code 3073 f Of 3014 f089 a6 b f08b a4 ba 3016 f08d 4c d5 ff 3077 f f f f fl f093 fo e f095 c9 2c 3082 f097 do cf f a fo 3084 f09c 85 9f 3085 f09e 20 5f fl 3086 foal fo db 3081 f0a3 c9 2c 3088 f0a5 do fo f0a7 20 3a fo foaa foac foae fobo f0b2 f0b5 f0b7 f0b9 fobb fobd foco f0c2 f0c4 f0c6 f0c9 focb focd focf f0d2 f0d4 f0d6 f0d8 foda fodd fodf foe I f0e3 f0e5 f0e8 foea foec foee c9 10 bo be 85 9b fo a5 b a5 ba 85 9a 20 5f fl fo bc c9 2c do 2d 20 Ja fo c9 10 bo fo a5 b a5 ba cf ff 120 c9 20 fo f9 c9 Od do co 114 ad c9 53 do f7 a2 99 ao fofo 4c d8 ff 3123 f0f f0f3 and tl$0f ldx tmpl ldy tmpl+l jmp kload jsr rdoc beq l5 cmp tt$2c bne 12 jsr rdobe sta fa jsr rdoc beq l5 cmp l$2c bne 19 jsr rdobe cmp 1$10 bcs 115 sta t6509 sta stas jsr rdoae lda tmpl sta stal lda tmpl+l sta stah jsr rdoc beq l5 cmp l$2c bne 115 jsr rdobe cmp 1$10 bcs 115 sta eas jsr rdoae lda tmpl sta eal lda tmp I+ I sta eah jsr kbasin cmp 1$20 beq 120 cmp l$0d bne 112 lda savx cmp 1$53 bne l 14 ldx tl$99 ldy 11$96 jmp ksave addrl monitor zwei-byte zeiger addrh monitor zwei-byte zeiger einlesen vom log. file eingabe I char.in ac, test er 2 zeichen llbytl nach hex in ac, bcs=error akt. primäradresse lgeräte-nummerl eingabe I char.in ac, test er 2 zeichen llbyt) nach hex in ac, bcs=error mon-error, ausgabe '?', 'er', '. ' laufende 6509 indirection bank bank anfang akt. load/store 4 zeichen nach hex in tmpl, bcs=error addrl monitor zwei-byte zeiger addrl anfang akt. load/store addrh monitor zwei-byte zeiger addrh anfang akt. load/store eingabe I char.in ac, test er mon-error, ausgabe '?','er','.' 2 zeichen llbyt) nach hex in ac, bcs=error mon-error, ausgabe '?','er', bank ende akt. load/store 4 zeichen nach hex in tmpl, bcs=error addrl monitor zwei-byte zeiger addrl ende akt. load/store addrh monitor zwei-byte zeiger addrh ende akt. load/store eingabe I char vom aktiven kanal in ac lchn-vectorl kernalvariable temporär abspeichern auf log. file

332 610/710 os-monitor hard+soft ass/reass.... seite 0067 zeile adr. obj.-code source-code 3125 f0f3 4c 50 ee f0f f0f6 jmp erropr mon-error, ausgabe?, er, f0f6 ===> ausgabe xr/yr als vier ascii-bytes <=== 3129 f0f f0f6 Ba wroa 31}1 f0f7 20 fb fo 3132 fofa fofb 3134 fofb txa jsr wrob tya 3135 fofb ===> ausgabe ac als ascii-doppelbyte <=== 3136 fofb 3137 fofb fofc 4a 3139 fofd 4a fofe foff fioo 4a 4a fl 3143 fl03 aa 31H fl fl05 29 Of 3146 f fl07 wrob pha lsr a lsr a lsr a lsr a jsr ascii tax pla and #$0f 3148 fl07 ===> umwandlung I hexbyte nach ascii <=== 3149 fl fl fl fioa 3153 fioc 3154 f10e 3155 f " f f f fll fll fll f flla 3165 fllc 3166 flld fllf 3168 fl fl fl fl fl23 3 I 73 fl fl fl fl fl2a 3178 flld f Ja 4c d2 ff ascii ascl clc adc #$f6 bcc asc1 adc #$06 adc #$3a jmp l<bsout ===> tmpl mit tmp2 vertauschen <=== a2 02 b5 b8 48 b5 ba 95 b ba ca do f3 60 t2t2 ldx #$02 t2t21 lda invl,x pha lda tmpl+l,x sta invl,x pla sta tmpl+l,x dex bne t2t21 rts ===> 4 zeichen nach hex in tmpl <=== fl bo ba fl 85 IJ9 rdoa 3179 fl2f 60 rdoa2 rts jsr rdob bcs rdoa2 sta tmpl+l jsr rdob sta tmpl fl30 fl30 fl30 ===> 2 zeichen llt:jytl nach hex in ac <=== ausgabe ac als ascii-doppelbyte umwandlung I hexbyte nach ascii ausgabe I char auf al<t. l<anal addrl user interrupt-vel<tor addrh monitor zwei-byte zeiger addrl user interrupt-vel<tor addrh monitor zwei-byte zeiger 2 zeichen llbytl nach hex in ac addrh monitor zwei-byte zeiger I 2 zeichen (lbytl nach hex in ac addrl monitor zwei-byte zeiger 1

333 610/710 os-monitor hard+soft ass/reass..... seite 0068 zeile adr. obj.-code source-code 3183 fl fl fl fl fl fl3a 3189 fl3c a9 00 8d f fl fo 19 c9 20 fo f fl3e fl 3191 fhi Oa 3192 fl42 Oa 3193 fl43 Oa 3194 fih Oa 3195 fl45 8d fl f fl 3197 fl4b fo fl4d fl 3199 fl50 Od fl53 60 rdob4 rdob lda #$00 sta stack jsr rdoc beq rdob4 cmp #$20 beq rdob jsr hexit asl a asl a asl a asl a sta stack jsr rdoc beq rdob4 jsr hexit ora stack rts 3201 fl fl fl54 ===> ac nach hex umwandeln <=== 3204 fl fl54 c9 3a 3206 fl fl57 29 Of 3208 fl fl5a fl5c fl5e fl5f 3213 fl5f hexi t hex09 cmp #$3a php and #$0f plp bcc hex09 adc 1$08 rts 3214 fl5f ===> eingabe I char.in ac, test er <=== 3215 fl5f 3216 fl5f 20 cf ff rdoc 3217 f fl f fl I fl65 fl65 fl65 fl6 7 fl69 fl6b fl6d fl6f c9 Od f172 f173 fl76 fl78 fl7b fl 7d f 17e fl80 f183 fo ld 3238 fl84 bo 34 ===> mon-befehl a c 85 9d a6 bf ao Of fb co ff bo f fl 48 az oo 20 c9 ff 68 disk jsr kbasin cmp l$0d rts disk-kurzbefehle <=== lda 1$00 sta status sta fnlen ldx ddisk ldy l$0f jsr setlfs clc jsr kopen bcs disk30 jsr rdoc beq disk20 pha ldx 1$00, jsr kckout pla bcs disk cpu-stack eingabe I char.in ac, test er 2 zeichen llbyt) nach hex in ac ac nach hex umwandeln 6509 cpu-stack eingabe I char.in ac, test er ac nach hex umwandeln 6509 cpu-stack eingabe 1 char vom aktiven kanal in ac (chn-vectorj i/o Operation status länge akt, Filename lfd. disk-primäradr. für monitor log., geräte- und sekundäradr. aktualisieren log. file Öffnen/befehl ausgeben eingabe I char.in ac, test er ausgabekanal öffnen

334 610/710 os-monitor hard+soft ass/reass.... seite 0069 zeile adr. obj. -code source-code 3239 f1b bcc disk fibb 20 cf ff diskio jsr kbasin eingabe 1 char vom aktiven kanal in ac (chn-vectorj 3241 fibb c9 Od disk15 cmp #$0d 3242 fibd OB php 3243 fibe 20 d2 ff jsr kbsout ausgabe 1 char auf akt. kanal 32H f191 a5 9c lda status i/o operation status 3245 f193 do 21 bne disk2b 3246 f195 2B plp 3247 f196 do fo bne diskio 324B f19b fo 20 beq disk f19a ef disk20 jsr crlf ausgabe mon-prompter er 3250 f19d a2 00 ldx #$ f19f 20 c6 ff jsr kchkin eingabekanal öffnen 3252 fla2 bo 16 bcs disk f Ia f fl disk25 jsr rdoc eingabe char.in ac, test er 3254 fla7 OB php 3255 flab 20 d2 ff jsr kbsout ausgabe char auf akt. I< anal 3256 flab a5 9c lda status i/o operation s ta tus 3257 flad 29 bf and #$bf 325B flaf do 05 bne disk2b 3259 flb 1 2B plp 3260 flb2 do fo bne disk flb4 fo 04 beq disk flb6 6B disk2b pla 3263 flb f9 jsr error5 ausgabe "ilo error: 5' 3264 flba 20 cc ff disk30 jsr kclrch ein-/ausgabekanal schliessen 3265 flbd a9 00 lda #$ flbf IB clc 3267 flco 4c c3 ff jmp kclose logisches file schliessen 326B flc flc3.end 3270 flc3.lib kernall

335 610/710 os-kernall hard+soft ass/reass... seite 0070 zeile adr. obj.-code source-code 3272 flc flc3 ===> tabeile der betriebssystem-meldungen <=== 3214 flc flc3 Od msl.byte $0d 3216 flc4 49 2f H.byte "i/o error $a3, $0d 3216 flc7 20 H flca 52 H flcd flce a flcf Od 3211 fldo fld " fld6 49 4e H 3271 fld9 ao 3278 flda H H 52.byte 'for', $a0, $0d 3218 fldd ao 3218 flde Od " 3279 fldf 4c H 3219 fle2 H 49 4e 3219 fle5 c fle6 Od 3280 fle7 53.byte searching, $a0.byte 'loadin, $c1, $0d " 56.byte sav~ng 3280 flea 49 4e H Sao, $0d 3280 fled ao 3280 flee Od 3281 flef byte verifyin $c7, $0d 3281 f lf flf5 49 4e 3281 flf7 c flf8 Od 3282 flf9 H H 55.byte found, Sao, $0d 3282 flfc 4e H 3282 flfe ao 3282 flff Od 3283 f200 H 4b.byte 'ok, $8d, $Od 3283 f202 8d 3283 f203 Od 3284 f204 2a 2a 20.byte monitor $8d, 3284 f201 4d H 4e 3284 f20a H 3284 f20d f210 2e f213 2a 2a 3284 f215 8d 3284 f216 Od 3285 f217 H 52 H.byte "brea Scb 3285 f21a " 3285 f21b cb 3286 f21c 3287 f21c 3288 f21c ===> test errorflag, ausgabe systemmeldung <=== 3289 f21c 3290 f21c 2c spmsg bit msgflg message flag 3291 f21f 10 Od bpl msgio JZ9Z fzz! 3293 f f221 ===> ausgabe systemmeldung, offset=yr <=== 3295 f221 $Od

336 610/710 os-kernall hard+soft ass/reass... seite 0071 zeile adr. obj.-code source-code 3296 f221 b9 c3 fl msg f f f 3299 f d2 ff 3300 f22a c f22b f22c 10 f f22e 18 msgio 3304 f22f f f f f f f232 do f f2h lda ms I, y php and l$7f jsr kbsout iny plp bpl msg clc rts ===> talk auf iec-bus ausgeben <=== ntalk ora 11$40 bne listl 3313 f234 ===> listen auf iec-bus ausgeben <=== 33" f f f f f f23c 3320 f23e 3321 f f2h 3323 f f f24b 3326 f24d 3327 f f f f f25a 3332 f25c 3333 f25e 3334 f f f f f26b a9 3f Bd 03 de a9 ff 8d 00 dc 8d 02 dc a9 fa Bd 00 de a5 aa 10 lb ad 00 de 29 df 8d 00 de a5 ab 20 b9 f2 a5 aa 29 7f 85 aa ad 00 de d 00 de ad 00 de 29 f f26d 8d 00 de 3340 f f271 4c b9 f f f f274 f2 74 f274 f2 7 7 f27a f2 7c f27f 3351 f f280 nlistn ora 11$20 listl pha lda 1$3f sta tril ddpa lda 1$ff sta cia+pra sta cia+ddra lda l$fa sta tril+pa lda c3po bpl list2 lda tril pa and l$df sta tri l pa lda bsour jsr tbyte lda c3po and I$ 7f sta c3po lda tril+pa ora 11$20 sta tri l pa list2 lda tril pa and 11$f7 sta tril pa pla jmp tbyte ===> sekundäradr. nach listen ausgeben <=== 20 b9 f2 ad 00 de Bd 00 de 60 nsecnd jsr tbyte scatn lda tril pa ora #$08 sta tril pa rts tabelle der betriebssystem-meldungen ausgabe I char auf akt. kanal ausgabe systemmeldung, offset=yr 6525 triport 1: data direct.reg. a 6526 cia: periph. data reg.a (pral 6526 cia: data direct.reg.a lddral 6525 triport I: port reg. a ieee puffer flag 6525 triport 1: port reg. a 6525 triport 1: port reg. a ieee zeichen puffer ac auf iec-bus lohne eof-flag} ieee puffer flag ieee puffer flag 6525 triport 1: port reg. a 6525 triport 1: port reg. a 6525 triport 1: port reg. a 6525 triport 1: port reg. a ac auf iec-bus lohne eof-flagl ac auf iec-bus lohne eof-flag} 6525 triport 1: port reg. a 6525 triport 1: port reg. a 3353 f280 ===> akt. sekundäradr. auf iec-bus ausgeben <===

337 610/710 os-kernall hard+soft ass/reass seite 0072 zeiie adr. obj.-code source-code 3354 f f f f f f28b 3360 f28d 3361 f f f f f b9 f2 a9 39 2d 00 de 8d 00 de a9 c7 8d 03 de a9 oo 8d 02 dc fo eo ntksa jsr tbyte tka tn lda 1$39 and tril+pa setins sta tril+pa I da 1$c 7 sta tril+ddpa lda 1$00 sta cia+ddra beq scatn 3366 f297 ===> ac auf iec-bus!mit eof-fiag) <=== 3367 f f f298 a5 aa 3370 f29a f29c 3312 f29e 3373 f2a I 3314 f2a f2a f2a f2a f2aa 3379 f2ab 3380 f2ab a5 ab 20 b9 f2 a5 aa aa ab 60 nciout pha Ida c3po bpl ci I Ida bsour jsr tbyte Ida c3po ci I ora 1$80 sta c3po pla sta bsour rts 3381 f2ab ===> untalk auf iec-bus ausgeben <=== 3382 f2ab 3383 f2ab 3384 f2ad 3385 f2af 3386 f2af a9 5f do 02 nuntlk Ida l$5f bne unisl 3387 f2af ===> unlisten auf iec-bus ausgeben <=== 3388 f2af 3389 f2af 3390 f2bl 3391 f2b f2b f2b f2b f2b f2b f2bb 3399 f2be 3400 f2c I 340 I f2c f2c f2c f2cb 3405 f2cd 3406 f2cf 3407 f2d fzd4 a9 3f f2 a9 f9 4c 88 f2 nunlsn lda l$3f unlsl jsr Iistl Ida 1$f9 jmp setins f2b9 ===> ac auf iec-bus lohne eof-flag) <=== 49 ff 8d 00 dc ad 00 de d oo de 2c oo de a f fb do 30 ad 00 de 3409 f2d7 10 fb 3410 f2d9 29 ef 3411 f2db 8d 00 de tbyte tby2 eor 1$ff sta cia+pra lda tril+pa ora 1$12 sta tri l+pa bit tril+pa bvc tby2 bpi tby2 lda 1$80 jsr udst bne tby7 lda tri1+pa bpl tby2 and l$ef sta tril+pa ac auf iec-bus (ohne eof-flag) 6525 triport 1: port reg. a 6525 triport 1: port reg. a 6525 triport 1: data direct.reg. a 6526 cia: data direct.reg.a lddral ieee puffer fiag ieee zeichen puffer ac auf iec-bus lohne eof-flagl ieee puffer flag ieee puffer flag ieee zeichen puffer 6526 cia: periph. data reg.a (pral 6525 triport 1: port reg. a 6525 triport 1: port reg. a 6525 triport 1: port reg. a 'ora' ac in status 6525 triport 1: port reg. a 6525 triport 1: port reg. a

338 610/710 os-kernall hard+soft ass/reass..... seite 0073 zeile adr. obj.-code source-code 3412 f2de 20 6f f3 tby3 jsr timero 3413 f2el , f2e3 f2e4 f2e7 f2e9 f2ec f2ee f2f0 f2f3 f2f5 f2f7 f2f9 f2fc f2ff f c 00 de ad Od dc fo H ad 5e e9 90 ec a f fb ad 00 de Bd 00 de 3428 f304 a9 ff 3429 f306 Bd oo dc 3430 f I f30a 3432 f30a tby3t tby4 tby6 tby7 bcc tby4 sec bit tril+pa bvs tby6 lda cia+icr and tt$02 beq tby4 lda timout bmi tby3 bcc tby3t lda 1$0 I jsr udst lda tril+pa ora tt$10 sta tril+pa lda tt$ff sta cia+pra rts 3433 f30a ===> byte von iec nach ac <=== 3434 f30a 3435 f30a ad 00 de nrbyte lda tril+pa 3436 f30d 29 b9 and l$b f30f 09 BI ora #$ f3" Bd oo de sta tril+pa 3439 f3" 20 6f f3 rbyl jsr timero 3440 f HI 3HZ 3H3 f319 f31a f31d H4 3H5 3H6 3H 7 3HB 3H f31f f321 f324 f326 f328 f32b f32d f32f f331 f334 f337 f339 f33c f33e f33f f33f f33f f342 f3h f3h f349 f34b f34d f350 fo le 38 ad oo de ad Od dc fo f2 ad 5e e7 90 ea a f fb ad 00 de 29 3d Bd 00 de a9 Od 60 ad 00 de 29 7f Bd 00 de do 05 a f fb ad 00 dc rby lt rby2 rby4 rby5 bcc rby2 sec lda tril+pa and #$10 beq rby4 lda cia+icr and 1$02 beq rby2 lda timout bmi rbyl bcc rbylt lda #$02 jsr udst lda tril+pa and l$3d sta tril+pa lda #$0d rts lda tril+pa and 11$7f sta tri l+pa and 11$20 bne rby5 lda #$40 jsr udst lda cia+pra timer für time-out auf iec-i/o einschalten 6525 triport 1: port reg. a 6526 cia: irq control reg. licrj ieee timeout enable flag 'ora' ac in status 6525 triport 1: port reg. a 6525 triport 1: port reg. a 6526 cia: periph. data reg.a {praj 6525 triport 1: port reg. a 6525 triport 1: port reg. a timer für time-out auf iec-i/o einschalten 6525 triport 1: port reg. a 6526 cia: irq control reg. licr} ieee timeout enable flag 'ora' ac in status 6525 triport 1: port reg. a 6525 triport 1: port reg. a 6525 triport 1: port reg. a 6525 triport 1: port reg. a 'ora' ac in status 6526 cia: periph. data reg.a {pra}

339 610/710 os-kernall hard+soft ass/reass.... seite 0074 zeile adr. obj.-code source-code 3468 f ff eor l$ff 3469 f pha 3470 f356 ad 00 de lda tril+pa 6525 triport 1: port reg. a 3471 f ora 1$ f35b Bd 00 de sta tril+pa 6525 triport 1: port reg. a 3473 f35e ad 00 de rby7 lda tri 1 +pa 6525 triport 1: port reg. a 3474 f and 1$ f363 fo f9 beq rby f365 ad 00 de lda tril+pa 6525 triport 1: port reg. a 3477 f bf and l$bf 3478 f36a Bd 00 de sta tril+pa 6525 triport 1: port reg. a 3479 f36d 68 pla 3480 f36e 60 rts 3481 f36f 3482 f36f 3483 f36f ===> timer für time-out auf iec-i/o einschalten <=== 3484 f36f 3485 f36f a9 ff timero lda 1$ff 3486 f371 Bd 07 dc sta cia+tbhi 6526 cia: timer b hi reg. ltb hi} 3487 f374 a9 II lda 1$ f376 Bd Of dc sta cia +erb 6526 cia: control reg. b I erb} 3489 f379 ad Od dc lda cia+icr 6526 cia: irq control reg. licrl 3490 f37c 18 clc 3491 f37d 60 rts 3492 f37e 3493 f37e 3494 f37e 4c 51 f9 jmp error9 ausgabe "i/o error: 9" 3495 F ( (381 ===> open rs232-schnittstelle <=== 3498 f F e H opn232 jsr rst232 status rs232-schnittstelle 3500 F384 ao 00 ldy 1$ F386 c4 9d opn020 cpy Fnlen länge akt. Filename 3502 F388 fo Ob beq opn f3ba fe jsr fnadry Filename "bank x in ac, offset yr 3504 f38d o3 sta m51ctr,y rs232: kopie 6551 control-reg f390 c8 iny 3506 f391 co 04 cpy 1$ F393 do f1 bne opn f395 ad opn030 lda m51ctr rs232: kopie 6551 control-reg f398 Bd 03 dd sta acia+ctr 6551 acia: control-reg f39b ad lda m51cdr rs232: kopie 6551 command-reg f39e 29 f2 and I$F f3a ora 1$ f3a2 Bd 02 dd sta acia+cdr 6551 acia: command-reg f3a5 18 clc 3515 f3a6 a5 ao lda SI akt. Sekundäradresse 3516 f3a and 1$ F3aa FO 15 beq opnoh 3518 f3ac ad 7d 03 lda ridbe rs232: eingabe end zeiger 3519 F3af Bd 7c 03 sta ridbs rs232: eingabe start zeiger 3520 f3b2 a5 ab lda ribuf+2 bank rs232 eingabe-puffer 3521 f3b4 29 fo and l$f f3b6 fo 09 beq opn f3b8 20 fc f3 jsr req f3bb 85 a8 sta ribuf+2 bank rs232 eingabe-puffer 3525 f3bd 86 a6 stx ribuf addrl rs232 eingabe-puffer

340 610/710 os-kernall hard+soft ass/reass.... seite 0075 zeile adr. obj.-code source-code 3526 f3bf 84 a7 sty ribuf+l addrh rs232 eingabe-puffer 3527 f3c opn045 bcc opnoso 3528 f3c3 4c 53 f9 jmp errorx fehler ausgabe-routine 3529 f3c f3c f3c6 60 opn050 rts 3532 f3c f3c f3c7 ===> umw. ascii-code nach cbm-code <=== 3535 f3c f3c7 c9 toasci cmp #$ f3c bcc toa020 " 3538 f3cb c9 Sb cmp #$5b 3539 f3cd bo 02 bcs toaoio 3540 f3cf ora #$ f3dl c9 cl toaoio cmp #$Cl 3542 f3d bcc toa f3d5 c9 db cmp #$db JSH f3d7 bo 02 bcs toa f3d9 29 7f and #$7f 3546 f3db 60 toa020 rts 3547 f3dc 3548 f3dc 3549 f3dc ===> umw. cbm-code nach ascii-code <=== 3550 f3dc 3551 f3dc c9 41 tocbm cmp #$ f3de bcc toc f3e0 c9 Sb cmp #$Sb 3554 f3e2 bo 02 bcs tocoio 3555 f3e ora #$ f3e6 c9 61 tocoio cmp #$ f3e bcc toc f3ea c9 7b cmp #$7b 3559 f3ec bo 02 bcs toc f3ee 29 df and #$df 3561 f3f0 60 toc020 rts 3562 f3fl 3563 f3fl 3564 f3fl ad 02 dd xon232 lda acia+cdr 6551 acia: command-reg f3h ora #$ f3f6 29 fb and #$fb 3567 f3f8 Bd 02 dd sta acia.-cdr 6551 acia: command-reg f3fb 60 rts 3569 f3fc 3570 f3fc 3571 f3fc a2 00 req256 ldx #$ f3fe ao 0 I ldy #$0 I 3573 HOO Ba tttop txa 3574 HOl 38 sec 3575 H02 49 ff eor #$ff 3576 H04 6d adc hiadr addrl ende des system speichers 3577 H07 aa tax 3578 HOB 98 tya 3579 H09 49 ff eor #$ff 1580 HOb 6d adc hiadr+l addrh ende des system speichers 3581 HOe ab tay 3582 HOf ad lda hiadr+2 bank ende des system speichers 3583 f412 bo 06 bcs topoio

341 610/710 os-kernall hard+soft ass/reass..... seite 0076 zeile adr. obj.-code source-code 35B4 35B5 35B6 35B7 35BB f414 f416 HIB f419 H Ia 35B9 H Ia 3590 Hla 3591 Hld 3592 Hlf 3593 f H f f f42c 359B f42d 3599 H2e 3600 f42e a9 ff B 60 cc Sc f7 do 05 ec Sb fo Be Be IB 60 lda #$ff topbad ora #$40 sec rts topoio cpy memsiz+l bcc topbad bne topxit cpx memsiz bcc topbad topxit stx hiadr sty hiadr+l clc rts 3601 f42e ===> status rs232-schnittstelle <=== 3602 H2e 3603 f42e OB rst232 php 3604 HZf TB sei 3605 f430 ad 01 dd lda acia+srsn 3606 f f435 Bd Ta B f43b Bd Tb f43b 2B H3c 60 H3d H3d and #$60 sta rsstat sta dcdsr plp rts addrh ende des benutzer speichers addrl ende des benutzer speichers addrl ende des system speichers addrh ende des system speichers 6551 acia: reset-write und status read-reg. rs232: akt. rs232-status rs232: letzter dcd/dsr wert 3613 f43d ===> eingabe I char vom aktiven kanal in ac (queue-vector) <=== 3614 H3d H3d H3f fhi fh3 fh5 a5 a 7 do Oe as dl 05 d6 fo 53 ngetin lda dftln bne gnio lda ndx ora kyndx beq gnzo vorgabe input-grätenummer test eingabekanal =2 lrs232) anzahl bytes im tastaturpuffer Zeichenzähler für pgm tastenbefahl 3620 fh7 TB sei 3621 fhb eo jsr jlp fhb 78 ele fhc 60 fhd rts 3625 fhd 3626 f44d ===> test eingabekanal =2 (rs232) <=== fhd 3628 f44d e9 02 gnio cmp #$ f44f fo 03 beq gn f451 4e cf ff jmp kbasin 3631 HH 3632 H H H H H H5a 363B H5d 3639 H60 ===> zeiehen von rs232 in ae <=== Be Be ae 7e 03 ee Td 03 do 16 gn232 sty xsav stx savx ldy ridbs cpy ridbe bne gnl5 zeichen von rs232 in ae eingabe I char vom aktiven kanal in ac (chn-veetor) kernalvariable temporär kernalvariable temporär rs232: eingabe start zeiger rs232: eingabe end zeiger

342 610/710 os-kernall hard+soft ass!reass... seite 0077 zeile adr. obj.-code source-code 3640 f I H { f H6c 3645 f46f 3646 f f B f f47b 3650 f4 7b HB HB B HBd f ad 02 dd 29 fd d 02 dd ad Ta d 7a 03 a9 00 fo lc ad Ta 03 gnl5 29 ef f4 Td 8d Ta 03 HBO a6 01 a5 ab HB4 B5 01 bl a6 HBB B6 01 HBa ee Tc ao HBf dc f3 f494 ac f497 ae f49a IB 3664 f49b f49c 3666 f49c B f49c H9c fuc HSe f4a0 Ha2 Ha4 Ha6 HaB Hab Hab Hab Had Haf Hbl f4b3 Hb5 f4bb 3685 Hb Hba Hba Hba 3689 f4be 3690 Hbe 3691 HeO 3692 f4c Hc He T 3695 He f4ca 369 T Heb lda acia+cdr and l$fd ora #$0 I sta acia+cdr lda rsstat ora 1$10 sta rsstat lda 1$00 beq gnexit lda rsstat and #$ef sta rsstat ldx i6509 lda ribuf 2 sta i6509 lda (ribufj,y stx i6509 inc ridbs bi t sa bpl gnexit jsr tocbm gnexit ldy xsav ldx savx gn20 clc rts 6551 acia: command-reg acia: command-reg. rs232: akt. rs232-status rs232: akt. rs232-status rs232: akt. rs232-status rs232: akt. rs232-status 6509 indirection register bank rs232 eingabe-puffer 6509 indirection register addrl rs232 eingabe-puffer 6509 indirection register rs232: eingabe start zeiger akt. Sekundäradresse umw. cbm-code nach ascii-code kernalvariable temporär kernalvariable temporär ===> eingabe I char vom aktiven kanal in ac (chn-vector) <=== a5 a I do Ob a5 cb B5 ce a5 ca 85 Cf 4e b5 f4 es 03 do Ob 85 do a5 df 85 d5 20 Oa eo 18 bo OT e9 02 fo a fe nbasin lda dftln bne bnio lda pntr sta lstp lda tblx sta lsxp jmp bnl5 bnio bnl5 bn20 a5 9c bn30 fo 04 a9 Od bn31 18 bn32 60 bn33 emp #$03 bne bn20 sta ersw lda sert sta indx jsr jloop5 ele rts bes bn30 cmp 11$02 beq bn50 jsr xtape lda status beq bn35 lda #$0d cle rts vorgabe input-grätenummer cursor spalte screen edit startposition eursor zeile letzte position lzeilel flag 'er' bei bs-eingabe rechter rand bildsehirm position letztes zeichen in zeile i/o operation status

343 610/710 os-kernal1 hard+soft ass/reass.... seite 0078 zeile adr. obj.-code source-code 3698 Heb 3699 f4cb 20 a5 ff bn Hce f4cf f4d f4d f4d0 20 e4 ff bn f4d3 bo f f4d5 c f4d1 do fo 3708 f4d9 ad 7a f4dc f4de fo e f4e0 ad Ta f4e f4e5 do eo 3714 f4e7 20 e1 ff Hea do e4 Hec f4ed Hee 3719 f4ee jsr kacptr clc rts jsr kgetin bcs bn33 cmp 11$00 bne bn32 lda rsstat and 11$10 beq bn32 lda rsstat and 11$60 bne bn31 jsr kstop bne bn50 sec rts 3720 f4ee ===> ausgabe I char auf akt. kanal <=== 3721 f4ee 3722 Hee 3723 Hef 3724 Hfl 3725 fh fh Hf f4f Hfa fhb 3131 fhb a5 a2 c9 03 do Od eo 18 fhb Hfd 68 fhe 20 ab ff f f f f H f503 f505 f507 f508 f50b f50c f50e (510 f511 f511 c9 02 fo Oa a fe a nbsout pha lda dflto cmp 11$03 bne bo10 pla jsr jprt clc rts bo10 bcc bo20 pla jsr kciout clc rts bo20 cmp 11$02 beq bo50 pla jsr xtape rstbo pla bcc rstorl lda #$00 rs tor 1 rts 3749 f511 ===> zeichenvon ac nach rs232 <=== f511 f f f f51a Be Be ad 7a bo50 stx tl sty t2 lda rsstat and 11$60 ein byte von iec-bus nach accu eingabe 1 char vom aktiven kanal in ac (queue-vectorl rs232: akt. rs232-status rs232: akt. rs232-status stop-taste lesen vorgabe output-gerätenummer zeichen aus ac auf bildschirm ein byte aus accu auf iec-bus zeichen von ac nach rs232 kernalvariable temporär kernalvariable temporär rs232: akt. rs232-status

344 610/710 os-kernall hard+soft ass/reass.... seite 0079 zeile adr. obj.-code source-code I f51c f51e f51f f521 f523 f526 f529 f52a f52d f52f f531 do ao c7 f3 8d 00 dd 48 ad Ta do Of ad 01 dd 3766 f f536 do f el ff 3769 f53b do ed f53d 38 f53e bo cb f f54 I ae f5h ac f f bo80 bo60 bo90 bne bo90 pla bit sa bpl bo80 jsr toasci sta acia.,.drsn pha lda rsstat and 1$60 bne bo90 lda acia+srsn and 1$10 bne bo90 jsr kstop bne bo60 sec bcs rstbo pla ldx tl ldy t2 clc rts 3777 f f f549 ===> eingabe-kanal öffnen <=== 3780 f f Je f6 nchkin jsr lookup 3782 f54c f54e 3784 f55 I 3785 f55 I 3786 f55 I 3787 f f f f55a 379 I f55c 3792 f55e f f f f566 fo 03 4c 3f f f6 a5 9f fo 2e c9 03 fo 2a bo 2c c9 02 do le a5 ao fo lb 3797 f568 2d 02 dd 3798 f56b fo Of 3799 f56d 49 ff 3800 f56f 2d 02 dd 3801 f f f e f f f579 f57c f57e f580 f583 8d 02 dd a9 02 do a fe 4c 48 f9 jx310 jx312 jx315 jx316 beq jx310 jmp error3 jsr jzioo lda fa beq jx320 cmp 1$03 beq jx320 bcs jx330 cmp #$02 bne jx315 lda sa and 1$02 beq jx316 and acia.,.cdr beq jx312 eor l$ff and acia+cdr ora 1$01 pha jsr rst232 pla sta acia+cdr lda #$02 bne jx320 jsr xtape jmp error6 akt. Sekundäradresse umw. ascii-code nach cbm-code 6551 acia: data reg. write transmit, read = receive rs232: akt. rs232-status 6551 acia: reset-write und status read-reg. stop-taste lesen kernalvariable temporär kernalvariable temporär status auf 0, zeiger file-tabelle erhöhen ausgabe 'i/o error: 3' filetabeilen in la,fa,sa kopieren akt. primäradresse (geräte-nummer} akt. sekundäradresse 6551 acia: command-reg acia: command-reg. status rs232-schnittstelle 6551 acia: command-reg. ausgabe 'i/o error: 6'

345 610/710 os-kernall hard+soft ass/reass.... seite 0080 zeile adr. obj.-code source-code 3810 f586 38" f f a I jx320 sta dftln vorgabe input-grätenummer 3813 f clc 38" f rts 3815 f5ba 3816 f5ba 3811 f5ba aa jx330 tax 3818 f58b 20 b4 ff jsr ktalk talk auf iec-bus ausgeben 3819 f5be a5 ao lda sa akt. Sekundäradresse 3820 f bpl jx f f2 jsr tkatn 3822 f595 4c 9b f5 jmp jx f f f ff jx340 jsr ktksa auf iec-bus sekundäradr. nach talk ausgeben 3826 f59b Ba jx350 txa 3827 f59c 24 9c bit status ilo operation status 3828 f59e 10 e6 bpl jx f5a0 4c 45 f9 jmp error5 ausgabe "ilo error: 5" 3830 f5a f5a f5a3 ===> ausgabe-kanal öffnen <=== 3833 f5a f5a3 20 Je f6 nckout jsr lookup status auf o. zeiger file-tabelle erhöhen 3835 f5a6 fo 03 beq ck f5a8 4c 3f f9 jmp error3 ausgabe 'i/o error: 3' 3831 f5ab 3838 f5ab 3839 f5ab f6 ck5 jsr jzioo filetabeilen in la,fa,sa kopieren 3840 f5ae a5 9f lda fa akt. primäradresse (geräte-nummerl 3841 f5b0 do 03 bne ckio 3842 f5b2 4c 4b f9 ck20 jmp error7 ausgabe 'ilo error: f5b5 38H f5b f5b5 c9 03 ckio cmp tl$ f5b1 fo 18 beq ck f5b9 bo Ia bcs ck f5bb c9 02 cmp tl$ f5bd do Of bne ckl f5bf a5 ao lda sa akt. Sekundäradresse 3851 f5c I 4a lsr a 3852 f5c2 90 ee bcc ck f5c4 20 2e f4 jsr rst232 status rs232-schnittstelle 3854 f5c7 20 fl f3 jsr xon f5ca a9 02 lda tl$ f5cc do 03 bne ck f5ce 20 5a fe ckl5 jsr xtape 3858 f5d, 85 a2 ck30 sta dflto vorgabe output-geritenummer 3859 f5d3 18 clc 3860 f5d4 60 rts 386, f5d f~d~ 3863 f5d5 aa ck40 tax 3864 f5d6 20 bl ff jsr klistn listen auf iec-bus ausgeben 3865 f5d9 a5 ao lda sa akt. Sekundäradresse

346 610/710 os-kernall hard+soft ass/reass.... seite OOBI zeile adr. obj.-code source-code 3B66 f5db B67 f5dd f2 3B6B f5e0 do f5e ff ck50 3B70 f5e5 Ba ck60 3B71 f5e6 24 9c 3B72 f5eb 10 e7 3B73 f5ea 4c 45 f9 3B 74 3B75 3B B7B BBO B3 f5ed f5ed f5ed f5ed f5ed f5ee f5fl f5f3 f5h f5f5 bpl ck50 jsr sca tn bne ck60 jsr ksecnd txa bit status bpl ck30 jmp error5 ===> logisches file schliessen <=== OB 20 0 f6 fo IB 60 38B4 (5(6 38B5 f5f6 38B6 f5f f6 3BB 7 f5f9 28 3BBB f5fa Ba 38B9 f5fb " f5fc f5fe f600 f602 f604 f606 f608 f60a f60c f60e f611 f613 f6" f617 F61a F61d F61e f61f F622 F625 F627 F62a F62d F630 F633 f636 F f63c f63d F63e 3920 F63e 90 IF a5 9F FO lb c9 03 FO 17 bo 12 c9 02 do 07 a9 00 8d 02 dd FO Oa le F6 20 5a fe 20 bf F8 68 aa ce ec FO 15 ac b d b9 3e 03 9d 3e 03 b d nclose php jsr jltlk beq jxiio plp clc rts jxiio jx 115 jxl20 jxl50 jx151 jxl60 clc rts jsr jzioo plp txa pha bcc jxl50 lda Fa beq jxl50 cmp #$03 beq jxl50 bcs jxl20 cmp #$02 bne jxll5 lda #$00 sta acia+cdr beq jxl50 pla jsr jxl51 jsr xtape jsr clsei pla tax dec ldtnd cpx ldtnd beq jxl60 ldy ldtnd lda lat,y sta lat,x lda fat,y sta Fat,x lda sat,y sta sat,x auf iec-bus sekundäradr. nach listen ausgeben ilo operation status ausgabe 'i/o error: 5' Filetabellen in la,fa,sa kopieren akt. primäradresse lgeräte-nummerl 6551 acia: command-reg. zeiger in File-tabellen zeiger in File-tabellen 3921 F63e ===> status auf 0, zeiger file-tabelle erhöhen <=== 3922 f63e zeiger in file-tabellen tabelle akt. log. file # I 10 bytel tabelle akt. log. file # (10 bytel tabeile akt. primäradr. tabeile akt. primäradr. tabeile akt. sekundäradr. tabelle akt. sekundäradr.

347 610/710 os-kernall hard+soft ass/reass.... seite 0082 zeile adr. obj.-code source-code 3923 f63e a9 00 lookup lda lt$ f c sta status i/o Operation status 3925 f642 Ba txa 3926 f643 ae jltlk ldx ldtnd zeiger in file-tabellen 3927 f646 ca jx600 dex 3928 f6h 30 2d bmi lkups f649 dd cmp lat, x tabelle akt. log. file lt (10 bytel 3930 f64c do fb bne jx f64e 18 clc 3932 f6h 60 rts 3933 f f f650 ===> filetsbellen in la,fa,sa kopieren <=== 3936 f f650 bd jzioo lda lat, x tabelle akt. log. file lt ( 10 bytel 3938 f e sta la akt. logische filenummer 3939 f655 bd Je 03 lda fa t, x tabelle akt. primäradr f f sta fa akt. primäradresse (geräte-nummer) 3941 f65a bd H 03 lda sat, x tabeile akt. sekundäradr f65d 85 ao sta sa akt. Sekundäradresse 3943 f65f 60 rts 39H f f f660 ===> file-parameter aufgrund sekundäradr. suchen <=== 3941 f660 39H f lkupsa tya 3949 f661 ae ldx ldtnd zeiger in file-tabellen 3950 f664 ca lkups2 dex 3951 f Of bmi lkups f667 dd H 03 cmp sat,x tabeile akt. sekundäradr f66a do f8 bne lkups f66c 18 clc 3955 f66d f6 lkups3 jsr jzioo filetsbellen in la,fa.sa kopieren 3956 f610 a8 tay 3957 f671 a5 9e lda la akt. logische filenummer 3958 f6 13 a6 9f ldx fa akt. primäradresse (geräte-nummerl 3959 f rts 3960 f f f lkups4 sec 3963 f rts 3964 f f f678 ===> file-parameter aufgrund logischer adr. suchen <=== f f678 aa lkupla tax 3969 f Je f6 jsr lookup status auf 0, zeiger file-tabelle erhöhen 3910 f6 Tc 90 ef bcc lkups f67e 60 rts 3912 f6 7f 3973 f67f.end 3914 f6 7f.lib kernal2

348 610/710 os-kernal2 hard+soft ass/reass.... seite 008J zeile adr. obj.-code source-code J976 F67f J977 F67F ===> alle logischen Files schliessen <=== J978 F67F J979 J980 J981 J982 J98J J984 J985 J986 J987 J988 J989 F67F F682 F685 F688 F689 f68b F68e F690 F69J F696 F698 J990 f69b J8 J991 f69c 3992 F69F J99J F6a I J994 F6aJ J995 f6a6 J996 f6a6 6e d 66 OJ ae 60 OJ ca JO lb 2c ad 66 OJ dd Je OJ do FO bd J4 OJ 20 cj ff 90 e4 a9 00 8d 60 OJ nclall ror xsav sta savx ncloio ldx ldtnd ncl020 dex bmi nclrch bit xsav bpl nclojo lda savx cmp Fat,x bne ncl020 nclojo lda lat,x sec jsr kclose bcc ncloio lda #$00 sta ldtnd J997 F6a6 ===> alle kanäle schliessen <=== J998 f6a6 J999 F6a6 a2 OJ J II F6a8 F6aa f6ac f6af f6b I F6bJ F6b6 F6b8 f6ba f6bc f6be f6bf F6bf 4013 F6bf 4014 f6bf 4015 f6bf F6c I f6c4 f6c F6c F6c F6c9 f6cb 402J F6ce 4024 f6ce 4025 f6ce 4026 f6dl 4027 f6dj 4028 f6d F6d8 40JO F6d f6d8 40J2 f6db e4 a2 bo ae Ff e4 al bo OJ 20 ab ff a2 OJ 86 a2 a a I nclrch ldx #$0J cpx dflto bcs jx750 jsr kunlsn jx750 cpx dftln bcs clall2 jsr kuntlk clall2 ldx #$03 stx dflto lda #$00 sta dftln rts ===> log. file Öffnen/befehl ausgeben <=== 90 OJ 4c Ja f7 nopen bcc opooo jmp tranr a6 9e opooo ldx la 20 Je F6 jsr lookup do OJ 4c Je F9 ae 60 OJ eo Oa 90 OJ 4C 39 f9 opioo bne opioo jmp error2 ldx ldtnd cpx #$0a bcc op I 10 jmp errorl ee opiio inc ldtnd a5 9e lda la kernalvariable temporär kernalvariable temporär zeiger in File-tabellen alle kanäle schliessen kernalvariable temporär kernalvariable temporär tabeile akt. primäradr. tabelle akt. log. File# 110 bytel logisches File schliessen zeiger in File-tabellen vorgabe Output-gerätenummer unlisten auf iec-bus ausgeben vorgabe input-grätenummer untalk auf iec-bus ausgeben vorgabe output-gerätenummer vorgabe input-grätenummer sek.adr name auf ieee akt. logische Filenummer status auf 0, zeiger file-tabelle erhöhen ausgabe "i/o error: 2 zeiger in File-tabellen ausgabe i/o error: I zeiger in file-tabellen akt. logische Filenummer

349 610/110 os-kernal2 hard+soft ass/reass.... seite OOB4 zeile adr. obj.-code source-code 4033 f6dd 9d sta lat,x tabelle akt. log. file I (10 byte} 4034 f6e0 a5 ao lda sa akt. Sekundäradresse 4035 f6e ora 1$ f6e4 B5 ao sta sa akt. Sekundäradresse 4037 f6e6 9d sta sat, x tabelle akt. sekundiiradr. 403B f6e9 a5 9f lda fa akt. primiiradresse lgeräte-nummerj 4039 f6eb 9d Je 03 sta fat, x tabelle akt. primiiradr f6ee fo 15 beq opl f6f0 c9 03 cmp 1$ f6f2 fo beq op I 75 " 4043 f6f bcc opl f6f f7 jsr openi open ieee-kanal, name senden 4045 f6f9 90 Oa bcc op f6fb c9 02 opl50 cmp 1$ f6fd do 03 bne opl f6ff 4c BI fj jmp opn232 open rs232-schnittstelle 4049 no no no2 20 5a fe opl52 jsr xtape 4052 f705 IB opl 75 clc 4053 f rts 4054 f f f707 ===> open ieee-kanal, name senden <=== f B f707 a5 ao openi lda sa akt. Sekundäradresse 4059 f d bmi op f70b a4 9d ldy fnlen länge akt. filename 4061 f70d fo 29 beq op f70f a5 9f lda fa akt. primäradresse (geriite-nummerj 4063 f bl ff jsr klistn listen auf iec-bus ausgeben 4064 f714 a5 ao lda sa akt. Sekundäradresse 4065 f fo ora l$f f71b f71b 406B f71b ===> ac=sek.adr. + name auf ieee <=== 4069 f71b 4070 f71b ff openib jsr ksecnd auf iec-bus sekundäradr. nach listen ausgeben 407, f71b a5 9c lda status i/o operation status 4072 f7 ld bpl op f71f 6B pla 4074 f720 6B pla f721 4c 45 f9 jmp error5 ausgabe 'i/o error: 5' 4076 f f B f724 as 9d op35 lda fnlen länge akt. filename f126 fo Od beq op45 40BO f72b ao 00 ldy 1$00 40BI f72a fe op40 jsr fnadry filename 'bank x in ac, offset yr 40B2 f72d 20 ab ff jsr kciout ein byte aus accu auf iec-bus 40B3 f730 cb iny 40B4 f7ji C4 9d cpy fnlen länge akt. filename 40B5 f133 do fs bne op f ae ff op45 jsr kunlsn unlisten auf iec-bus ausgeben 40B 7 f73b 18 opso clc 4088 f rts 4089 f7ja

350 610/710 os-kernal2 hard+soft ass/reass... seit& 0085 zeile adr. obj.-code source-code 4090 f73a 4091 f73a ===> sek.adr name auf ieee <=== 4092 f73a f73a f73c f73f fhi f743 a5 9f 20 b, ff a9 6f 85 ao 4c 18 f7 tranr lda fa jsr klistn lda ll$6f sta sa jmp openib 4098 f f f746 ===>einlesen vom log. file <=== 4101 f f746 Be 6f 03 nload stx relsal 4103 f749 Be sty relsah 4104 fhc 8d 5f 03 sta verck 4105 f7h Bd 7 I 03 sta relsag 4106 f752 a9 00 lda 11$ f c sta status 4108 f756 a5 9f lda fa 4109 f758 do 03 bne ld f75a 4c 51 f9 ldio jmp error f75d 4112 f75d 4113 f75d 4114 f75f 4115 f f f f f f , f76a 4122 f76c 4123 f76e 4124 f f f f f f f77c 4131 f77e 4132 f f f f f78a 4137 f78b 4138 f78c 4139 f78e 4140 f f791 f791 c9 03 fo f9 bo 03 4c 10 f8 a ao a4 9d do 03 4c 4e f9 20 lb fb f7 a5 9f 20 b4 ff a5 ao ff 20 a5 ff a5 9c 4a 4a c 42 f9 ld20 ld22 ld25 20 a5 ff ld f f a 4145 f fb 4146 f79b ad cmp 11$03 beq ld10 bcs ld22 jmp ld100 lda 11$60 s ta sa ldy fnlen bne ld25 jmp errorb jsr luking jsr openi lda fa jsr ktalk lda sa jsr ktksa jsr kacptr sta eal sta stal lda status lsr a lsr a bcc ld30 jmp error4 jsr kacptr sta eah sta stah jsr loding lda relsag akt. primäradresse (geräte-nummerl listen auf iec-bus ausgeben akt. sekundäradresse ac=s&k.adr. + name auf ieee addrl variable start-load-adr. addrh variable start-load-adr. load/veri fy flag bank variable start-load-adr. ilo operation status akt. primäradresse lgeräte-nummerl ausgabe 'i/o error: 9' akt. sekundäradresse länge akt. filename ausgabe 'ilo error: 8' open ieee-kanal, name senden akt. primäradresse lgeräte-nummerl talk auf iec-bus ausgeben akt. Sekundäradresse auf iec-bus sekundäradr. nach talk ausgeben ein byte von iec-bus nach accu addrl ende akt. load/store addrl anfang akt. load/store i/o operation status ausgabe 'i/o error: 4' ein byte von iec-bus nach accu addrh ende akt. load/store addrh anfang akt. load/store bank variable start-load-adr.

351 610/710 os-kernal2 hard+soft asslreass... seite 0086 zeile adr. obj.-code source-code 41H f79e sta eas bank ende akt. load/store 4148 f7a0 85 9b sta stas bank anfang akt. load/store ~IH f7a2 ad 6f 03 lda relsal addrl variable start-load-adr f7a5 2d and relsah addrh variable start-load-adr f7a8 c9 ff cmp #$ff 4152 f7aa fo Oe beq ld f7ac ad 6f 03 lda relsal addrl variable start-load-adr f7af sta eal addrl ende akt. load/store 4155 f7bl sta stal addrl anfang akt. load/store 4156 f7b3 ad lda relsah addrh variable start-load-adr f7b sta eah addrh ende akt. load/store 4158 f7b8 85 9a sta stah addrh anfang akt. load/store 4159 f7ba a9 fd ld~o lda #$fd 4160 f7bc 25 9c and status ilo operation status 4161 f7be 85 9c sta status i/o operation status 4162 f7c0 20 el ff jsr kstop stop-taste lesen 4163 f7c3 do 03 bne ld f7c5 4c b3 f8 jmp break 4165 f7c f7c f7c8 20 a5 ff ldh jsr kacptr ein byte von iec-bus nach accu ~168 f7cb aa tax 4169 f7cc a5 9c lda status i/o operation status "70 f7ce h lsr a 4171 f7cf h lsr a "72 f7d0 bo eb bcs ld40 ~ 173 f7d2 Ba txa 4174 f7d3 a6 01 ldx i indirection register 4175 f7d5 98 ldy eas bank ende akt. load/store "76 f7d7 84 ~ 01 sty i indirection register 4177 f7d9 ao 00 ldy #$ f7db 2c 5f 03 bit verck load/verify flag '179 f7de 10 Oe bpl ld f7e sta sal addrl akt. load/store adresse 4181 f7ez bl 96 lda (eall, y addrl ende akt. load/store 4182 f7e4 c5 93 cmp sal addrl akt. load/store adresse 4183 f7e6 fo OB beq ld f7e8 a9 10 lda #$ f7ea 20 5f fb ;jsr udst 'ora' ac in status 4186 f7ed ad lda pulst I 4187 f7f ld60 stx i indirection register 4188 f7f2 e6 96 inc eal addrl ende akt. load/store 4189 f7h do Oa bne ld f7f6 e6 97 inc eah addrh ende akt. load/store 4191 f7f8 do 06 bne ld f7fa e6 98 inc eas bank ende akt. load/store 4193 f7fc a9 02 lda #$ f7fe sta eal addrl ende akt. load/store 4195 fboo 24 9c ld64 bit status i/o operation status 4196 f b6 bvc ld f ab ff ;jsr kuntlk untalk auf iec-bus ausgeben 4198 f bf fb jsr clsei 4199 fboa 4c 13 fb jmp ldibo 4200 fbod HOl fbod 4202 fbod 4c 42 f9 jmp error~ ausgabe "i/o error: ' fbio 4204 fbio

352 610/710 os-kernal2 hard+soft ass/reass.... seite 0087 zeile adr. obj.-code source-code 4205 f a fe ldioo jsr xtape 4206 f ldl80 clc 4207 f8 14 a5 98 lda eas bank ende akt. loadlstore 4208 f8 16 a6 96 ldx eal addrl ende akt. load/store 4209 f818 a4 97 ldy eah addrh ende akt. load/store 4210 f81a 60 rts 4211 f81b 4212 f81b 4213 f81b 2c luking bit msgflg message flag 4214 f81e 10 lf bpl ld f820 ao Oe ldy #$Oe 4216 f lc f2 jsr spmsg test errorflag, ausgabe systemmeldung 4217 f825 a5 9d lda fnlen länge akt. Filename 4218 f827 fo 16 beq ld f829 ao 1 7 ldy #$ f82b 20 lc f2 jsr spmsg test errorflag, ausgabe systemmeldung 4221 f82e a4 9d outfn ldy fnlen länge akt. Filename 4222 f830 fo Od beq ldll f832 ao 00 ldy #$ f fe ldiio jsr fnadry Filename "bank X in ac, offset yr 4225 f d2 ff jsr kbsout ausgabe 1 char auf akt. kanal 4226 f83a c8 iny 4227 f83b c4 9d cpy fnlen länge akt. Filename 4228 f83d do f5 bne ld!io 4229 f83f 60 ld115 rts 4230 f f f840 ao lb loding ldy #$1b 4233 f842 ad 5f 03 lda verck load/verify flag 4234 f bpl ld f841 ao 2b ldy #$2b 4236 f849 4c lc f2 ld410 jmp sp.msg test errorflag, ausgabe systemmeldung 4237 f84c 4238 f84c 4239 f84c ===> abspeichern auf log. file <=== 4240 f84c 4241 f84c b5 00 nsave lda e6509,x 6509 execution register 4242 f84e sta stal addrl anfang akt. load/store 4243 f850 b5 01 lda i6509,x 6509 indirection register 42H f a sta stah addrh anfang akt. load/store 4245 f854 b5 02 lda usrpok,x jmp code für usr '-routine 4246 f b sta stas bank anfang akt. load/store 4241 f tya 4248 f859 aa tax 4249 f85a b5 00 lda e6509,x 6509 execution register 4250 f85c sta eal addrl ende akt. load/store 4251 f85e b5 01 lda i6509,x 6509 indirection register 4252 f sta eah addrh ende akt. load/store 4253 f862 b5 02 lda usrpok,x jmp code für 'usr '-routine sta eas bank ende akt. load/store akt. primäradresse (geräte-nummerl f864 f a5 9f lda fa 4256 f868 do 03 bne sv f86a 4c 51 f9 sv!o jmp error9 ausgabe 'i/o error: 9' 4258 f86d 4259 f86d

353 610/710 os-kernal2 hard+soft ass/reass.... seite 0088 zeile adr. obj.-code source-code 4260 f86d 4261 f86f 4262 f fb fb fb fb fb7b 4268 f8 7e 4269 fb7e 4270 fb7e 4271 fbbi 4272 fbb fb fbb fbbb 427B BO 42BI 42B2 42B3 42B4 42B5 42B6 42B7 42BB fbbe fb90 fb93 fb95 fb9b fb9a fb9d fb9f fba2 f8a4 fba6 fba9 f8ac f8af fbb I fbb3 fbb6 f8bb f8b fbba 4296 fbba 4297 fbba 429B f8bc 4299 f8bf 000 fbc I 001 fbc3 002 fbc5 003 fbcb 004 fbca 005 f8cc 006 f8ce c9 03 fo f a9 61 B5 ao a4 9d do 03 4c h f f7 20 d9 fb a5 9f 20 b I ff a5 ao ff a fe a ab ff a ab ff ao fe bo 16 b I ab ff 20 7f fe 20 el ff do ee B bf fb a B ae ff 24 ao 30 II a5 9f 20 bl ff a5 ao 29 ef 09 eo ff 4307 fbdl 20 ae ff 008 fbd fbd f8d6 Oll f8d6 f8d6 f8d9 fbdc 20 5a fe ad f7 sv20 sv25 sv30 break sv50 clsei cmp 11$03 beq svio bcc svioo lda 11$61 sta sa ldy fnlen bne sv25 jmp errorb jsr openi jsr saving lda fa jsr klistn lda sa jsr ksecnd ldx i6509 jsr rd300 lda sal jsr kciout lda sah jsr kciout ldy 11$00 jsr cmpste bcs sv50 lda (sall.y jsr kciout jsr incsal jsr kstop bne sv30 stx i6509 jsr clsei lda 11$00 sec rts stx i6509 jsr kunlsn bi t sa bmi sviio lda fa jsr klistn lda sa and #$ef ora ll$e0 jsr ksecnd jsr kunlsn sviio clc svll5 rts svioo jsr xtape saving lda msgflg bpl svll5 akt. Sekundäradresse länge akt. filename ausgabe "i/o errar: B" open ieee-kanal, name senden akt. primäradresse (geräte-nummerl listen auf iec-bus ausgeben akt. Sekundäradresse auf iec-bus sekundäradr. nach listen ausgeben 6509 indirection register "stah"-vektor nach 'sah'-vektor und bank# nach i6509 addrl akt. load/store adresse ein byte aus accu auf iec-bus addrh akt. laad/stare adresse ein byte aus accu auf iec-bus vektor 'sal - eal addrl akt. load/store adresse ein byte aus accu auf iec-bus stop-taste lesen 6509 indirectian register 6509 indirection register unlisten auf iec-bus ausgeben akt. Sekundäradresse akt. primäradresse (geräte-nummerl listen auf iec-bus ausgeben akt. Sekundäradresse auf iec-bus sekundäradr. nach listen ausgeben unlisten auf iec-bus ausgeben message flag

354 610/710 os-kernal2 hard+soft ass/reass.... seite 0089 zeile adr. obj.-eode souree-eode 4315 fbde ao fbeo 20 le f2 ldy #$23 jsr spmsg 4317 f8e3 4e 2e fb jmp outfn 4318 f8e f8e f8e6 ===> zeitlesen lam/pm,h,min,s, 1/10 sl <=== 432 I f8e f8e f8e9 ad 08 de 4B rdtim lda eia+todio pha 4324 fbea 48 pha 4325 fbeb Oa asl a 4326 fbee Oa asl a 4327 fbed Oa asl a 4328 fbee and #$ fbfo Od Ob de ora eia+todhr 4330 f8f3 ab tay 433 I f8f4 68 pla 4332 f8f5 6a ror a 4333 fbf6 6a ror a 4334 f8f7 29 BO and #$ f8f9 Od 09 de ora eia+todsee 4336 fbfe sta sal B fbfe fbff 6a 29 BO ror a and #$ f901 Od Oa dc ora eia+todmin 4340 f904 aa tax 4341 f905 6B pla 042 f906 cd OB dc emp cia+todio 4343 f909 do db bne rdtim 43H f90b a5 93 lda sal 4345 f90d 60 rts 4346 f90e f90e 4348 f90e ===> zeit setzen lam/pm,h,min,s, 1/10 sl <=== f90e f90e f90f f910 f9" f913 f916 f B 6a 29 BO Od Of de Bd Of dc 9B 4357 f91a 2a B f91b f91e f91e f91f f921 f922 f923 f925 f926 f927 f929 f92c f92f 2a a Ba 2a B 2a Be Ob dc Be Oa dc 6B 4371 f930 Bd 09 dc settim pha pha ror a and #$BO ora cia+crb sta cia+erb tya rol a rol a rol sal rol a rol sal txa rol a rol sal pla rol a rol sal sty cia+todhr stx cia+todmin pla sta cia+todsec test errorflag, ausgabe Systemmeldung 6526 cia: uhr: 1/10 sek.-reg cia: uhr: stunde-am/pm-reg eia: uhr: sek. -reg. addrl akt. load/store adresse 6526 cia: uhr: min.-reg cia: uhr: 1/10 sek.-reg. zeitlesen lam/pm,h,min,s,l/10 sl addrl akt. load/store adresse 6526 cia: control reg. b (erb} 6526 cia: control reg. b (crbj addrl akt. load/store adresse addrl akt. load/store adresse addrl akt. load/store adresse addrl akt. load/store adresse 6526 cia: uhr: stunde-am/pm-reg cia: uhr: min.-reg cia: uhr: sek. -reg.

355 610/710 os-kernal2 hard+soft ass/reass.... seite 0090 zeile adr. obj.-code source-code 4312 f933 a5 93 lda sal addrl akt. load/store adresse 4373 f935 8d OB dc sta cia+tod!o 6526 cia: uhr: 1/10 sek. -reg f rts 4315 f f f939 ===> ausgabe 'ilo error: f. <=== 4318 f f939 a9 01 errorl lda #$ f93b 2c.byte $2c 4381 f93c 4382 f93c 4383 f93c ===> ausgabe 'ilo error: 2. <=== f93c 4385 f93c a9 02 error2 lda #$02 OB& f93e 2c.byte $2c 4387 f f93f 4389 f93f ===> ausgabe 'ilo error: 3. <=== 4390 f93f 4391 f93f a9 03 error3 lda #$ f941 zc.byte $2c 4393 f f f942 ===> ausgabe 'i!o error: 4' <=== 4396 f f942 a9 04 error4 lda #$ f9h Zc.byte $2c 4399 f945 HOO f945 HOl f945 ===> ausgabe 'i/o error: 5' <=== H02 f f945 a9 05 error5 lda #$ f941 Zc.byte $Zc 4405 f948 H06 f f948 ===> ausgabe 'i/o error: 6' <=== HOB f94b 4409 f948 a9 06 error6 lda #$06 HIO f94a Zc.byte $Zc "" f94b Hl2 f94b "13 f94b ===> ausgabe 'i/o error: 7. <=== "" f94b Hl5 f94b a9 07 error7 lda 1$07 H16 f94d 2c.byte $2c "' 7 HIB f94e f94e Hl9 f94e ===> ausgabe 'i/o error: 8. <=== H20 f94e 4421 f94e a9 OB errorb lda #$08 H22 f950 Zc.byte $2c 4423 f f f951 ===> ausgabe 'i/o error: 9' <=== H26 f' f951 a9 09 error9 lda 1$09 H28 f953 H29 f953

356 610/710 os-kernalz hard+soft ass/reass... seite 0091 zeile adr. obj. -code source-code H30 f953 ===> Fehler ausgabe-routine <=== H31 f953 H3Z f errorx pha H33 f954 zo cc ff jsr kclrch ein-/ausgabekanal schliessen H34 f957 ao 00 ldy #$00 H35 f959 Zc bit msgflg message flag H36 f95c 50 Oa bvc erexit H37 f95e zo Zl fz jsr msg ausgabe systemmeldung. offset=yr H38 f pla H39 f96z 48 pha 4HO f ora #$30 f965 zo dz ff jsr kbsout ausgabe I char auf akt. kanal "" 4HZ f erexit pla HO f sec HH f96a 60 rts H45 f96b H46 f96b 4H7 f96b ===> stop-taste Überprüfen <=== HH f96b H49 f96b a5 a9 nstop lda stkey stop tasten flag H50 f96d zg 0 I and #$0 I H51 f96f do 07 bne stopz H5Z f971 OB php H53 f97z zo cc ff jsr kclrch ein-iausgabekanal schliessen H54 f dl sta ndx anzahl bytes im tastaturpuffer H55 f977 ZB plp H56 f stopz rts H57 f979 H58 f979 H59 f979 ===> system-zeit aktualisieren <=== H60 f9 79 H61 f979 ad oz df udtim lda triz+pc 65Z5 triport Z: port reg. c H6Z f97c 4a lsr a H63 f97d bo IZ bcs udexit H64 f97f a9 fe lda #$fe H65 f981 Bd 01 df sta triz+pb 65Z5 triport Z: port reg. b H67 f986 Zd df and triz+pc H66 f984 a9 10 oz lda #$10 65Z5 triport Z: port reg. c H68 f989 do 0 I bne udttt H69 f9bb 38 sec H 70 f9bc a9 ff udttt lda #$ff H71 f9be Bd 01 df sta triz+pb 65Z5 triport Z: port reg. b 4HZ f991 Za udexit rol a H73 f99z 85 a9 sta stkey stop tasten flag H74 f rts H75 f995 H 76 f995 H77 f995 ===> test-bytes für cbm-rom <=== H78 f995 H79 f995 cz patall.byte $cz, $cd 4479 f996 cd HBO f997 HBI f99 7 HBZ f997 ===> system reset routine <=== HBJ f99l H84 f997 az fe start ldx #$fe H85 f sei H86 f99a 9a txs

357 610/710 os-kernal2 hard+soft ass/reass.... seite 0092 zeile adr. obj. -code source-code H87 f99b d8 cld H88 f99c a9 a5 lda ll$a5 H89 f99e cd fa 03 cmp evect+2 warmstart-variable H90 f9a I do 07 bne scold system-kaltstart H91 f9a3 ad fb 03 lda evect+3 warmstart-variable H92 f9a6 c9 5a cmp ll$5a H93 f9a8 fo 4e beq swarm system-warmstart H94 f9aa H95 f9aa H96 f9aa H97 f9aa ===> system-kaltstart <=== H98 f9aa a9 06 scold lda 11$06 H99 f9ac sta eal addrl ende akt. load/store 4500 f9ae a9 00 lda 11$ f9b sta eah addrh ende akt. load/store 4502 f9b2 Bd f8 03 sta evect addrl warmstart-vector 4503 f9b5 a2 30 ldx 11$ f9b7 ao 03 sloopo ldy 11$ f9b9 a5 97 lda eah addrh ende akt. load/store 4506 f9bb bmi sloop f9bd 18 clc HOB f9be adc #$ f9cij sta eah addrh ende akt. load/store 4510 f9c2 e8 inx 4511 f9c3 Ba txa 4512 f9c4 dl 96 cmp leall, y addrl ende akt. load/store 4513 f9c6 do ef bne sloopo 4514 f9c8 88 dey 4515 f9c9 bl 96 sloopl lda leal I, y addr l ende akt. load/store 4516 f9cb 88 dey 4517 f9cc 30 Oa bmi sloop f9ce d9 95 f9 cmp patall,y test-bytes für cbm-rom 4519 f9dl fo f6 beq sloop I 4520 f9d3 do e2 bne sloopo 4521 f9d5 ao eo sloop2 ldy ll$e f9d1 2c.byte $2c 4523 f9d8 a4 97 sloop3 ldy eah addrh ende akt. load/store 4524 f9da Be f9 03 sty evect+1 addrh warmstart-vector 4525 f9dd aa tax 4526 f9de bpl swarm system-warmstart 4527 f9e0 20 fb f9 jsr ioinit i/o register init f9e3 a9 fo lda ll$f f9e5 85 c I sta pkybuf 1 addrh start programmierbare tasten 4530 f9e eo jsr jcint 4531 f9ea fa jsr ramtas ram- tes t, zeiger ini t f9ed 20 a2 fb jsr restor standard-vektoren für jsr und interrupts einrichten 4533 f9f eo jsr jcint 4534 f9f3 a9 a5 lda ll$a f9f5 Bd fa 03 sta evect+2 warmstart-variable 4536 f9f8 6c fb 03 swarm jmp (evectj system-warmstart 4537 f9fb 4538 f9fb 4539 f9fb 4540 f9fb ===> i/o regis ter ini t. <=== 454! f9fb a9 f3 ioinit lda #$f f9fd Bd 06 de sta tril+creg 6525 triport 1: control reg faoo ao ff ldy #$ff

358 610/710 os-kernal2 hard+soft ass/reass.... seite 0093 zeile adr. obj.-code souree-eorle 4544 fa fa fa faoa 45H faoe 4549 faof 4550 fa fa fal fa fa le 4555 fa lf 4556 fa fa25 455B fa2b 4559 fa fa2e 4561 fa2f 4562 fall 4563 fa fa faja 4566 fa3d 4567 fa40 456B fa fa fah 4571 fa fa4e 4513 fa4e 4574 fah 4575 fa fa fa55 451B fa fa5b 45BO fa5a 45BI fa5c 45B2 fa5e 4583 fa5f 45B4 fa6 I 4585 fa64 45B6 fa fa69 45BB fa6c 45B9 fa6e 4590 fa fa fa fa Ta 4594 fa7e 4595 fa 7f 4596 fab fa fabt 4599 fa fabb Be 05 de a9 5e Bd 01 de a9 Tri Bd 04 de a9 3d Bd 00 de a9 Jf Bd 03 de Be 00 df Be 01 de Be 03 df Be 04 df 4e 00 df eb Be 02 df Be 05 df a9 7f Bd Orl de Be 02 de Be 03 rle Be Of de Bd OB de Be 02 de ad 02 de 6a 90 fa Be 02 de a2 00 eb rio frl eb arl 02 rle f6 eo 1b a9 BB 2e a9 OB Bd Oe de arl Od rlb a9 90 Bd Od db a9 40 Bd 01 db Be 02 db Be Of rlb Be Oe db a9 4B Brl 03 rlb a9 01 Od 01 de Bd 01 rle 60 io100 io I 10 iol20 sty tril+drlpe lda l$5e sta tril+pb lrla l$1rl sta tril+ddpb lda #$3d sta tri1+pa lda #$3f sta tril+drlpa sty tri2+pa sty tril+pb sty tri2+ddpa sty tri2+rlrlpb lsr tri2+pa iny sty tri2+pe sty tri2+ddpe lda #$1f sta eia+ier sty eia+ddra sty eia+ddrb sty eia erb sta eia+todio sty tril+pc lda tri 1+pc ror a bee io100 sty tri1+pe ldx #$00 inx bne io 110 iny lrla tri 1+pe ror a bee io110 epy l$1b bee iol20 lda #$8B.byte $2c lda 1$08 sta eia+era lda ipeia ier lda #$90 sta ipcia+ier lda 1$40 sta ipcia+prb stx ipeia+ddra stx ipeia+erb stx ipeia+era lda #$4B sta ipeia+ddrb lda #$0 I ora tril+pb sta tril+pb rts 4601 fabb ===> ram-test, zeiger init. <=== 6525 triport 1: data direct.reg. e 6525 triport 1: port reg. b 6525 triport 1: data direet.reg. b 6525 triport 1: port reg. a 6525 triport 1: data direet.reg. a 6525 triport 2: port reg. a 6525 triport 1: port reg. b 6525 triport 2: rlata direet.reg. a 6525 triport 2: rlata direct.reg. b 6525 triport 2: port reg. a 6525 triport 2: port reg. c 6525 triport 2: data direet.reg. e 6526 cia: irq eontrol reg. lierl 6526 eia: data direet.reg.a (ddral 6526 cia: rlata direet.reg.b (ddrbl 6526 cia: eontrol reg. b lerbl 6526 eia: uhr: 1/10 sek.-reg triport 1: port reg. e 6525 triport 1: port reg. e 6525 triport 1: port reg. c 6525 triport 1: port reg. e 6526 eia: eontrol reg. a leral 6526 eia: irq eontrol reg. lierl 6526 eia: irq eontrol reg. lierl 6526 eia: periph.data reg. b (prbl 6526 eia: data direet.reg.a lddral 6526 eia: eontrol reg. b (erbl 6526 eia: control reg. a leral 6526 eia: data direet.reg.b (ddrbl 6525 triport 1: port reg. b 6525 triport 1: port reg. b

359 610/710 os-kernal2 hard+soft ass/reass.... seite 0094 zeile adr. obj.-code source-code 4602 fabb 4603 fabb a H I HO 46H I faba fabb fabd fabe fa9 I fa94 fa95 fa97 fa99 fa9b fa9e faa I faa3 faa6 faa9 faab faad faaf fabl fab3 fab5 fab7 fabb faba fabc fabe faco fac2 fac3 fac5 fac7 fac9 facb facc face facf fad I fad3 fad5 fad7 fad9 fada fadb fadd fadf fae2 fae5 faeb faea faeb faee fafo faf2 fah faf7 faf9 aa ea 9d d fb 02 eb do H a9 0 I Bd 5a 03 Bd a9 02 Bd Bd c6 01 e6 01 a5 01 c9 Of fo 24 ao 02 b I 93 aa a I 93 bl 93 c9 55 do 15 Oa 9 I 93 b I 93 c9 aa do Oe Ba 9 I 93 cb do e4 e6 94 do eo fo d4 a6 01 ca Ba a2 ff ao fd Bd Be Be ao fa fb c6 ab c6 a5 a9 5d Bd 6a 03 a9 fe Bd 6b 03 ramtas lda #$00 tax pxl sta usrpok,x nop sta buf,x sta buf+$f8,x inx bne pxl lda #$01 sta i6509 sta memstr+2 sta lowadr+2 lda #$02 sta memstr sta lowadr dec i6509 sizlop inc i6509 lda i6509 cmp #$0f beq size ldy #$02 sizioo lda (sal},y tax size lda #$55 sta (sall,y lda (sal},y cmp #$55 bne size asl a sta (sal},y lda lsall,y cmp #$aa bne size txa sta (sall,y iny bne sizioo inc sah bne sizioo beq sizlop ldx i6509 dex txa ldx #$ff ldy #$fd sta hiadr+2 sty hiadr+l stx hiadr ldy #$fa clc jsr memtop dec ribuf+2 dec tapel+2 lda #$5d sta itape lda #$fe sta itape+l jmp code für 'usr'-routine vom control-file eingefügt basic input-puffer -$2ff basic input-puffer +$f indirection register bank anfang des benutzer speichers bank anfang des system speichers addrl anfang des benutzer speichers addrl anfang des system speichers 6509 indirectian register 6509 indirection register 6509 indirectian register addrl akt. load/stare adresse addrl akt. load/store adresse addrl akt. laad/stare adresse addrl akt. load/store adresse addrl akt. load/store adresse addrl akt. laad/store adresse addrh akt. laad/stare adresse 6509 indirection register bank ende des system speichers addrh ende des system speichers addrl ende des system speichers höchste ram-adr. lesen/schreiben bank rs232 eingabe-puffer bank kassettenpuffer addrl indir. cassette addrh ~ndir. cassette

360 610/710 os-kernal2 hard+soft ass/reass... seite 0095 zeile adr. obj.-code source-code 4660 fafc 60 rts 4661 fafd 4662 fafd 4663 fafd ===> tabeile der standard-vektoren <=== fafd faff fboi fb03 fb05 fb07 fb09 fbob fbod fbof fb II fbl fbl fbl fbl fblb e9 fb 21 ee aa fc bf f6 ed f5 49 f5 a3 f5 a6 f6 9c H ee H 6b f9 3d " 7f f6 46f7 4c f8 77 ee 4681 fbld lf eo 4682 fblf lf eo 4683 fb21 74 f fb23 80 f fb fb fb fb2b 4689 fb2d 4690 fb2f 4691 fb3t fb34 fb34 fb34 Oa f3 97 f2 ab f2 af f2 34 f2 30 f2 6c jmptab.word yirq.word timb.word panic.word nopen.word nclose.word nchkin.word nckout.word nclrch.word nbasin.word nbsout.word nstop.word ngetin.word nclall.word nload.ward nsave. word so.word jescrt.word jescrt.word nsecnd.word ntksa.word nrbyte.word nciout.word nuntlk.word nunlsn.word nlistn.word ntalk tabend jmp lnminv/.end.lib kernal3 interrupt-routine (irq-vectorl monitor-einsprung "break-vektor nmi-routine lnmi-vector/ log. file öffnen/befehl ausgeben logisches file schliessen eingabe-kanal öffnen ausgabe-kanal öffnen alle kanäle schliessen eingabe I char vom aktiven kanal in ac (chn-vector/ ausgabe I char auf akt. kanal stop-taste Überprüfen eingabe I char vom aktiven kanal in ac (queue-vector/ alle logischen files schliessen einlesen vom log. file abspeichern auf log. file monitor-befehl lesen Ieinsprung von usrcmd/ bearbeitung von escape-funktionen bearbeitung von escape-funktionen sekundäradr. nach listen ausgeben akt. sekundäradr. auf iec-bus ausgeben byte von iec nach ac ac auf iec-bus (mit eof-flag/ untalk auf iec-bus ausgeben unlisten auf iec-bus ausgeben listen auf iec-bus ausgeben talk auf iec-bus ausgeben ind. sprung nmi-vector (von $fffa/

361 610/710 os-kernal3 hard+soft ass/reass... seite 0096 zeile adr. obj.-code source-code H96 H H99 HOO HOl fb34 fb34 fb34 fbh fb36 fb38 fb3a fb3c fb3e fb fb fb fb43 ===> adr. des filenamens eintragen <=== 85 9d b b b setnam sta fnlen lda e6509,x sta fnadr lda i6509,x sta fnadr+l lda usrpok,x sta fnadr+2 rts länge akt. filename 6509 execution register addrl akt. filename 6509 indirection register addrh akt. filename jmp code für usr -routine bank akt. filename 4709 fb43 ===>log., geräte-und sekundäradr. aktualisieren <=== HIO fb fb e setlfs sta la 4712 fb f stx fa 4713 fb47 84 ao sty sa 4714 fb49 60 rts H 15 fbh 4716 fb4a 4717 fb4a ===> system-status lesen/schreiben <=== 4718 fb4a fbh readst bcc storst 4720 fb4c a5 9f lda fa 4721 fb4e c9 02 cmp 1$ fb50 do Ob bne readss 4723 fb52 ad 7a 03 lda rsstat 4724 fb55 48 pha 4725 fb56 a9 00 lda 1$ fb58 fo II beq statxt akt. logische Filenummer akt. primäradresse lgeräte-nummerl akt. Sekundäradresse ac in status bzw rs232-status akt. primäradresse (geräte-nummerl fehler-status setzen rs232: akt. rs232-status stack in rs232-status fb5a fb5a 4729 fb5a ===> fehlerflag und status setzen <=== fb5a 4731 fb5a 8d setmsg sta msgflg message flag 4732 fb5d 4733 fb5d 4734 fb5d ===> fehler-status setzen <=== fb5d 4736 fb5d a5 9c 4737 fb5f 4738 fb5f readss lda status 4739 fb5f ===> ora ac in status <=== 4740 fb5f 4741 fb5f 05 9c udst ora status fb61 fb63 fb c 60 sta status rts fb64 47H HH fbh fb64 fb64 fb65 fb6 7 fb69 fb6b 4753 fb6b ===> ac in status bzw rs232-status <=== 48 a5 9f c9 02 do 05 storst pha lda fa cmp 1$02 bne storss i/o operation status i/o operation status i/o operation status akt. primäradresse (geräte-nummerl stack in status

362 610/710 os-kernal3 hard+soft ass/reass.... seite 0097 zeile adr. obj.-code source-code 4754 fb6b ===> stack in rs232-status <=== fb6b fb6b fb6c Bd Ta fb6f fb fb70 statxt pla sta rsstat rts 4761 fb70 ===> stack in status <=== 4162 fb fb fb c 4765 fb fbh 4767 fbh storss pla sta status rts 4768 fb74 ===> timeout iec-bus einlaus <=== 4169 fb fb74 Bd 5e 03 settmo sta timout 4771 fb77 60 rts 4112 fb fb fb18 ===> höchste ram-adr. lesen/schreiben <=== 4775 fb fb fb7a 4118 fb1d 4779 fbbo HBO fb83 HBI fb ad 5d 03 ae 5b 03 ac 5c 03 memtop bcc settop lda memsiz+2 ldx memsiz ldy memsiz+l rs232: akt. rs232-status ilo operation status 4782 fb83 ===> xr,yr,ac in zeiger höchste ram-adr. <=== 4183 fb fb83 Be 5b fb86 Be 5c fb89 Bd 5d 03 HB 7 fbbc fbbd fbbd fbbd fbbd fbbd fbbf fb92 fb fb fb98 settop stx memsiz sty memsiz+l sta memsiz+2 rts ===> niedrigste ram-adr. lesen/schreiben <=== ad 5a 03 ae ac membot bcc setbot lda memstr+2 ldx memstr ldy memstr+l 4798 fb98 ===> xr,yr,ac in zeiger anfang ram-adr. <=== fb fb fb9b 4802 fb9e 4803 fba fbaz 4805 fba2 Be Be Bd 5a 03 setbot stx memstr sty memstr+l sta memstr+z rts ieee timeout enable flag xr,yr,ac in zeiger höchste ram-adr. bank ende des benutzer speichers addrl ende des benutzer speichers addrh ende des benutzer speichers addrl ende des benutzer speichers addrh ende des benutzer speichers bank ende des benutzer speichers xr,yr,ac in zeiger anfang ram-adr. bank anfang des benutzer speichers addrl anfang des benutzer speichers addrh anfang des benutzer Speichers addrl anfang des benutzer Speichers addrh anfang des benutzer speichers bank anfang des benutzer speichers 4806 fbaz ===> standard-vektoren für jsr und interrupts einrichten <=== 4801 U fba2 fba2 fba4 fba6 fbab a2 fd ao fa a9 Of 18 res tor ldx #$fd ldy ll$fa lda ll$0f clc

363 610/710 os-kernal3 hard+soft ass/reass seite 0098 zeile adr. obj.-code source-code 4812 fba9 4B13 fba fba9 ===> lesen/schreiben der akt. system-ram-vektoren <=== 4B15 fba fba vector stx sal addrl akt. load/store adresse 4817 fbab sty sah addrh akt. load/store adresse 481B fbad a6 01 ldx i indirection register 4819 fbaf B5 01 sta i indirection register 4820 fbbl 90 Oa bcc vect fbb3 ao 33 ldy 1$33 4B22 fbb5 b vect20 lda cinv,y addrl irq vector 4823 fbb sta lsal},y addrl akt. load/store adresse 4824 fbba 88 dey 4825 fbbb 10 fb bpl vect fbbd ao 33 vect50 ldy 1$ fbbf bl 93 vect60 lda I sal J, y addrl akt. load/store adresse 4828 fbcl sta cinv,y addrl irq vector 4829 fbc4 BB dey 4830 fbc5 10 fb bpl vect fbc stx i indirection register 4832 fbc9 60 rts 4B33 fbca 4B34 fbca 4835 fbca Be fb 03 vreset stx evect addrl warmstart-vector 4B36 fbcd Be f9 03 sty evect+f addrh warmstart-vector 4837 fbdo a9 5a lda l$5a 4B3B fbd2 Bd fb 03 sta evect+3 warmstart-variable 4839 fbd5 60 rts 4840 fbd fbd6 4B42 fbd6 ===> interrupt-routine I irq} <=== 4843 fbd fbd6 48 nirq pha 4845 fbd7 Ba txa 4846 fbdb 48 pha 4847 fbd9 98 tya 4848 fbda 48 pha 4B49 fbdb ba tsx 4B50 fbdc bd lda stack+4,x 6509 cpu-stack 4851 fbdf and #$ fbel do 03 bne brkirq sprung auf brk-vector I im irq} 4853 fbe3 6c jmp lcinv} addrl irq vector 4854 fbe fbe fbe6 6c brkirq jmp lcbinvj sprung auf brk-vector I im irq J 4857 fbe9 4B58 fbe fbe9 ===> interrupt-routine lirq-vector} <=== 4860 fbe fbe9 a5 01 yirq lda i indirection register 4862 fbeb 48 pha 4863 fbec d8 cld 4864 fbed ad 07 de lda trif+air 6525 triport 1: active irq reg fbfo do 03 bne irqooo 4866 fbfz 4c az fc jmp prendn irq-ende, stack nach i6509,yr,xr.ac 4867 fbf fbf fbf5 c9 10 i rqooo cmp #$1 0

364 610/710 os-kernal3 hard+soft ass/reass.... seite 0099 zeile adr. obj.-eode source-eode 4B70 fbf7 fo 03 4B71 fbf9 4e 5b fc 4872 fbfc 4B13 fbfe beq irq002 jmp irqioo 4B74 fbfc ad 01 dd irq002 lda acia+srsn 6551 acia: reset-write und status read-reg. 4B 15 fbff aa tax feoo and #$60 4B77 fe02 ab tay 4B7B fe03 4d 7b 03 eor dcdsr rs232: letzter ded/dsr wert 4B19 fc06 fo Od beq irq004 4BBO fcob 9B tya 48BI fe09 Bd 1b 03 sta dcdsr rs232: letzter dcd/dsr wert 48B2 fcoe Od 7a 03 ora rsstat rs232: akt. rs232-status 4BB3 feof Bd 1a 03 sta rsstat rs232: akt. rs232-status 48B4 fcl2 4 c 9f fc jmp irq900 4BB5 fcl5 48B6 fcl5 48B1 fcl5 48BB fcl6 4BB9 feib 4890 fc Ia rs232: eingabe end zeiger 4891 fcld 4B92 feie rs232: eingabe start zeiger 4B93 fc fc fc fc27 rs232: eingabe end zeiger fe2a 4B9B fc2b 4B99 fe2d 4900 fc2f 4901 fe fe fc fc fc3a 4906 fc3d 4907 fc B fc43 fc45 fc4 7 fc4a fde fc4e fc50 fe52 fc55 fc58 fe5b fc5b fe5b fc5d fc5f fc62 Ba 29 OB fo 26 ae 7d 03 cb cc 7c 03 do 04 a9 OB do 13 Be 7d 03 BB a6 ab ae 01 dd ad 00 dd 91 a6 Ba Od 7a 03 Bd 7a 03 ad 0 I dd fo 11 ad 02 dd 29 Oe e9 04 do 08 a9 f3 2d 02 dd Bd 02 dd 4c 9f fc c9 08 do Oa ad Od db 58 irq004 txa and #$08 beq irqoio ldy ridbe iny cpy ridbs bne irq005 lda #$08 bne irq001 irq005 sty ridbe dey ldx ribuf+2 stx i6509 ldx acia+srsn lda aeia+drsn sta lribufl.y txa and #$01 irq007 ora rsstat sta rsstat irqoio lda acia+srsn and #$10 beq irq090 lda acia+cdr and #$Oe cmp #$04 bne irq090 lda #$f3 and acia+cdr sta acia+cdr irq090 jmp irq900 irqioo cmp #$08 bne irq110 lda ipcia+ier eli bank rs232 eingabe-puffer 6509 indirection register 6551 acia: reset-write und status read-reg aeia: data reg. write transmit, read = reeeive addrl rs232 eingabe-puffer rs232: akt. rs232-status rs232: akt. rs232-status 6551 aeia: reset-write und status read-reg acia: command-reg ac~a: command-reg acia: command-reg cia: irq control reg. licrl

365 610/710 os-kernal3 hard+soft ass/reass.... seite 0100 zeile adr. obj. -code source-code 49Z4 fc63 zo 48 fd jsr ipserv 4925 fc66 4c 9f fc jmp irq900 49Z6 fc69 49Z7 fc69 49Z8 fc69 58 irq 110 cli 49Z9 fc6a c9 04 cmp #$ fc6c do Oe bne irqzoo 4931 fc6e ad Od dc lda cia+icr 6SZ6 cia: irq control reg. I icr J 493Z fc71 Od ora alarm flag für irq von 6SZ fc74 Bd sta alarm flag für irq von 6SZ fc77 4c 9f fc jmp irq fc7a 4936 fc7a 4937 fc7a c9 oz irqzoo cmp #$0Z 493B fc 7c do 03 bne irq300 tastatur lesen, ti steilen im irq 4939 fc7e 4c 9f fc jmp irq fcbi 4941 fcbi 4942 fcbi ===> tastatur lesen, ti stellen im irq <=== 49H fcbi zo 13 eo irq300 jsr jkey tastatur lesen/in puffer schreiben 4945 fc84 zo 79 f9 jsr udtim system-zeit aktualisieren 4943 fcbi 4946 fcb7 ad 01 de lda tril+pb 6SZS triport 1: port reg. b 4947 fcba bpl irq fcbc ao 00 ldy #$ fcbe Be sty cas I cassette switchflag 4950 fc ora #$ fc93 do 07 bne irq3zo 49SZ fc9s ac irq310 ldy cas I cassette swi tchflag 4953 fc9b do OS bne irq fc9a Z9 bf and #$bf 4955 fc9c Bd 01 de irq3zo sta tri l+pb 6525 triport 1: port reg. b 4956 fc9f Bd 07 de irq900 sta tril+air 6525 triport 1: active irq reg fcaz 495B fca fcaz ===> irq-ende, stack nach i6509,yr,xr,ac <=== 4960 fcaz 4961 fca2 6B prendn pla 4962 fca sta i indirection register 4963 fcas 4964 fca fca5 ===> irq-ende, stack nach yr,xr,ac <=== 4966 fca fca5 68 prend pla 4968 fca6 ab tay 4969 fca 7 6B pla fcab aa tax 4971 fca9 68 pla fcaa 4973 fcaa 4974 fcaa fcaa ===> nmi-routine lnmi-vectorj <=== 4976 fcaa 40 panic rti 4977 fcab 4978 fcab 4979 fcab ad 00 OB iprqst lda ipb+ipccmd coprozessor-puffer: command 4980 fcae 29 7f and #$7f 4981 fcbo ab tay

366 610/710 os-kernal3 hard soft ass/reass..... seite 0101 zeile adr. obj.-code source-code 49B2 fcbl fe 49B3 fcb4 a B4 fcb6 2d 01 db 49B5 fcb9 do fo 49B6 fcbb a9 OB 49B7 fcbd Od 01 db 49BB fcco Bd 01 db 49B9 fcc3 ea 4990 fcc4 ad 01 db 4991 fcc7 aa 4992 fccb fcca fo Oe B I B II " B B B 5039 fccc fccd fccf fcd2 fcd3 fcd4 fcd5 fcd6 fcdb fcda fcdd fceo fce3 fce6 fce9 fceb fcee fcfo fcfl fcf2 fcf3 fcf4 fcf7 fcfa fcfc fcff fd02 fd05 fd07 fd09 fdob fdoe fdll fdl4 fd 17 fdla fdlc fd lf fd22 fd25 fd26 fd29 fd2b fd2d fd2f fd32 Ba 49 OB Bd 01 db Ba ea ea ea do d3 a9 ff Bd 02 db ad oo OB Bd 00 db 20 OB fe ad 01 db 29 bf 8d 01 db ea ea ea 8d 01 db 20 fd a9 00 8d 02 db 20 f6 fd 20 e6 fd ao oo fo ld a9 ff 8d 02 db b d 00 db 20 ff fd 20.. fd a9 oo 8d 02 db 20 (6 fd 20 e6 fd c8 cc 03 OB do de ao oo ( ff fd 20 ee fd jsr getpar lda 1$04 and ipcia prb bne iprqst lda #$OB ora ipcia prb sta ipcia+prb nop lda ipcia prb tax and #$04 beq iprioo txa eor I$0B sta ipcia prb txa nop nop nop bne iprqst ipr I 00 lda #$ff sta ipcia ddra lda ipb+ipccmd sta ipcia pra jsr frebus lda ipcia prb and #$bf sta ipcia prb ora #$40 cli nop nop nop sta ipcia prb jsr waithi lda #$00 sta ipcia ddra jsr acklo jsr waitlo ldy #$00 beq ipr250 ipr200 lda #$ff sta ipcia ddra 6526 cia: periph.data reg. b (prbl 6526 cia: periph.data reg. b (prbl 6526 cia: periph.data reg. b (prbl 6526 cia: periph.data reg. b (prb} 6526 cia: periph.data reg. b (prbl 6526 cia: data direct.reg.a (ddral coprozessor-puffer: command 6526 cia: periph.data reg. a (pral 6526 cia: periph.data reg. b (prbl 6526 cia: periph.data reg. b (prbl 6526 cia: periph.data reg. b (prbl 6526 cia: data direct.reg.a (ddral 6526 cia: data direct.reg.a (ddral lda ipb ipcdat,y coprozessor-puffer: data puffer sta ipcia+pra 6526 cia: periph.data reg. a (pral jsr ackhi jsr waithi lda #$00 sta ipcia ddra jsr acklo jsr waitlo iny ipr250 cpy ipb ipcin bne ipr200 ldy #$00 beq ipr350 ipr300 jsr ackhi jsr waithi 6526 cia: data direct.reg.a (ddral coprozessor-puffer: # input bytes

367 610/710 os-kernal3 hard+soft ass/reass... seite 0102 zeile adr. obj.-code source-code 5040 fd I fd3b 5042 fd3b 500 fd3e 50H fd4 I 5045 fd42 ad 00 db OB 20 f6 fd 20 e6 fd cb cc 04 OB 5046 fdh do eb 5047 fd fd fd4b 5050 fd fd4a 5052 fd4d 5053 fd fd fd fd fd59 505B fd5a 5059 fd5b 5060 fd5c 5061 fd5f 5062 fd fd fd fd fd6c 5067 fd6f a9 00 Bd 02 db ad 00 db Bd 00 OB 29 7f ab fe 9B oa ab b9 10 OB Bd 01 OB cb b9 10 OB Bd 02 OB 20 ff fd 20 e6 fd ao oo cc 03 OB fo B fd fd fd76 20 f6 fd 5071 fd79 20 ee fd 5072 fd7c ad 00 db 5073 fd7f OB 5074 fdb2 20 ff fd 5075 fdb5 20 e6 fd 5076 fdbb cb 5077 fdb9 do e6 507B fdbb 2c 00 OB 5079 fdbe BO fd90 a9 fd 50B I fd B2 fd93 a9 9B 50B3 fd95 4B 50B4 fd96 6c 01 OB 50B5 50B6 50B 7 50BB 50B , fd99 fd99 fd99 fd9c fd9e fdao fda3 fda5 fdab fdab fdae fdbl fdb4 20 f6 fd ao oo fo ld 20 ee fd a9 ff Bd 02 db b9 05 OB Bd 00 db 20 ff fd 20 e6 fd a9 00 lda ipcia+pra 6526 cia: periph.data reg. a lpraj sta ipb+ipcdat.y coprozessor-puffer: data puffer jsr acklo jsr waitlo iny ipr350 cpy ipb+ipcout coprozessor-puffer: II output bytes bne ipr300 rts ipserv lda 11$00 sta ipcia+ddra lda ipcia+pra sta ipb+ipccmd and 11$7f tay jsr getpar tya asl a tay lda ipjtab,y sta ipb+ipcjmp iny 6526 cia: data direct.reg.a lddra) 6526 cia: periph.data reg. a lpraj coprozessor-puffer: command coprozessor-jump tabeile coprozessor-puffer: jump addrl lda ipjtab,y coprozessor-jump tabeile sta ipb+ipcjmp+l coprozessor-puffer: jump addrh jsr ackhi jsr wai tlo ldy 11$00 ipsioo cpy ipb+ipcin beq ips200 jsr acklo jsr waithi coprozessor-puffer: # input bytes lda ipcia+pra 6526 cia: periph.data reg. a (pra) sta ipb+ipcdat,y coprozessor-puffer: data puffer jsr ackhi jsr waitlo iny bne ipsioo ips200 bit ipb+ipccmd bmi ips500 lda ll$fd pha lda II$9B pha coprozessor-puffer: command jmp lipb+ipcjmp) coprozessor-puffer: jump addrl ips300 jsr acklo ldy 11$00 beq ips350 ips310 jsr waithi lda #$ff sta ipcia ddra 6526 cia: data direct.reg.a (ddraj lda ipb+ipcdat,y coprozessor-puffer: data puffer sta ipcia+pra jsr ackhi jsr waitlo lda #$ cia: periph.data reg. a lpraj

368 610/710 os-kernal3 hard+soft ass/reass.... seite 0103 zeile adr. obj.-code source-code 509B fdb6 Bd 02 db sta ipcia+ddra 6526 cia: data direct.reg.a (ddra} 5099 fdb9 20 f6 fd jsr acklo 5100 fdbc cb iny 5101 fdbd cc 04 OB ips350 cpy ipb+ipcout coprozessor-puffer: # output bytes 5102 fdco do de bne ips fdc2 60 ips400 rts 5104 fdc fdc fdc3 a9 fd ips500 lda #$fd 5107 fdc5 4B pha 51 0B fdc6 a9 ce lda #$ce 5109 fdcb 48 pha 5110 fdc fe jsr getbus 5111 fdcc 6c 01 OB jmp (ipb+ipcjmp} coprozessor-puffer: jump addrl 5112 fdcf 5113 fdcf 5114 fdcf 20 OB fe ips600 jsr frebus 5115 fdd2 ad 04 OB lda ipb+ipcout coprozessor-puffer: # output bytes 5116 fdd5 Bd 03 OB sta ipb+ipcin coprozessor-puffer: # input bytes 5117 fddb Bd 00 OB sta ipb+ipccmd coprozessor-puffer: command 511B fddb a9 00 lda #$ fddd Bd 04 OB sta ipb+ipcout coprozessor-puffer: # output bytes 5120 fdeo 20 ab fc jsr iprqst 5121 fde3 4c c2 fd jmp ips fde fde fde6 ad 01 db waitlo lda ipcia+prb 6526 cia: periph.data reg. b (prb} 5125 fde and #$ fdeb do f9 bne wai tlo 5127 fded 60 rts 5128 fdee 5129 fdee 5130 fdee ad 01 db waithi lda ipcia+prb 6526 cia: periph.data reg. b (prbj 5131 fdfl and #$ fdf3 fo f9 beq waithi 5133 fdf5 60 rts 5134 fdf fdf fdf6 ad 01 db acklo lda ipcia+prb 6526 cia: periph.data reg. b (prbj 5137 fdf9 29 f7 and #$f fdfb Bd 01 db sta ipcia+prb 6526 cia: periph.data reg. b (prb} 5139 fdfe 60 rts 5140 fdff 5141 fdff 5142 fdff a9 OB ackhi lda #$ feo 1 Od 01 db ora ipcia +prb 6526 cia: periph.data reg. b (prb} 51H fe04 Bd 01 db sta ipcia+prb 6526 cia: periph.data reg. b (prb} 5145 feo 7 60 rts 5146 feob 5147 feob 5148 feob ad 01 de frebus lda tri1+pb 6525 triport 1: port reg. b 5149 feob 29 ef and #$ef 5150 feod Bd 01 de sta tri1+pb 6525 triport 1: port reg. b 5151 fe10 60 rts 5152 fe fe fe 11 ad 01 db getbus lda ipcia+prb 5155 fe and #$ cia: periph.data reg. b (prb}

369 610/710 os-kernal3 hard+soft ass!reass... seite 0104 zeile adr. obj.-code source-code beq getbus lda tri I +pb ora #$10 sta tril+pb rts 5156 fel6 fo f feib ad 01 de 5158 felb feld Bd 01 de 5160 fe fe21 fe21 fe21 b fe24 H 5165 fe25 29 Of 5166 fe27 Bd 03 OB 5167 fe2a fe2b 4a 5169 fe2c 4a 5170 fe2d 4a 5171 fe2e 4a 5172 fe2f Bd 04 OB 5173 fe fe fe33 5 I 76 fe33 a2 ff ipcgo 5177 fe fe37 ad 01 de 5 I 79 fe3a 29 ef 5180 fe3c Bd 01 de 5181 fe3f ea 5182 fe40 ad 01 db 5183 fe43 6a 5184 feh bo feh 60 5 I 86 fe fe fe47 a9 00 ipcgx lda #$ fe49 78 sei 5190 fe4a Bd 01 db 5191 fe4d a fe4f ea 5193 fe50 ea 5194 fe51 ea 5195 fe52 ea getpar lda ipptab,y pha and #$0f sta ipb+ipcin pla lsr a lsr a lsr a lsr a sta ipb+ipcout rts ldx #$ff stx i6509 lda tri I +pb and #$ef sta tril+pb nop lda ipcia+prb ror a bcs ipcgx rts sta ipcia+prb lda #$40 nop nop nop nop 5196 fe53 Bd 01 db sta ipcia+prb 5197 fe56 58 cli 5198 fe57 4c 57 fe iploop jmp iploop 5 I 99 fe5a 5200 fe5a 5201 fe5a 6c 6a 03 xtape jmp (itape} 5202 fe5d 5203 fe5d 5204 fe5d ===> pla, pla, ausg. "i/0 error: 5 <=== 5205 fe5d 5206 fe5d fe5e ZIO fe5f fe62 fe6z 4c 45 f triport 1: port reg. b 6525 triport 1: port reg. b coprozessor-parameter tabeile coprozessor-puffer: # input bytes coprozessor-puffer: # output bytes 6509 indirection register 6525 triport 1: port reg. b 6525 triport 1: port reg. b 6526 cia: periph.data reg. b (prbl 6526 cia: periph.data reg. b (prbl 6526 cia: periph.data reg. b (prbl addrl indir. cassette nocass pla pla jmp error5 ausgabe "i/o error: 5" 5211 fe62 ===> "stah"-vektor nach "sah"-vektor und bank# nach i6509 <=== 5212 fe fe62 a5 9a rd300 lda stah addrh anfang akt. load/store

370 610/710 os-kernal3 hard+soft ass/reass.... seite 0105 zeile adr. obj.-code source-code 5214 fe fe fe6b 5217 fe6a 521B fe6c 5219 fe6e 5220 fe fe fe71 B5 94 a5 99 B5 93 a5 9b B5 95 B sta sah lda stal sta sal lda stas sta sas sta i6509 rts 5223 fe71 ===> vektor 'sal - 'eal <=== 5224 fe B B fe71 fe72 feh fe76 fe7b fe7a fe7c fe7e fe7f fe7f fe7f feb1 feb3 feb5 feb7 feb9 febb febd febf 3B a5 93 e5 96 a5 94 e5 97 a5 95 e5 9B 60 e6 93 do Oe e6 94 do Oa e6 95 a5 95 B5 01 a9 02 B5 93 cmpste sec lda sal sbc eal lda sah sbc eah lda sas sbc eas rts incsal inc sal bne incr20 inc sah bne incr20 inc sas lda sas sta i6509 lda #$02 s ta sal 52H fe91 60 incr20 rts 5245 fe fe fe fe fe fe fe fe9b 5253 fe9a 5254 fe9c 5255 fe9d 5256 fe9d 5257 fe9d 525B fe9f 5259 feao ===> filename 'bank x in ac, offset yr <=== a6 01 a5 92 B5 01 b 1 90 B B5 01 Ba 1B 5260 feal fea fea5 cb 5263 fea6 aa 5264 fea 7 9B B feab fea9 feaa feab feae febo feb2 48 Ba ff a9 fe 91 ac OB fnadry ldx i6509 lda fnadr+2 sta i6509 lda (fnadr), y stx i6509 rts txjmp sta i6509 txa clc adc #$02 bcc txjmp1 iny txjmp 1 tax tya pha txa pha jsr ipinit lda #$fe sta (ipoint),y exsub php addrh akt. load/store adresse addrl anfang akt. load/store addrl akt. load/store adresse bank anfang akt. load/store bank akt. load/store adresse 6509 indirection register addrl akt. load/store adresse addrl ende akt. load/store addrh akt. load/store adresse addrh ende akt. load/store bank akt. load/store adresse bank ende akt. load/store addrl akt. load/store adresse addrh akt. load/store adresse bank akt. load/store adresse bank akt. load/store adresse 6509 indirection register addrl akt. load/store adresse 6509 indirection register bank akt. filename 6509 indirection register addrl akt. filename 6509 indirection register 6509 indirection register 'ipoint' auf $0100, yr=$ff addrl ram indirekt-painter

371 610/710 os-kernal3 hard+soft ass/reass.... seite 0106 zeile adr. obj.-code source-code 5272 feb3 7B sei 5273 feb4 48 pha 5214 feb5 Ba txa 5275 feb6 48 pha 5276 feb7 9B tya 5277 febb 48 pha 527B feb ff jsr ipini t ipoint auf $0100, yr=$ff 5279 febc ab tay 52BO febd a5 00 lda e execution register 52BI febf 20 2a ff jsr putag ac nach lipoint},y yr=yr-1 52B2 fec2 a9 04 lda tt$04 52B3 fec4 a2 ff ldx tt$ff 52B4 fec ff jsr putaxs xr, ac nach lipoint},y yr=yr-2 52B5 fec9 ba tsx 52B6 feca bd lda stack+5,x 6509 cpu-stack 52B7 fecd 3B sec 52BB fece e9 03 sbc tt$03 52B9 fedo 48 pha 5290 fedl bd lda stack+6,x 6509 cpu-stack 5291 fed4 e9 00 sbc tt$ fed6 aa tax 5293 fed7 6B pla 5294 fedb ff jsr putaxs xr, ac nach (ipoint},y yr=yr fedb 9B tya 5296 fedc 3B excomm sec 5297 fedd e9 04 sbc #$04 529B fedf Bd ff 01 sta buf-1 basic input-puffer fee2 ab tay 5300 fee3 a2 04 ldx tt$ fee5 6B exsuio pla 5302 fee6 cb iny 5303 fee7 91 ac sta lipoint},y addrl ram indirekt-painter 5304 fee9 ca dex 5305 feea do f9 bne exsuio 5306 feec ac ff 01 ldy buf-1 basic input-puffer feef a9 2d lda tt$2d 530B fefl a2 ff ldx tt$ff 5309 fef ff jsr putaxs xr, ac nach lipoint},y yr=yr fef6 6B pla 5311 fefl 68 pla 5312 fefb ba tsx 5313 fef9 Be ff 01 stx buf-1 basic input-puffer -I 5314 fefc 9B tya 5315 fefd aa tax 5316 fefe 9a txs 5317 feff a5 0 I lda i indirection register 5318 ffoi 4c f6 ff jmp kgbye ac in 6509 execution register 5319 ff ff ff04 ea nop 5322 ff ff ff05 ===> rückkehr-adresse wenn rts <=== 5325 ff H05 08 excrts php ff06 08 php 5328 ff07 78 sei 5329 ff08 48 pha

372 610/710 os-kernal3 hard+soft ass/reass.... seite 0107 zeile adr. obj.-code source-code 5330 ff09 Ba txa 5331 ffoa 48 pha 5332 ffob 98 tya 5333 ffoc 48 pha 5334 ffod ba tsx 5335 ffoe bd lda stack+6,x 6509 cpu-stack 5336 ffll sta i indirection register 5337 ffl ff jsr ipinit ipoint auf $0100, yr=$ff 5338 ffl6 4c dc fe jmp excomm 5339 ffl ffl ffl9 ===> ipoint auf $0100, yr=$ff <=== 5342 ffl ffl9 ao 01 ipinit ldy 1$01 53H fflb 84 ad sty ipoint+l addrh ram indirekt-painter 5345 ffld 88 dey 5346 ffle 84 ac sty ipaint addrl ram indirekt-painter 5341 ffzo BB dey 534B ff21 bl ac lda lipaintl,y addrl ram indirekt-painter 5349 ff23 60 rts 5350 ff ff ff24 ===> xr, ac nach I ipoint I, y yr=yr-2 <=== 5353 ff ff24 48 putaxs pha 5355 ff25 Ba txa 5356 ff26 9 I ac sta I ipoint I, y addrl ram indirekt-painter 5357 ffzb 88 dey 5358 ffz9 68 pla 5359 ff2a 5360 ffza 5361 ff2a ===> ac nach lipointl,y yr=yr-1 <=== 5362 ff2a 5363 ff2a 9 I ac putag sta I ipoint I, y addrl ram indirekt-painter 5364 ff2c 88 dey 5365 ff2d 60 rts 5366 ff2e 5367 ff2e 5368 ffze 68 pla 5369 ff2f ab tay 5370 ((30 68 pla 5371 ff3 I aa tax 5372 ((32 68 pla 5373 ff33 28 plp 5374 ff34 60 rts 5375 ff ff ff35 08 php 5378 ((36 6c fa ff jmp lhanmil 6509 hardware-nmi-vektor 5379 ff ff ((39 00 brk 5382 ff3a ea nop 5383 ff3b 60 rts 5384 ff3c 53B5 ff3c 5386 ff3c 58 cli 5387 ff3d 60 rts

373 os-kernal3 hard+soft asslreass seite 0108 zeile adr. obj.-code source-code 5388 ff3e 5389 ff3e 5390 ff3e 5391 ff3e 5392 ff3e = $2e 5393 ff6c 5394 ff6c 5395 ff6c 4c 9d fe knwsys jmp txjmp transfer-of-execution jumper 5396 ff6f 5397 ff6f 5398 ff6f 4c ca fb kvrese jmp vreset netz einlaus reset-vector 5399 ff ff ff72 4c 33 fe kipcgo jmp ipcgo mon-befehl z umsch. auf coprozessor 5402 ff ff ff75 4c 22 eo kfunky jmp jfunky vector für Funktionstasten 5405 ff ff ff78 4c ab fc kipcrq jmp iprqst vector für ipc-anforderung HOB ff7b 5409 ff7b 5410 ff7b 4c fb f9 kioini jmp ioinit initialisierung ein-lausgabe 5411 ff7e 5412 ff7e 5413 ff7e 4c 04 eo kcint jmp jcint initialisierung bildschirm 5414 ff ff ff81 4c 00 H kalloc jmp tttop allocation-routine ff ff ff84 4c a9 fb kvecto jmp vector ein-lausgabe-vectoren lesen I schreiben 5420 ff ff ff87 4c a2 fb kresto jmp restor standard ein-lausgabe-vectoren setzen 5423 ffba 5424 ff8a 5425 ff8a 4c 60 f6 klkups jmp lkupsa geräteadr. Über sekundäradr. suchen 5426 ff8d 5427 ff8d 5428 ff8d 4c 78 f6 klkupl jmp lkupla geräte- sekundäradr. Über log. file# suchen 5429 ff ff ff90 4c 5a fb kstmsg jmp setmsg meldung des operat.syst. ausgeben 5432 ff ff ff93 6c ksecnd jmp lisecndl auf iec-bus sekundäradr. nach listen ausgeben 5435 ff ff ff96 6c ktksa jmp (itksaj auf iec-bus sekundäradr. nach talk ausgeben 5438 ff ff99

374 610/710 os-kernal3 hard+soft ass/reass... seite 0109 zeile adr. obj.-code source-code 5440 ff99 4c 78 fb kmemtp jmp memtop 5H I ff9c 5H2 ff9c 5443 ff9c 4c Bd fb kmembt jmp membot 54H ff9f 5H5 ff9f 5446 ff9f 4c 13 eo kscnky jmp jkey 5H 7 ffa2 5H8 ffa ffa2 4c 74 fb ksetmo jmp settmo 5450 ffa ffa ffa5 6c kacptr jmp (iacptrj 5453 ffab 5454 ffab 5455 ffab 6c 2a 03 kciout jmp (icioutj 5456 ffab 5457 ffab 5458 ffab 6c 2c 03 kuntlk jmp (iuntlkl 5459 ffae 5460 ffae 5461 ffae 6c 2e 03 kunlsn jmp (iunlsn} ffb! ffb! ffb! 6c klistn jmp (ilistnl 5465 ffb ffb ffb4 6c ktalk jmp (italk} 5468 ffb ffb ffb7 4c 4a fb kreast jmp readst 5471 ffba ffba 5473 ffba 4c 43 fb kstlfs jmp setlfs 5474 ffbd ffbd 5476 ffbd 4c 34 fb kstnam jmp setnam ffco 5478 ffco 5479 ffco 6c kopen jmp (iopen} 5480 ffc ffc ffc3 6c OB 03 kclose jmp (iclose} 5483 ffc ffc ffc6 6c Oa 03 kchkin jmp (ichkinj 5486 ffc ffc ffc9 6c Oe 03 kckout jmp (ickout} 5489 ffcc 5490 ffcc 5491 ffcc 6c Oe 03 kclrch jmp (iclrch} 5492 ffcf 5493 ffcf höchste speichergrenze lesen/schreiben unterste speichergrenze lesen/schreiben tastatur abfragen zeitüberwachung iec-bus ein ein byte von iec-bus nach accu ein byte aus accu auf iec-bus untalk auf iec-bus ausgeben unlisten auf iec-bus ausgeben listen auf iec-bus ausgeben talk auf iec-bus ausgeben ein/ausgabe-status lesen I schreiben log. filenummer, geräte- und sek.adr. eintragen länge und adr. des filenamens eintragen log. file Öffnen/befehl ausgeben logisches file schliessen eingabekanal öffnen ausgabekanal öffnen ein-/ausgabekanal schliessen

375 610/710 os-kernal3 hard+soft ass!reass... seite 0110 zeile adr. obj.-code source-code 5494 ffcf 6c kbasin jmp libasinl 5495 ffd ffd ffd2 ffd5 6c kbsout jmp libsoutl 5499 ffd ffd5 6c Ia 03 kload jmp (iload} ffd8 ffd8 ffd8 6c lc 03 ksave jmp lisavel 5504 ffdb 5505 ffdb 5506 ffdb 4c Oe f9 ksttim jmp settim ffde 5508 ffde 5509 ffde 4c e6 f8 krdtim jmp rdtim 5510 ffel 5511 ffel 5512 ffel 6c kstop jmp listop} 5513 ffe ffe ffe4 6c kgetin jmp ligetin} 5516 ffe ffe ffe7 6c kclall jmp liclalll 5519 ffea 5520 ffea 5521 ffea 5522 ffed 5523 ffed 4c 79 f9 kudtim jmp udtim 5524 ffed 4c 10 eo kscror jmp jscror 5525 fffo 5526 fffo 5527 fffo 4c 19 eo kplot jmp jplot 5528 fff fff fff3 4c lc eo 5531 fff fff6 jmp jiobas 5533 fff6 ===> ac in 6509 execution register <=== 5534 fff fff fff fff fff9 kgbye sta e6509 rts 5539 fff9 ===> prüfbyte rom $eooo-$ffff <=== eingabe I char vom aktiven kanal in ac (chn-vector} ausgabe I char auf akt. kanal einlesen vom log. file abspeichern auf log. file interne uhr stellen interne uhr ablesen stop-taste lesen eingabe I char vom aktiven kanal in ac (queue-vectorl alle logischen files schliessen interne uhr bedienen bildschirm Cursor-koordinaten lesen/schreiben basisadr. i/o-gerät nach xr/yr 6509 execution register 5540 fff fff9 01 checkf.byte $ fffa 550 fffa 5544 fffa ===> 6509 hardware-nmi-vektor <=== 5545 fffa 5546 fffa 31 fb hanmi.word tabend ind. sprung nmi-vector (von $fffa} 55H fffc 5548 fffc 5549 fffc ===> 6509 hardware-reset-vektor <===

376 610/710 os-kernal3 hard soft ass/reass... seite 0111 zeile adr. obj.-code source-code 5550 fffc 5551 fffc 97 f9 hares.ward start 5552 fffe 5553 fffe 5554 fffe ===> 6509 hardware-irq-vektor 5555 fffe 5556 fffe d6 fb hairq.ward nirq end end <=== system reset routine interrupt-routine (irq) fehler in pass I fehler in pass 2 assemblierung ende

377

378 5. TEIL CROSSREFERENZLISTE 2 CBH OPERATINGSYSTEH

379

380 crossreference.. seite a4 $effa a5 $effc a6 $f00b a9 $f00f acia $dd ackhi $fdff acklo $fdf adata $00db addkey $e1be addpr2 $ addpr4 $ addpr8 $ addprc $ adreg $ air $ alarm $ altm $eff altr $efcb altrit $eftt 28H arybnk $ ascl $ft0e ascii $ft atext $ec6f atkdcy $ attn $ autoff $ea auton $ea bl $ee2b b3 $ee bakchr $e bakot I $& bakot2 $e5a bakout $e59f begsl $efca bell $e48d bellto $e4b bellgo $e4b bellmd $039f bellof $e9d bellon $e9d bitabl $00e2 15 IH bitmsk $039c " I bitout $e50e I H bitpos $e51e 14H bitsav $e50c 146 I IHO bnio $f4ab bnl5 $f4b bn20 $Hba bn30 $f4c bn31 $f4c bn32 $Hc bn33 $Hca bn35 $Heb bn50 $Hd boio $fhb bo20 $f bo50 $f51 I I bo60 $f52a bo80 $f

381 crossreference.. seite 2 bo90 $f break $f8b brkirq $fbe bsour $00ab bszei 1 $ed bszeib $ed buf $ bufsiz $00al 485 bumpnt $e c3po $00aa cas 1 $ cbinv $ cdn10 $e H cdnup $e cdr $ cdrts $e cdword $e7aa ce $e4ba cenv3 $001c 275 ceto $e4bd cetl $e4cb 1410 "13 cet2 $e4d3 "12 "11 cet3 $e4db " cet4 $e4ed checkf $fff ci 1 $f2a cia $dcoo eint $eoh cinv $ ck10 $f5b ck15 $f5ce ck20 $f5b ck30 $f5d ck40 $f5d ck5 $f5ab ck50 $f5e ck60 $f5e cksume $eca5 26" clall2 $f6b cleft $e clmwid $ cloop1 $e cloop2 $eoh clpoo $e1bb clp1 $e1be clp2 $e clp7 $elc clrio $e H clrbi t $e clrln $e clrprt $e22c clrscr $ cls 10 $eob clsei $f8bf clsr $eob cmds $eed cmpste $fe config $00d er $000d 474 -,,

382 crossreference... seite 3,_/ cra $OOOe erb $DOOf creg $ critgo $e crlf $ef crsw $00d crtfo $e26d crt20 $e26f crtint $e crtlf $e crtset $e ctable $ebe ctdsp $e , 1107 ctext $e24d ctltbl $eb ctlvec $ II 15 ctr $ cup $e cupfo $e cuser $e3 II II d2 $ef4e dareg $ dav $ dc $ dcdsr $031b ddisk $00bf ddpa $ ddpb $ ddpc $ ddra $ ddrb $ delay $00d delwet $e5b delins $e5ae deloop $e5b delopf $e5d delout $e5c , 123 dflto $ dftln $00a I dibf $ disk $f disk10 $f disk15 $f18b disk20 $ff9a disk25 $ffa disk28 $ffb disk30 $ffba , 3264 dline $e66d dm $ef dmf $ef dm2 $ef8a doblnk $e21a , 129 doctl $e8c dorat $e90l doscrl $e38b dosctl $ dosdsk $ dosfnl $

383 crossreference.. seite doslfn $000e 5H dos1st $ drsn $ dspl $efa dspiz3 $efaz dsplym $ef8f dsplyr $ef4c dspp $ezic e6509 $ eah $ eal $ I eas $ eloupl $e55c eloupz $e I eloupp $e endbye $e eoi $ eoist $ eom $ erexit $f HZ errl $f errlpl $f erropr $ee errorl $f errorz $f93c error3 $f93f error4 $f error5 $f H error6 $f H09 error7 $f94b 3842 HIS error8 $f94e HZI error9 $f HZ7 errorx $f escape $e escgo $e97a 2164 z 174 escrts $e escvct $e985 z 176 z escvec $ etoeol $& etol $e etosol $e6a etout $e6a etsioo $e6b etstol $e6ac evect $03f H excomm $fedc excrts $ff exsuio $fee exsub $febz 5211 fa $009f H fat $033e fchi $ fclow $00 Hi Z65 findky $e findlp $e94d fistrt Se fnadr $ HOl fnadry $fe9z

384 cros reference.. seite 5 fndll fndend $e5u $eh I fndfst $e fndout $e fnlen $009d Fordz $ frebus $fe08!s006 5JJ freqhj $ freqlo $ fun;mp $e Funrts $e!l4 7 2JJO 2JJ Funvec $03b gl $f01b g2 $fii2f getlch $e J!S getbh $e4f5 JJ getbtl $e4f J!S getbus $fel 1 5JJO '- getkey $e91e Jf gethn $e getout $e Jf02 getpar $fe gettab $eil 51 Jf getych $e2u gnio $lud gnl5 $F gn20 $f gn232 $F gneldt $F go $ grmode $00cc hdrq $Fffe 5556 hanmi $fffa hares $Fffc 5551 havasc $e8c havkey $e8a hexll9 $fj5e JJ hexit $FI hiadr $ hlrll 10 $e357 JJ73 Jf75 homclr $e34a home $110c5 416 homes $e34f Jf66 JJ $ iacptr $ ibasin $ ibsout $0312 9J 5491 ichkin $030a iciout $032a ickout $030c ~ iclall $ iclose $ iclrch $030e icr $000d ifc $ igetin $

385 crossreference... seite 6 iline $e ilistn $ H64 iload $ incr20 $fe H incsal $fe1f indk $00d insio $e5f ins30 $e5f ins 50 $e insert $e5e insflg $039a insout $e insrt $00d invh $00b invl $00b ioioo $fa ioiio $fa4e iol20 $fa5f iobase $e03a ioinit $f9fb iopen $ H9 ipb $ ipbsiz $000d 552 ipccmd $ ipcdat $ ipcgo $fe ipcgx $fe ipcia $db ipcin $ ipcjmp $ ipcout $ ipinit $ff ipjtab $ iploop $fe ipoint $00ac ipptab $ iprioo $fcd ipr200 $fd ipr250 $fd ipr300 $fd2f ipr350 $fd iprqst $fcab ipsioo $fd ips200 $fd8b ips300 $fd ips310 $fda ips350 $fdbd ips400 $fdcz ips500 $fdc ips600 $fdcf 5114 ipserv $fd48 49Z irqooo $fbf irq002 $fbfc irq004 $fcl irq005 $fc irqoo 7 $fc3a _/

386 crossreference... seite irqoio $fcu U irq090 $fc irqtoo $fc5b U7f 4920 '-...< irqf10 $fc irqzoo $fc1a irq300 $fc H irq310 $fc irq320 $fc9c irq900 $fc9f U isave $03tc isecnd $ istop $ italk $ itape $036a itksa $ iunlsn $032& iuntlk $032c jcint $& jescrt $e01f jfunky $e jiobas $e01c jkey $e H 5H6 jloop5 $e00a jlp2 $e jltlk $f jmonon $e jmptab $fafd 4665 jmvcur $& jplot $e jprt $e00d jscror $& jxf10 $f5f jxf15 $f jxt20 $f61a jxt50 $f61d jxt51 $f61e jxt60 $f63c jx310 $f jx312 $f57c jx315 $f jx316 $f jx320 $f jx330 $f58a 379, 3817 jx340 $f jx350 $f59b jx600 $f jx750 $f6af jztoo $f kacptr $ffa kalloc $ff kbasin $ffcf kbsout $ffd , H4f 5497 kchkin $ffc kcint $ff7e 5413 kciout $ffa kckout $ffc kclall $ffe kclose $ffc kclrch $ffcc H33 H keword $e7a

387 erossre#erenee seite ~-1 lcey $el Uyd $03ab lceydef $ee2e lceyend $ee lceyfun $e&fl keyidx $ lceyins $e82e Uylen $ee lceypnt $00e f80s f806 fb lceyseg $ lceysho $e7f lceysiz $ rso lceyx1 $e87e Uyxit $e8f lceyxt2 $e8f7 13U lcfunlcy $ff lcgbye $fff Iegetin $ffe lcioini $ff7b 5410 lcipego $ff lciperq $ff lclistn $ffb lclkupl $ff8d 5428 lclkups $#fla 5425 lcload $ffd lcmembt $ff9e 5443 lc-tp $ff lcnwsys $ff6e 5395 lcopen $ffe lcplot $fff lcrdtim $ffde 5509 lcreut $ffb lcresto $ff lcsave $ffd lcsenlcy $ff9f 5446 leserar $ffed 5524 leseend $ff lcsetmo $ffa kshort $elfe lcstlfs $ffbl 5413 lcstmsg $ff lcstnam $ffbd 5476 lcstop $ffe lesttim $ffdb 5506 Ietalk $ffb Ietleu $ff lcudtim $ffea 5521 kunlsn $ffae lcuntllc $Hab lcveeto $ffb lcvrese $fffif 5398 lcy2ue $e kyinlp $eb4e lcyinolc $e85e lcyloop $e lcymove $e7f lcyndx $ lcysetl $e lcyset2 $e0a I lcyxit $ebfi ll $f05d l12 $f0a

388 crossreference... seite 9 1H $f0e $f0f $f _"-../ 120 $f0da l3 $f06a $f01e $f $f a $009e at $ d $f04a dl0 $f15a H 1dl00 $f dll0 $f dll5 $f83f dl80 $f d20 $f75d d22 $f d25 $f d30 $f ld40 $f7ba d410 $f d45 $f1c d60 $f1f d64 $f dtbl $ebcb dtb2 $ebb dtnd $ lf $000a 473 lineoi $e ine1p $e inrts $e66c lintmp $ inz0 $d linzl $d inzl0 $d H linz II $d H linzl2 $d3c H inzl3 $d4! H inzH $d inzl5 $d4b inzl6 $d ~ linz 17 $d inzl8 $d5a linzl9 $d5f inz2 $d0a linz20 $d linz21 $d linz22 $d6e linz23 $d linz24 $d inz3 $d0f linz4 $dl HO inz5 $dl HI 2410 linz6 $dle H inz1 $d H linz8 $d H inz9 $d2d H5 2H4 listl $f list2 $f lis tky $e6ff I istlp $e

389 crossreference.. seite 10 llcupla $f llcups2 $f lkups3 $f66d lkups4 $f lkupsa $f loding $f logscr $039e I 183 logsw $e6fl lookup $f63e loop2 $e loop3 $el2c loop3a $el loop4 $el loop5 $e lop2 $e lop5 $e18b lop52 $ela lop53 $ela loph $el9d lowadr $ lpl $e I lp2 $e0fe 576 7U 785 lp3 $e I lp70 $el lp15 $el lp80 $el stehr $ I 172 1StklO $e lstk20 $e73e lstk30 $& lstk40 $e79c lstlcat $e lstkcr $e lstlclp $e78d lstksc $e lstnr $ lstp $00ce lstx $00cd lsxp $OOcf I luking $f81b ~ m51cdr $ m51ctr $ membot $fb8d H92 5U3 memsiz $035b H77 H78 H79 H84 H85 H86 memstr $ H93 H94 H memtop $fb H76 5HO modkey $OOeO monoff $ee monon $eeoo 2638 movc 18 $e63d movc20 $e movc30 $& movchr $e62e movcur $e0da movl 10 $e3cl movlin $e3b msl $flc msg $f H37 msgio $f22e msgflg $ H35 H31 mxbanlc $

390 crossreference... seite II.,_/ nbasin $f49c nbsout $Hee nchkin $f I 4670 nciout $f nckout $f5a ncloio $f ncl020 $f ncl030 $f69b nclall $f61f nclose $f5ed nclrch $f6a ndac $ ndx $00dl newky4 $.SI I ngetin $f43d nirq $fbd njtio $e2cl njt20 $e2c njt30 $e2c nlistn $f nload $f nminv $ nocass $fe5d 5206 nodefn $e nodev $ nopen $f6bf norkey $00el H normtb $n noroom $eoaa nosec $e notfun $e8d nowhop $e I nrbyte $f30a nrfd $ nrmscr $ea nrmset $ea nsave $f84c nsecnd $f nstop $f96b ntalk $f ntcn $e2cf ntcnl $e2ec ntcnio $e2f ntcn20 $e2fc I 1098 ntext $ec ntksa $f nulxit $e8f I numlev $00ia 484 numtmp $ nunlsn $f2af nuntlk $f2ab nvs $ele nvs I $e lf nvs2 $e nvsa Se leb nxln $e37a 112 I nxln I $e38f nxtl $e nxt3 $e1de metehr $e , nxtd $e0cl

391 crossreference. seite 12 opooo $f&c opioo $f&ce opffo $f6d opl50 $f&fb opl52 $f opl75 $f op35 $f op40 $f12a op45 $f op50 $f openi $f107 40H openib $f opn020 $f opn030 $f opn045 $f3cl opn050 $f3c opn232 $f oscl $ OIC2 $ osc3 $000e oscctl $ outfn $f82e outqst $ef' pa $ II H pagres $e pagsav $03a pagset $e27d pagst2 $e2b pagsub $e panic $fcaa patall $f pb $ H65 H pc $ H61 H pch $ pcl $00af pi $00ff 492 pkybuf $00c pkyend $ plot $e pnt $00c pntr soocb ff H ff potx $ poty soota 213 pra $ prb $ preamb $e prend $fca prendn $f'ca prt Se prtio $e2a ptext $ec ptrsiz $ pulsec $

392 crossreference... seite 13 pulsef $ pulst I $ putag $ff2a ~--- ; putaxs $ff putbit $e putbtl $e putp $eeff pxl $fa8b qtsw $00d qtswc $elcd qtswi $eldb qtswl $eldd roo $ 217 rot $ r02 $ r03 $ r04 $ r05 $ r06 $ rot $ r08 $ r09 $ rio $OOOa 227 rll $000b 228 rl2 $000c 229 rl3 $000d 230 rl4 $000e 231 rl5 $000f 232 rl6 $ rl7 $00 II 234 ramtas $fa random $001b 214 rbyl $f rbylt $f rby2 $f31a rby4 $f33f rby5 $f rby7 $f35e rd300 $fe rddb $00c1 511 rdoa $fl rdoa2 $fl2f rdoae $f rdob $fl I rdob4 $fl rdobe $f03a rdoc $fl5f rdoxit $f03f rdplt $e rdtim $f8e readss $fb5d readst $fb4a regk $ef relsag $ relsah $ relsal $036f ren $ req256 $f3fc resnce $ restor $fba revscr $e9f

393 crossreference.. seite " ribuf $00a ridbe $031d ridbs $031c roomio $e08d rptcnt $00d rsstat $037a 13 I H rst232 $f42e rstbo $f50b rstorl $f510 37H 3746 runlop $e runrts $e62d runtb $eba rvs $ rvsf $e3h so $ee sl $ee s2 $ee I 2142 s3 $eea I s4 $eeb s6 $eed sa sooao sah $ " sal $0093 " H sas $ sat $ saving $f8d savkey $e savpos $e5a5 157 I I 75 I savx $ scatn $f scbot $00dd II scdio $e3d scd20 $e3f scd30 $e3d sclf $00de " scold $f9aa H90 H98 scrio $e42d scr40 $eh scr60 $e scr10 $e45a scr15 $ehe scr80 $e45f scr90 $e46a 135 I 1353 scr95 $e scrdis $039b I scrdwn $e3cd scrorg $e03f scrset $e0cf scrswo $e6e scrswl $e6e5 I 77 I 2200 scrt $00df scruoo $e3f scruio $e42c scrul5 $e I 702 scru20 $e '~

394 crossreference... seite 15 ~ scru30 $e4tl scrup $e3f sctop $00dc sddn $e6cb sddn2 $e6d sdr $000c 300 sedeal $00c6 ' sedul $00c sedtl $00d sedt2 $00da sedtj $03b $ se111u $ sequen $e setbit $e setbot $fb setbts $e9c setcrl $e9dc seterz $e9e setcr3 $e9ec setcr4 $e9ef setcr5 $e9f sethtb $e9bb sethtt $e9b setlfs $fb setlns $f setmsg $fb5a setnam $fb setr $ef setscr $eal settim $f90e settmo $fb settop $fb settps $e9dl setung $e9e shftgr $eae shfttb $ea sid $daoo sizioo $fab size $fad sizlop $faab slock $ sloopo $f9b sloopl $f9c sloop2 $f9d sloop3 $f9d sp $00b space $eflf sperr $ spmsg $f21c sreset $e9c srq $ srsn $ stl $ee stack $ stah $009a stal $ start $f

395 crossreference. seite 16 stas $009b status $009c JZH statxt $fb6b stkend $01fb 490 stlrey $ stop2 $f storss $fb storst $fb stprun $e61c strbnk $ strsiz $ stuio $e0c stupt $e0cd susrel $ suup $e6bd svio $f86a Sl/100 $f8d Sl/110 $f8d svll5 $f8d sv20 $f86d sv25 $f81e fl $f89f SI/50 $f8ba swarm $f9f sysbnlr $ t I $ t2 $ H t2t2 $fll t2t21 $fll t6509 $OObe tab $03al 148 " tabl $e35e tab2 $e tabend $fb tabit $e35a tabtos $e tahi $ talo $ tape I $ tbhi $ tblo $ tblx $00ca tby2 $f2d tby3 $f2de tby3t $f2e tby4 $f2e tby6 $f2fc tby7 $f tbyte $f2b tddb $003f 512 te $ timb $ee time $eel timero $f36f timout $035& tkatn $f tlkr $ ,,..;-~~

396 crossreference... seite 17 " tmpl $00b ' tmp2 $00bb tmpc $00bd toa010 $f3dl toa020 $f3db 3" toasci $f3c tocoio $f3e toc020 $f3f tocbm $f3dc todio $ todhr $000b todmin $000a todsec $ toin $ toout $ topoio $f41a topbad $f topxit $f toqm $e3a toqmx $e3b tranr $f73a tri 1 $deoo tri2 $df tttop $f txcrt $e txjmp $fe9d txjmpl $fea txtbnk $ txtprt $e udexit $f udst $fb5f udtim $f udttt $f98c ulstn $003f 518 unitd $efeb unlsl $f2bl usrcmd $031e usrpok $0002 II usrset $e9f utlkr $005f 517 varbnk $ vdc $d vect20 $fbb vect50 $fbbd vect60 $fbbf vector $fba verck $035f " view $efel volume $ vreset $fbca waithi $fdee jo 5132

397 crossreference... seite IB waitlo $fde window $e9bc wroa $f0f wrob $f0fb / xeit $eef xi6509 $00b xon232 $f3fl xsav $ xtape $fe5a yirq $fbe

398 Als Ergänzung zu diesem Buch ist eine Vergleichslisteder bekannten Zero-Page-, RAM-, ROM-Adressen von CBM / sowie das Operating-System der Serie 610/710 mit deutscher Tastatur und ein komplettes Buch "Assemblerlisting CBM 620 und 720" mit deutscher Tatstatur lieferbar. Außerdem liefern wir in Kürze das "Reassembler - Assemblersystem" für die Serien CBM 8000, 600 und 700, mit dem dieses Buch erstellt wurde. Es beinhaltet: Conditional-Assembler, Scroll-Editor, Crossreferenz, Generator, Reassembler, Label-Changer. Lieferung durch den Herausgeber oder über Ihren Fachhändler HARd +SofT R. S. Microcomputer GmbH Gagernstraße Bayreuth Telefon (09 21) C/J ~AR. +S o T

Serielle Schnittstellen

Serielle Schnittstellen Serielle Schnittstellen Grundbegriffe Seriell, Parallel Synchron, Asynchron Simplex, Halbduplex, Vollduplex Baudrate, Bitrate Serielle Datenübertragung Senden von Daten Bit für Bit 1 0 1 1 Serielle Datenübertragung

Mehr

11. Die PC-Schnittstelle

11. Die PC-Schnittstelle PC-Schnittstelle Funktion -1. Die PC-Schnittstelle.1. Funktion Die folgenden Angaben gelten ohne Einschränkung für den PC, PC-XT, PC-AT, AT-386, AT-486 und kompatible Rechner. Sie sind nur für jene interessant,

Mehr

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)

Mehr

Mikrocomputertechnik. Unterprogramm

Mikrocomputertechnik. Unterprogramm Unterprogramm Ein Teilproblem wird entweder zur mehrmaligen Verwendung oder zur Programmstrukturierung als Unterprogramm codiert. Ein Unterprogramm wird von einem übergeordneten Programm (Hauptprogramm)

Mehr

Unterprogramme mittels Stack (Forts.)

Unterprogramme mittels Stack (Forts.) Unterprogramme mittels Stack (Forts.) gleiches Beispiel mit direkter Übergabe aller Parameter (8-Bit Wert a, 16-Bit Wert b, 16-Bit Ergebnis) durch call by value auf Stack: LDB a * Lade 8-Bit Wert a PSHS

Mehr

Hinweise Dekodierung

Hinweise Dekodierung Hinweise Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2017/2018 V. Sieh Hinweise (WS16/17) 1 15 Beispiel CPU

Mehr

Vorbemerkungen zum 5. Versuchstag:

Vorbemerkungen zum 5. Versuchstag: Vorbemerkungen zum 5. Versuchstag: Ziel des fünften Versuchstages ist es:! Die Verbindung von Mikroprozessoren mit peripheren Geräten kennen zu lernen;! den Umgang mit Peripherie-Bausteinen zu üben; Im

Mehr

Serielle Schnittstelle

Serielle Schnittstelle Serielle Schnittstelle RS-232 ist ein Standard für eine bei Computern teilweise vorhandene serielle Schnittstelle, der in den frühen 1960er Jahren von dem US-amerikanischen Standardisierungskomitee Electronic

Mehr

Operationsmodi des Timers Modus 0 : Ausschalten des Zählers

Operationsmodi des Timers Modus 0 : Ausschalten des Zählers Ergänzung PIAT Operationsmodi des Timers Modus 0 : Ausschalten des Zählers LC und UC wird angehalten. IRQT wird gesperrt (Bit 7 im CMCR wird 0) UF Bit wird gelöscht (Bit 7 im SR) Die Daten in UC, LC, UL,

Mehr

Adressierungsarten des 6809 (Forts.)

Adressierungsarten des 6809 (Forts.) Adressierungsarten des 6809 (Forts.) Zusammenfassung zur indizierten Adressierung: 19 Beispiel-Programm 1 für 6809 6809-Assemblerprogramm zur Suche nach Leerzeichen (space, tab, return) in einem String:

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Name: ES2 Klausur Thema: ARM Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 75 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

Datentechnik. Prinzipieller Aufbau eines Schnittstellenbausteins

Datentechnik. Prinzipieller Aufbau eines Schnittstellenbausteins Prinzipieller Aufbau eines Schnittstellenbausteins DB /CS A0-Ai R/W Reset Takt Int IntAck zum µp Datenbus Puffer Steuerung Interruptsteuerung & IF Statusregister IE Steuerregister Befehlsregister Datenregister

Mehr

Arduino Kurs Das LC-Display. Stephan Laage-Witt FES Lörrach

Arduino Kurs Das LC-Display. Stephan Laage-Witt FES Lörrach Arduino Kurs Das LC-Display Stephan Laage-Witt FES Lörrach - 2018 Themen LC-Display zur Anzeige von Text Serieller Datenbus Ausgabe von Zeichen, Texten und Zahlen FES Lörrach Juli 2017 2 LC-Display zur

Mehr

Technische Kurzinformation. Umstellung auf RoHS-konforme Kommunikationskarten

Technische Kurzinformation. Umstellung auf RoHS-konforme Kommunikationskarten e DIN EN ISO 9001:2000 zertifiziert H ADDI-DATA GmbH Airpark Business Center Airport Boulevard B210 77836 Rheinmünster Deutschland +49 7229 1847 0 Technische Kurzinformation Umstellung auf e Kommunikationskarten

Mehr

USB > I2C- Bus Modul. Startet den I2C-Bus. Daten einlesen NACK senden

USB > I2C- Bus Modul. Startet den I2C-Bus. Daten einlesen NACK senden USB > I2C- Bus Modul Info Das USB > I2C-Bus Modul stellt eine Verbindung zwischen einen PC und dem I2C-Bus her. Über ein Terminal Programm können nun Daten zum I2C-Bus gesendet und vom I2C-Bus empfangen

Mehr

2017/01/23 15:50 1/5 Bedienung

2017/01/23 15:50 1/5 Bedienung 2017/01/23 15:50 1/5 Bedienung Bedienung (J.Müller, Hilfe zu JTCEMU) Das originale 2K-System Das 2 KByte große Betriebssystem bietet die wichtigsten Funktionen zur Eingabe und Verwaltung von BASIC-Programmen.

Mehr

UEM 300 Analoges Wählmodem

UEM 300 Analoges Wählmodem UEM 300 Automatisierungssysteme GmbH Gutenbergstr. 16 63110 Rodgau Telefon: 06106/84955-0 Fax: 06106/84955-20 E-Mail: info@ohp.de Internet: http://www.ohp.de Stand: 12.09.2005 Seite - 1 - Inhaltsverzeichnis

Mehr

8. Arbeiten mit Dateien

8. Arbeiten mit Dateien 8. Arbeiten mit Dateien www.c-programme.de Stefan Thiemert Kapitel 8 - Seite 1 von 6 8. 1. Allgemeines Bisher haben wir Daten, die wir in unseren Programmen erzeugt und verarbeitet haben, nur über den

Mehr

Inhaltsverzeichnis. Vorwort 13

Inhaltsverzeichnis. Vorwort 13 Inhaltsverzeichnis Vorwort 13 1. Einführung 17 1.1 Den C64 kennenlernen 18 1.2 Fernseher oder Monitor? 49 1.3 Datasette und Floppy 51 1.4 Der richtige Drucker 52 1.5 Joysticks und Mäuse 53 1.6 Mit Software

Mehr

Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega

Einleitung Die Pins alphabetisch Kapitel 1 Programmierung des ATmega8 und des ATmega Einleitung... 11 Die Pins alphabetisch.... 12 Kapitel 1 Programmierung des ATmega8 und des ATmega328.... 15 1.1 Was Sie auf den nächsten Seiten erwartet... 19 1.2 Was ist eine Micro Controller Unit (MCU)?....

Mehr

Name : Klasse : Punkte : Note :

Name : Klasse : Punkte : Note : Name : Klasse : Punkte : Note : Zeit: 08.00 bis 09.30 Es dürfen alle Unterlagen verwendet werden. Die Aufgaben sind möglichst direkt auf den Blättern zu lösen (Antworten bitte in ganzen Sätzen!), bei Bedarf

Mehr

Konzepte von Betriebssystem- Komponenten Ausnahme- / Unterbrechungsbehandlung

Konzepte von Betriebssystem- Komponenten Ausnahme- / Unterbrechungsbehandlung Konzepte von Betriebssystem- Komponenten Ausnahme- / Unterbrechungsbehandlung Sommersemester 2005 Uni Erlangen Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebsysteme Tarek Gasmi Tarek.Gasmi@informatik.stud.uni-erlangen.de

Mehr

Die RS Schnittstelle

Die RS Schnittstelle Die RS232 -. Schnittstelle Referat in der Vorlesung Rechnerstrukturen C.Wehland ; A.Gerst Inhalt Überblick serielle PC-Schnittstelle Übertragungsparameter Signale der seriellen Schnittstelle Register der

Mehr

SMP Übung 9 - Lösungsvorschlag

SMP Übung 9 - Lösungsvorschlag 1. Aufgabe: Sieben Segment Anzeigen, Multiplexing, a) Bestimmung der Zeichenkodierung Bei der Zeichenkodierung ist zu beachten, dass ein Low-Pegel auf der Leitung PDA(j) (in Verbindung mit einem Low- Pegel

Mehr

DST EINFÜHRUNG IN MRT (V2)

DST EINFÜHRUNG IN MRT (V2) DST EINFÜHRUNG IN MRT (V2) Aufgabe: Reaktionstester 1. Pflichtenheft Taster an -PA0 8 LEDs an PCx LCD-Anzeige für Ergebnis Die LEDs an Port C sollten unerwartet irgendwann angehen! Jetzt wird die Zeit

Mehr

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen Mikroprozessoren Grundlagen Aufbau, Blockschaltbild Grundlegende Datentypen AVR-Controller Anatomie Befehlssatz Assembler Speicherzugriff Adressierungsarten Kontrollstrukturen Stack Input / Output (I/O)

Mehr

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note:

Name: ES2 Klausur Thema: ARM 25.6.07. Name: Punkte: Note: Name: Punkte: Note: Hinweise für das Lösen der Aufgaben: Zeit: 95 min. Name nicht vergessen! Geben Sie alle Blätter ab. Die Reihenfolge der Aufgaben ist unabhängig vom Schwierigkeitsgrad. Erlaubte Hilfsmittel

Mehr

SIMATIC S5 SIEMENS. MODBUS-Protokoll RTU-FORMAT SIMATIC S5 ist Master. Kurzinformation. Sondertreiber für CP 524 / CP (S5-DOS) S5R004

SIMATIC S5 SIEMENS. MODBUS-Protokoll RTU-FORMAT SIMATIC S5 ist Master. Kurzinformation. Sondertreiber für CP 524 / CP (S5-DOS) S5R004 SIEMENS SIMATIC S5 Sondertreiber für CP 524 / CP 525-2 (S5-DOS) S5R004 MODBUS-Protokoll RTU-FORMAT SIMATIC S5 ist Master Kurzinformation Bestell - Nr.: 6ES5 897-2KB11 Stand 2/92 Der Sondertreiber ist auf

Mehr

Übungsblatt 10 (Block C 2) (16 Punkte)

Übungsblatt 10 (Block C 2) (16 Punkte) georg.von-der-brueggen [ ] tu-dortmund.de ulrich.gabor [ ] tu-dortmund.de pascal.libuschewski [ ] tu-dortmund.de Übung zur Vorlesung Rechnerstrukturen Wintersemester 2016 Übungsblatt 10 (Block C 2) (16

Mehr

MP /52 Controller Modul

MP /52 Controller Modul MP 0/ Controller Modul. Funktion..... Datenblatt...... Anwendung...... Daten...... Besonderheiten...... Aufbau...... Stromversorgung..... Blockdiagramm..... Beschreibung.... Betrieb..... Konfigurierung......

Mehr

ANT-5 Software Upgrade - Installationshinweise

ANT-5 Software Upgrade - Installationshinweise ANT-5 Software Upgrade - Installationshinweise Der SDH-Zugangstester ANT-5 von Acterna wird ständig verbessert und weiterentwickelt. Daher stehen regelmäßig neue Funktionen und Optionen zur Verfügung.

Mehr

SBF - Studio Bedienfeld für MMIB

SBF - Studio Bedienfeld für MMIB Keyboard Control KB20 Keyboard Studio Bedienfeld für The products and specifications are subject to change without notice. Please ask for the latest releases to guarantee the satisfaction of your product

Mehr

LCD board EB

LCD board EB LCD board EB005-00-3 Inhalt 1. Über dieses Dokument...2 2. Allgemeine Information...3 3. Board-Layout...6 4. Schaltungsbeschreibung...7 Anhang 1 Schaltplan Copyright Matrix Multimedia Limited 2005 seite

Mehr

Beispiel. Echo-Anwendung. Beispiel Echo Anforderungen. Benutzer stellt Konfiguration der seriellen Schnittstelle am PC ein (z.b. über Hyperterminal)

Beispiel. Echo-Anwendung. Beispiel Echo Anforderungen. Benutzer stellt Konfiguration der seriellen Schnittstelle am PC ein (z.b. über Hyperterminal) Beispiel Echo-Anwendung Erweiterung String-Ausgabe Beispiel Echo Anforderungen Benutzer stellt Konfiguration der seriellen Schnittstelle am PC ein (z.b. über Hyperterminal) - asynchroner Modus - Baudrate:

Mehr

Bedienungsanleitung M-Box / L-Box / C-Box

Bedienungsanleitung M-Box / L-Box / C-Box Der BOBE Interface-Box Kommandostring Rev 8 Als Kommandostring bezeichnet man die Zeichenfolge, die zur Interface-Box gesendet werden muss, damit diese Aktionen wie das Einlesen von Messmitteln ausführt

Mehr

6.2 CP/M-Systemroutine BIOS-65

6.2 CP/M-Systemroutine BIOS-65 6.2 CP/M-Systemroutine BIOS-65 Hauptschleife OAOO A9 00 LDA #$00 Akku löschen OA02 8D 00 DE STA $DE00 6510 ausschalten 0A05 EA NOP OA06 20 OC OA JSR $OAOC Z80-Funktion ausführen 0A09 4C 00 OA JMP $0A00

Mehr

Schaltungshinweise zum Linux Control System mit DIL/NetPC DNP/7520

Schaltungshinweise zum Linux Control System mit DIL/NetPC DNP/7520 Schaltungshinweise zum Linux Control System mit DIL/NetPC DNP/7520 Das Linux Control System ist eine typische Anwendung für das Linux Control Modul DIL/NetPC DNP/7520. Die Abbildung 1 zeigt die Blockschaltung.

Mehr

2

2 TINF Interrupts EDT-Referat Jürgen Schwarzbauer 2ANB 1995/96 Inhalt : Was ist ein Interrupt? Zweck von Interrupts Maskierbare und nicht maskierbare Interrupts Aufruf eines Interrupts Anwendung von Interrupts

Mehr

140 ESI Kommunikationsmodul

140 ESI Kommunikationsmodul 140 ESI 062 00 Automatisierungssysteme GmbH Gutenbergstr. 16 63110 Rodgau Telefon: 06106/84955-0 Fax: 06106/84955-20 E-Mail: info@ohp.de Internet: http://www.ohp.de Stand: 01.08.2003 Seite - 1- 1 Allgemeines

Mehr

Aufgabe 2 - Erweiterung um PIC und Interrupts

Aufgabe 2 - Erweiterung um PIC und Interrupts Aufgabe 2 - Erweiterung um PIC und Interrupts Rainer Müller Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2014/2015 R. Müller Erweiterung

Mehr

Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt:

Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt: Tasten abfragen Bisher hatten immer nur als Ausgänge geschaltet und hierfür folgende Befehle benutzt: pinmode(pinnummer, OUTPUT) digitalwrite(pinnummer, HIGH) oder digitalwrite(pinnummer, LOW) Zum Abfragen

Mehr

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78 32 Bit Konstanten und Adressierung Grundlagen der Rechnerarchitektur Assembler 78 Immediate kann nur 16 Bit lang sein Erinnerung: Laden einer Konstante in ein Register addi $t0, $zero, 200 Als Maschinen

Mehr

SMP Übung 8 - Lösungsvorschlag

SMP Übung 8 - Lösungsvorschlag 1. Aufgabe: A/D-Wandlermethode auswählen Eine analoge Eingangsgröße, die Temperatur, soll in dieser Aufgabe in ein digitales Ausgangssignal umgewandelt werden. Aus Rechnertechnologie 2 sind folgende Methoden

Mehr

Bootvorgang des DSM-Systems Systems Plurix

Bootvorgang des DSM-Systems Systems Plurix Bootvorgang des DSM-Systems Systems Plurix Stefan Frenz Vortrag im Rahmen der Abteilungsbesprechung Voraussetzungen: CPU CPU-Modi Voraussetzungen: BIOS Rechner-Initialisierung durch das BIOS Interrupt

Mehr

Kapitel 18. Externe Komponenten

Kapitel 18. Externe Komponenten Kapitel 18 Externe Komponenten 31.05.11 K.Kraft E:\MCT_Vorlesung\MCT2011\Externe_31\Externe.odt 18-1 Anschluss von externen Komponenten Einfachste Art : Direkt an einem Port Beispiel Ausgabe : 7-Strich

Mehr

AVR-Mikrocontroller in BASCOM programmieren, Teil 2

AVR-Mikrocontroller in BASCOM programmieren, Teil 2 jean-claude.feltes@education.lu 1 AVR-Mikrocontroller in BASCOM programmieren, Teil 2 13. Interrupts 13.1 Externe Interrupts durch Taster Wenn Taster mittels Polling abgefragt werden, wie in Teil 1 beschrieben,

Mehr

Beschreibung RS232-Protokoll für POWER-TRAP Fotovoltaik-Wechselrichter (ab Protokollversion ENS1 = 5 und ENS2 = 6)

Beschreibung RS232-Protokoll für POWER-TRAP Fotovoltaik-Wechselrichter (ab Protokollversion ENS1 = 5 und ENS2 = 6) Beschreibung RS232-Protokoll für POWER-TRAP Fotovoltaik-Wechselrichter (ab Protokollversion ENS1 = 5 und ENS2 = 6) 1. Allgemein Da die RS232-Schnittstelle elektrisch auch mit der RS485-Schnittstelle verbunden

Mehr

Mikroprozessortechnik Grundlagen 1

Mikroprozessortechnik Grundlagen 1 Grundlagen - Grundbegriffe, Aufbau, Rechnerarchitekturen, Bus, Speicher - Maschinencode, Zahlendarstellung, Datentypen - ATMELmega28 Progammierung in C - Vergleich C und C++ - Anatomie eines µc-programmes

Mehr

Mini- Mikroprozessor-Experimentier-System. Version 1.0b vom :21. mit einem 8051-Mikrocontroller

Mini- Mikroprozessor-Experimentier-System. Version 1.0b vom :21. mit einem 8051-Mikrocontroller Mini- Mikroprozessor-Experimentier-System mit einem 8051-Mikrocontroller Version 1.0b vom 04.10.2004 14:21 Inhalt 1 Einleitung...3 2 Hardware...4 2.1 Übersicht...4 2.2 Mikrocontroller AT89C51RB2...5 2.3

Mehr

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen:

Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: 1 ADRESSIERUNG IN MMIX Beim Programmieren mit MMIX habt ihr vielleicht schon öfter eine der folgenden Fehlermeldungen von MMIXAL bekommen: no base address is close enough to the address A! relative address

Mehr

Handbuch zum INTEL-MCS51 Basic-Terminal

Handbuch zum INTEL-MCS51 Basic-Terminal zum INTEL-MCS51 Basic-Terminal Stand: Dezember 2015 Seite 2 MCS51-Basic Terminal Inhaltsverzeichnis 1 Was ist das Basic-Terminal...4 2 Terminal starten...5 3 Basic initialisieren...7 4 Basic-Datei laden...8

Mehr

Konverter. Gruppe 11. Unser Weg ist Ihr Ziel. Der Spezialist für ADD-On Produkte. Tel Fax Fax

Konverter. Gruppe 11. Unser Weg ist Ihr Ziel. Der Spezialist für ADD-On Produkte. Tel Fax Fax Der Spezialist für ADD-On Produkte Vers. 1.1_01.09.2014 Konverter Gruppe 11 Unser Weg ist Ihr Ziel EXSYS Vertriebs GmbH Industriestr. 8 61449 Steinbach/Ts. Deutschland D - Deutschland verkauf@exsys.de

Mehr

Datenübertragung. Vorschau. Das vorliegende Kapitel umfaßt folgende Themen:

Datenübertragung. Vorschau. Das vorliegende Kapitel umfaßt folgende Themen: Kapitel 31 Datenübertragung Vorschau Das vorliegende Kapitel umfaßt folgende Themen: Einstellen der Datenübertragungsparameter am SDR Festlegung der Formate für Druck oder Datenübertragung Modem 31.10

Mehr

Mikrocomputertechnik. 6. Exceptionhandling ( Ausnahmebearbeitung)

Mikrocomputertechnik. 6. Exceptionhandling ( Ausnahmebearbeitung) 6. Exceptionhandling ( Ausnahmebearbeitung) Exception: Exception ist eine besondere Situation, auf die der Prozessor mit einem speziellen Programm (Exceptionroutine) reagieren muss. Das gerade ablaufende

Mehr

i386 Interrupt-Deskriptortabelle (IDT)

i386 Interrupt-Deskriptortabelle (IDT) Agenda: IRQ-Behandlung in OO-Stubs Interrupts und Traps bei x86 Die Interrupt-Deskriptor-Tabelle (IDT) Aufbau der IDT Traps und Hardware IRQs Der Programmierbare Interruptcontroller PIC 8295A Aufbau Verwendung

Mehr

E Mikrocontroller-Programmierung

E Mikrocontroller-Programmierung E Mikrocontroller-Programmierung E Mikrocontroller-Programmierung E.1 Überblick Mikrocontroller-Umgebung Prozessor am Beispiel AVR-Mikrocontroller Speicher Peripherie Programmausführung Programm laden

Mehr

Interrupts im Handbuch des ATmega128 gründlich lesen.

Interrupts im Handbuch des ATmega128 gründlich lesen. 1 Versuch 1 1.1 Ziel Ziel des ersten Versuchs ist es die USART-Schnittstelle kennenzulernen, sowie Assemblerprogramme um eine interaktive Eingabe zu erweitern. Zu diesem Zweck werden vom Praktikums-PC

Mehr

A ProgrAmmer s Guide to KIM Programming

A ProgrAmmer s Guide to KIM Programming A ProgrAmmer s Guide to KIM Programming by Erik Bartmann - Vers. 0.1 2 - Erste Befehle Erste Befehle Nun wird es aber Zeit, dass wir unser erstes Programm schreiben und wir werden hier einiges über die

Mehr

Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten.

Assembler DOS (Beta 1) Copyright 2000 Thomas Peschko. Assembler II - DOS. ASSEMBLER Arbeiten mit Dateien und Daten. Assembler II - DOS ASSEMBLER Arbeiten mit Dateien und Daten peschko@aol.com 1 Wer nun den Eindruck hat, dass unsere Programme hauptsächlich nur Unterprogramme vor ihren Karren spannen und sich darauf beschränken

Mehr

6. Peripheriegeräte und Schnittstellen

6. Peripheriegeräte und Schnittstellen Abb. 6.1: Tastatur und Tastaturschnittstelle Abb. 6.2: Tastatur-SDU und Belegung der Stecker Abb. 6.3: Die Scan-Codes der MF-II-Tastatur Tastatur Tastaturkontaktmatrix Tastaturprozessor Tastaturkabel 11

Mehr

Die serielle Schnittstelle in der MSR - Technik

Die serielle Schnittstelle in der MSR - Technik Die serielle Schnittstelle in der MSR - Technik In der Mess- Steuer- und Regelungstechnik (MSR - Technik) werden für die Ansteuerung von Messgeräten oft serielle Schnittstellen verwendet. Aus leidvoller

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11

Mehr

"Organisation und Technologie von Rechensystemen 4"

Organisation und Technologie von Rechensystemen 4 Klausur OTRS-4, 29.09.2004 Seite 1 (12) INSTITUT FÜR INFORMATIK Lehrstuhl für Rechnerarchitektur (Informatik 3) Universität Erlangen-Nürnberg Martensstr. 3, 91058 Erlangen 29.09.2004 Klausur zu "Organisation

Mehr

8051Speicherorganistaion. SFR u. oberer Datenspeicherbereich teilen sich den SPECIAL FUNCTION REGISTER. gleichen Adreßbereich. indirekt adressierbar

8051Speicherorganistaion. SFR u. oberer Datenspeicherbereich teilen sich den SPECIAL FUNCTION REGISTER. gleichen Adreßbereich. indirekt adressierbar intern (auf CPU) PROGRAMMSPEICHER extern 2K bis 64K ROM 051: 4K max 64K 051:64K 051Speicherorganistaion 13.04.2000 - v3 extern interner XRAM DATENSPEICHER intern (auf CPU) SPECIAL FUNCTION REGISTER SFR

Mehr

Geräteverwaltung: Einführung

Geräteverwaltung: Einführung Geräteverwaltung: Einführung Die Ziele einer Geräteverwaltung sind: Einfache Softwareschnittstelle Gleiche Software Schnittstellen für alle Geräte eines Gerätetyps z.b.: unabhängig vom Soundkartenhersteller

Mehr

Lösungsvorschläge zur Übungsklausur. zum Kurs 1708 Technische Informatik II. im WS 01/02

Lösungsvorschläge zur Übungsklausur. zum Kurs 1708 Technische Informatik II. im WS 01/02 Lösungsvorschläge zur Übungsklausur zum Kurs 1708 Technische Informatik II im WS 01/02 Aufgabe 1: (10 Punkte) Welche der folgenden Aussagen sind richtig? a) Unter dem Begriff Mikroprogramm versteht man

Mehr

Vorlesung 5: Interrupts

Vorlesung 5: Interrupts Universität Bielefeld Technische Fakultät AG Rechnernetze und verteilte Systeme Vorlesung 5: Interrupts Peter B. Ladkin Kommunikation über den Bus CPU läuft zu einer Taktfrequenz I/O Geräte laufen zu anderen

Mehr

DOSEMU. Vortrag im Hauptseminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Matthias Felix FAU. 13.

DOSEMU. Vortrag im Hauptseminar Konzepte und Techniken virtueller Maschinen und Emulatoren. Matthias Felix FAU. 13. DOSEMU Vortrag im Hauptseminar Konzepte und Techniken virtueller Maschinen und Emulatoren Matthias Felix filo@icip.de FAU 13. Juni 2007 Matthias Felix (FAU) DOSEMU 13. Juni 2007 1 / 22 Inhalt 1 Einführung

Mehr

E. Fehlermeldungen von PC-Bibliotheken

E. Fehlermeldungen von PC-Bibliotheken Anhang Fehlermeldungen von PC-Bibliotheken -1. Fehlermeldungen von PC-Bibliotheken Beim insatz von MODULAR-4/486 und Multi-LAB/2 Karten und den dazugehörigen Bibliotheken können die folgenden Fehlermeldungen

Mehr

Ein- Ausgabeeinheiten

Ein- Ausgabeeinheiten Kapitel 5 - Ein- Ausgabeeinheiten Seite 121 Kapitel 5 Ein- Ausgabeeinheiten Am gemeinsamen Bus einer CPU hängt neben dem Hauptspeicher die Peripherie des Rechners: d. h. sein Massenspeicher und die Ein-

Mehr

Konzepte von Betriebssystem-Komponenten. Ausnahme- / Unterbrechungsbehandlung

Konzepte von Betriebssystem-Komponenten. Ausnahme- / Unterbrechungsbehandlung Konzepte von Betriebssystem-Komponenten Sommersemester 2005 Uni Erlangen Lehrstuhl für Informatik 4 Verteilte Systeme und Betriebsysteme Tarek Gasmi Tarek.Gasmi@informatik.stud.uni-erlangen.de Tarek Gasmi

Mehr

Von-Neumann-Architektur

Von-Neumann-Architektur Von-Neumann-Architektur Bisher wichtig: Konstruktionsprinzip des Rechenwerkes und Leitwerkes. Neu: Größerer Arbeitsspeicher Ein- und Ausgabewerk (Peripherie) Rechenwerk (ALU) Steuerwerk (CU) Speicher...ppppp...dddddd..

Mehr

Mikrocomputertechnik

Mikrocomputertechnik Mikrocomputertechnik Bernd-Dieter Schaaf Mit Mikrocontrollern der Familie 8051 ISBN 3-446-40017-6 Leseprobe Weitere Informationen oder Bestellungen unter http://www.hanser.de/3-446-40017-6 sowie im Buchhandel

Mehr

Anhang. Spezifikationen

Anhang. Spezifikationen Anhang A Spezifikationen PC-Interface Automatische Ressourcen-Zuweisung (Plug&Play) ME-000 PCI/cPCI (Rev..) PCI Local Bus Spezifikation Version. ( bit, MHz, Universal-PCI: V/,V) ME-000 PCI-Express PCI-Express

Mehr

Übung zu Betriebssystembau (Ü BS)

Übung zu Betriebssystembau (Ü BS) Übung zu Betriebssystembau (Ü BS) Interruptbehandlung in OOStuBS Wanja Hofer Lehrstuhl für Informatik IV WS 07/08 1 Agenda: IRQ-Behandlung in OOStuBS Interrupts und Traps beim x86 Die Interrupt-Deskriptor-Tabelle

Mehr

C-DIAS-Serielles-Interface CSI 021

C-DIAS-Serielles-Interface CSI 021 C-DIAS-Serielles-Interface CSI 021 Das CSI 021 ermöglicht die Kommunikation über 2 unabhängige UART s. Es stehen 2 x RS232/485/422 Ausgänge zur Verfügung. Diese Ausgänge sind per Software umschaltbar.

Mehr

Betriebsanleitung Sartorius

Betriebsanleitung Sartorius Betriebsanleitung Sartorius Schnittstellenbeschreibung für Entris, ED-, GK- und GW-Waagen Inhalt Verwendungszweck Inhalt.... 2 Verwendungszweck... 2 Betrieb.... 2 Datenausgabe... 3 Datenausgangsformat....

Mehr

RGB-Sequenzer RS232 RS485 MDX512 AD / IO Platine

RGB-Sequenzer RS232 RS485 MDX512 AD / IO Platine RGB-Sequenzer RS232 RS485 MDX512 AD / IO Platine HARDWARE Platine Osram LED controller 85 x 130 mm, Industriestandard, doppelseitig, Lötstop, Positionsdruck Halterung 4 Bohrlöcher 2,8 mm Durchmesser Ein-

Mehr

Compuprint SP40plus. Firmware-Aktualisierung. Um den SP40/SP40plus zu einem anderen Firmwarestand zu verhelfen, sind nur wenige Handgriffe notwendig:

Compuprint SP40plus. Firmware-Aktualisierung. Um den SP40/SP40plus zu einem anderen Firmwarestand zu verhelfen, sind nur wenige Handgriffe notwendig: Firmware-Aktualisierung Um den SP40/SP40plus zu einem anderen Firmwarestand zu verhelfen, sind nur wenige Handgriffe notwendig: 0. Drucken Sie sich Ihre aktuelle Konfiguration aus, um sie später zur Hand

Mehr

Unified-E Modbus Adapter

Unified-E Modbus Adapter Unified-E Modbus Adapter Betrifft: Version 1.5.0.0 und höher Stand: Februar 2017 Inhalt 1 Allgemeines... 2 2 Adapter-Parameter in Unified-E... 2 3 Adressierung von Datenpunkten... 4 Unified-E Modbus Adapter

Mehr

Forth-Vokabular. Vokabular für Attiny2313-Forth Stand: A: Assembler-Wort F: Forth-Wort C: Compiler-Wort

Forth-Vokabular. Vokabular für Attiny2313-Forth Stand: A: Assembler-Wort F: Forth-Wort C: Compiler-Wort Vokabular für Attiny2313-Forth - 1 - Forth.voc Forth-Vokabular Stand: 01.11.2012 A: Assembler-Wort F: Forth-Wort C: Compiler-Wort. A gibt TOS auf Port B aus; (Datenrichtungsbits von Port B werden alle

Mehr

Serielle Datenübertragung mit dem Schnittstellenbaustein 8251

Serielle Datenübertragung mit dem Schnittstellenbaustein 8251 Serielle Datenübertragung mit dem Schnittstellenbaustein 8251 2 Inhaltsverzeichnis Thema Seite Inhaltsverzeichnis 2 Einleitung 2 Serielle Datenübertragung 3 Der serielle Schnittstellenbaustein 8251 4 Beispielprogramm

Mehr

Die Robo-TX RS-485 Schnittstelle

Die Robo-TX RS-485 Schnittstelle Die Robo-TX RS-485 Schnittstelle Die Idee... Gleich nach dem Kauf des TX fiel mir in der Anleitung auf, dass auf den Extension-Anschlüssen nur die RS-485-Schnittstelle auf beiden vorkommt. Somit war klar,

Mehr

NC-Datenübertragung PC <=> Maschinensteuerung

NC-Datenübertragung PC <=> Maschinensteuerung zwischen PC und Maschinensteuerung Vorbemerkung Voraussetzungen Nach dem Erstellen eines NC-Programmes mit P-CAM ist dieses Programm zur Maschine zu übertragen, um dort abgearbeitet werden zu können. Manchmal

Mehr

Ansteuerung eines LCD-Screens

Ansteuerung eines LCD-Screens Ansteuerung eines LCD-Screens Marcel Meinersen 4. Mai 2013 Marcel Meinersen Ansteuerung eines LCD-Screens 4. Mai 2013 1 / 27 Inhaltsverzeichnis 1 Allgemeines Was ist ein LCD-Screen? LCD 162C LED Marcel

Mehr

Serielle Kommunikation - Kodierung

Serielle Kommunikation - Kodierung Serielle Kmmunikatin - Kdierung RXTX Biblithek für die serielle Schnittstelle I Installatin 32-Bit-JDK rxtxserial.dll: \jre\bin rxtxparallel.dll: \jre\bin RXTXcmm.jar: \jre\lib\ext

Mehr

Name : Klasse : Punkte : Note :

Name : Klasse : Punkte : Note : ESI Semesterendprüfung 15.6.2009 Name : Klasse : Punkte : Note : Zeit: 12.50 bis 13.35 Die Aufgaben sind möglichst direkt auf den Blättern zu lösen (Antworten bitte in ganzen Sätzen!), bei Bedarf die Rückseite

Mehr

9. Vektoren. (auch Felder/array)

9. Vektoren. (auch Felder/array) 9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die

Mehr

1. Allgemein Technische Daten... 2

1. Allgemein Technische Daten... 2 Inhalt 1. Allgemein... 2 2. Technische Daten... 2 3. Beschreibung der s... 3 3.1. Allgemein... 3 3.2. Aufbau einer Übertragung... 3 3.2.1. Nur Daten... 3 3.2.2. s und Daten:... 3 3.2.3. s und Daten gemischt:...

Mehr

0. Einführung Hardware-Daten des Systems Software-Daten des Systems Aufbau eines Objektprogramms 0-13

0. Einführung Hardware-Daten des Systems Software-Daten des Systems Aufbau eines Objektprogramms 0-13 Inhaltsverzeichnis 0. Einführung 0-09 0.1. 0.1.1. Das System 8810/30 Hardware-Daten des Systems 0-11 0-12 0.1.2. Software-Daten des Systems 0-12 0.1.3. Aufbau eines Objektprogramms 0-13 1. Erstellung eines

Mehr

BEDIENUNGSANLEITUNG FESTPLATTENERWEITERUNG KORG i2hd/i3hd

BEDIENUNGSANLEITUNG FESTPLATTENERWEITERUNG KORG i2hd/i3hd BEDIENUNGSANLEITUNG FESTPLATTENERWEITERUNG KORG i2hd/i3hd Inhalt: Einführung 1. Funktion " ONE SONG" 2. Funktion " STANDARD MIDI FILES" 3. Funktion "COPY FILE" 4. Funktion "NEXT SONG" 5. Funktion "FORMAT"

Mehr

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer

Selbststudium Informationssysteme - H1102 Christian Bontekoe & Felix Rohrer Übung RA, Kapitel 1.5 1. Beantworten Sie bitte folgende Repetitionsfragen 1. Beschreiben Sie in eigenen Worten und mit einer Skizze die Schichtung einer Multilevel Maschine. Folie 5, rechte Seite 2. Welche

Mehr

Hardware PCI-Bus. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg

Hardware PCI-Bus. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Hardware PCI-Bus Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2008/2009 Hardware PCI-Bus 1/23 2008-08-06 Übersicht Inhalt:

Mehr

Hardware PCI-Bus. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg

Hardware PCI-Bus. Dr.-Ing. Matthias Sand. Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Hardware PCI-Bus Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2007/2008 Hardware PCI-Bus 1/23 2007-10-26 Übersicht Inhalt:

Mehr

Serielle Kommunikation - Kodierung

Serielle Kommunikation - Kodierung Serielle Kommunikation - Kodierung (1.) Erstellen Sie nachfolgende Klasse: Dabei haben die Methoden folgende Funktionen: exists(): Überprüft, ob eine serielle Schnittstelle existiert getproperties(): Liefert

Mehr

7 Laufzeit-Speicherverwaltung

7 Laufzeit-Speicherverwaltung 7.1 Grundlagen Bevor wir die Code-Generierung betrachten, müssen wir uns Gedanken über zur Laufzeit des zu generierenden Programms notwendige Aktivitäten zur Zuordnung und Freigabe von Speicherplatz machen.

Mehr

80C535-Mikrocontroller-Board im Streichholzschachtelformat

80C535-Mikrocontroller-Board im Streichholzschachtelformat RIBU 18. A-8160 Weiz. Tel. 03172/64800. Fax 03172/64806 RIBUMühlgasse ELEKTRONIK VERSAND e-mail: office@ribu.at. Internet: http://www.ribu.at 80C535-Mikrocontroller-Board im Streichholzschachtelformat

Mehr