þþ`(à.‰RESETWARM=;;Keine IRQ'sá.'Q…TRIG3;;Wurde ein Modul eingestecktâ."R†GINTLK;;oder herausgenommen ?ã.H‰RESETCOLD;;Ja ->ä."W?;;Ist ein Modul eingesteckt ?å.D†NOCAR1;;Nein ->æ.. ‡NEWCART;;Pr}fsumme bilden & mit der altenç.-H‰RESETCOLD;;vergleichen. Anderes Modul ->è.(†NOCAR1Q†COLDST;;Kaltstart verlangt ?é.H‰RESETCOLD;;Ja ->ê.Q>ÿë.H†PWRUP1;;Unbedingtì. …RESET=í.$>Œî. †RESET11ï.H†RESET1;;Warteschleifeð.0ñ.H†RESET1;;Warteschleifeò.0Q†HATABS#;;Stimme die Power-Up Bytes noch ?ó.R>\ô.H‰RESETCOLD;;Nein ->õ.'Q†HATABS$;;Stimmen die Vergleichs-ö.R>“;;zahlen noch ?÷.H‰RESETCOLD;;Nein ->ø.Q†HATABS%ù.R>%ú.F‰RESETWARM;;Ja ->û.)‰RESETCOLDQ>;;Warmstartflag loeschenü.†PWRUP1P†WARMSTý.=þ.-ÿ.$>ÿ;;Stapelzeiger auf/B;;Stapelanfang/ …SPECL;;Besonderes Modul/Q>;;Flag f}r RAM-Test:/'P†LINZBS;;Einem Fehler loescht es/$Q†WARMST;;Bei einem Warmstart das/H†ZOSRAM;;RAM nicht testen./Q>/%>;;Ab Speicherstelle 8/ P…RAMLO / P…RAMLO /†RAMTSTQ>ÿ /P@…RAMLO7;;Laden /R@…RAMLO7;;Vergleichen /F†RAMTS1;;Gleich, ok ->/V†LINZBS;;Fehler/†RAMTS1Q>/P@…RAMLO7;;Laden/R@…RAMLO7;;Vergleichen/F†RAMTS2;;Gleich, ok ->/V†LINZBS;;Fehler/ †RAMTS23/#H†RAMTST;;Bis zur n{chsten Seite/#…RAMLO;;N{chste Seite/($…RAMLO;;Obergrenze RAM erreicht ?/ (†TRAMSZ/#H†RAMTST;;Nein, weiter testen ->/%Q>4‰TESTROMEN;;Selbsttest vorsehen/ P†DOSVEC/Q>5‰TESTROMEN/P†DOSVEC/"Q…PORTB;;Selbsttest einschalten/M>;;(ROM nach $5000-$57FF) / P…PORTB!/ ‰CHECKROM1;;ROM testen"/E†ROMERR;;Fehler: Psumme ROM#/ ‰CHECKROM2$/D…ROMOK;;ok ->%/&†ROMERRV†LINZBS;;Fehler anzeigen&/(…ROMOKQ…PORTB;;Selbsttest ausschalten'/L>€(/ P…PORTB)/Q>ÿ;:Kaltstart vorsehen*/ P†COLDST+/HˆBASONOFF;;Unbedingt,/†ZOSRAM$>-/*Q…DERRF;;Flag f}r Fehler beim eroeffnen./F†ZOSRM1;;eines Bildschirms// Ž==;;STX APPMHI0/ Ž==;;STX APPMHI+11/A2/&†ZOSRM1P†VDSLST9;;Loesche $200-$3EC3/(>í4/ E†ZOSRM25/ P†DDEVIC96/ †ZOSRM207/H†ZOSRM1;;Schleife ->8/$>9/$†ZOSRM3P†LINZBS9;;Loesche $10-$7F:/2;/I†ZOSRM3;;Schleife ->;;Ist das interne BASIC=/Q…PORTB;;eingeschalten ?>/M>?/F…BASON;;Ja ->@/2A/…BASON&†BASICFB/Q>\C/P†HATABS#D/Q>“E/P†HATABS$F/Q>%G/P†HATABS%H/ Q>;;Bildschirmr{nder setzenI/ P†LMARGNJ/Q>'K/ P†RMARGNL/QƒPAL;;Pal = %xxxx 0001M/M>;;NTSC= %xxxx 1110N/H†ISNTSC;;NTSC ->O/Q>;;KEYREPP/ $>;;PALQ/%>(;;KRPDELR/H…ISPAL;;UnbedingtS/†ISNTSCQ>;;KEYREPT/ $>;;NTSCU/%>0;;KEYDELV/+…ISPALP†KEYREP;;WiederholgeschwindigkeitW/&‡PALNTSC;;Flag f}r PAL/NTSCX/&'†KRPDEL;;Zeit bis Tastaturwiederh.Y/$>%Z/,†MOVVECQ‡INIT2009;;Vektoradressen vom ROM[/P†VDSLST9;;ins RAM kopieren\/0]/I†MOVVEC;;Schleife ->^/$>_/$†NXTENTQ‡INIT31A9;;HATABS vom ROM`/P†HATABS9;;ins RAM kopierena/0b/I†NXTENT;;Schleife ->c/! …OSRAM;;OS Ram initialisierend/.e/&Q†LINZBS;;Beim RAM/ROM-Test tratf/H†ENDBCK;;kein Fehler auf ->g/"Q…PORTB;;Selbsttest einschaltenh/M>i/ P…PORTBj/Q>;;Aussehen normalk/ P…CHACTl/Q>à;;Atari - Zeichensatzm/ P…CHBASn/%!†SLFTST;;Sprung in den Selbsttesto/†ENDBCK$>p/&†TRAMSZ;;Modulflag loeschenq/#$†RAMSIZ;;Wo Ram ist, kann nichtr/(>°;;gleichzeitig ROM seins/E†ENDACK;;>= $B000t/$$„CART;;Sollte beim Modul =0 seinu/H†ENDACK;;Kein Modul ->v/#†TRAMSZ;;Modulflag setzenw/ ‡NEWCARTx/ ˆINITCARTy/!†ENDACKQ>;;Open #0,12,0,"E:"z/$>{/ P…ICCOM9|/ Q>4†OPNEDT}/ P…ICBAL9~/ Q>5†OPNEDT/ P…ICBAH9€/Q> /$P…ICAX19;;Open f}r Ein-u. Ausgabe‚/ „CIOVƒ/I†SCRNOK;;Sollte auch„/ !…RESET…/#†SCRNOK2;;Warte darauf, dass ein†/"H†SCRNOK;;VBL das Bild erstellt‡/3ˆ/ I†SCRNOK‰/" †CSBOOT;;Evtl. Cassette bootenŠ/%Q†TRAMSZ;;War da nicht ein Modul ?‹/F†NOCART;;Nein ->Œ/#Q†CARTFG;;Soll gebootet werden ?/W?Ž/D†NOBOOT;;Nein ->/$†NOCART …BOOTE;;Versuche Diskboot/ ŠLINKSOMETH‘/†NOBOOTQ>’/!P†COLDST;;Fertig mit Kaltstart“/ Q†TRAMSZ”/F„NOA2;;Kein Modul•/%Q†CARTFG;;Will das Modul gestartet–/M>;;werden ?—/F„NOA2;;Nein ->˜/*!@†CARTCS:;;Kaltstartadresse des Moduls™/,„NOA2!@†DOSVEC:;;u.a. Startvektor des DOSš/.ˆINITCART!@†CARTAD:;;Initadresse des Moduls›/,œ/:/0‡INIT31A P;;Drucker. HANDLER-Eintr{ge des OSž/ 0äŸ/ C;;Cassette / @ä¡/ E;;Editor¢/ ä£/! S;;Screen (Grafikbildschirm)¤/ ä¥/ K;;Keyboard (Tastatur)¦/  ä§//†ERRMSG AŠBOOT ERRORA=›;;Fehler beim Booten¨/-†OPNEDT A‚E:A=›;;Ger{tename. Hier: Editor©/)‡INIT200 …SYRTI;;RTI. Display List NMIª/" †SYIRQB;;PLA, RTI. PIA Proceed«/$ †SYIRQB;;PLA, RTI. PIA Interrupt¬/% †SYIRQB;;PLA, RTI. CPU BRK-Befehl­/$ …KPIRQ;;Tastaturinterruptroutine®/ †ISRSIR;;Serial Input Ready¯/ †ISRODN;;Output Data Needed°/ …ISRXD;;Transmission Done±/& †SYIRQB;;PLA, RTI. Vektor Pokey T1²/& †SYIRQB;;PLA, RTI. Vektor Pokey T2³/& †SYIRQB;;PLA, RTI. Vektor Pokey T4´/& …SYIRQ;;Pokey, Bus, PIA o. CPU IRQµ/ ;;Timer 1¶/ ;;Timer 2·/ ;;Timer 3¸/ ;;Timer 4¹/ ;;Timer 5º/ †SYSVBL;;Immediate VBL»/ ‡EXITVBL;;Deferred VBL¼/-…SPECLQ…TRIG3;;Ist ein Modul eingesteckt ?½/W?¾/D†ENSPCL;;Nein ->¿/(Q„CART;;Sollte bei jedem Modul 0 seinÀ/H†ENSPCL;;Kein ModulÁ/#Q†CARTFG;;Modul sofort starten ?Â/I†ENSPCL;;Nein ->Ã/!@†CARTAD:;;JaÄ/*†ENSPCL …HARDI;;Hardware initialisierenÅ/!Q…PORTB;;Eingebautes BASIC ausÆ/L>Ç/ P…PORTBÈ/#Q†WARMST;;Ist es ein Warmstart ?É/F†BASOPT;;Nein ->Ê/Q†BASICF;;0=An, 1=AusË/ H†HOWMCHÌ/ F†BASON1Í/)†BASOPTQ†CONSOL;;Ist OPTION gedr}ckt ?Î/M>Ï/$F†HOWMCH;;Ja, BASIC aus lassen ->Ð/$†BASON1Q…PORTB;;BASIC einschaltenÑ/M>ýÒ/ P…PORTBÓ/!†HOWMCHQ>;;Teste RAM-GroesseÔ/?Õ/P…RAMLO;;Ab $2800Ö/Q>(×/ P†TRAMSZØ/…HOWM1Q@…RAMLO7;;LesenÙ/N>ÿ;;InvertierenÚ/P@…RAMLO7;;SpeichernÛ/R@…RAMLO7;;VergleichenÜ/H…HOWMX;;Fehler ->Ý/N>ÿ;;InvertierenÞ/P@…RAMLO7;;Speichernß/R@…RAMLO7;;Vergleichenà/H…HOWMX;;Fehler ->á/#†TRAMSZ;;Anzahl der Seitenâ/H…HOWM1;;Bis RAM-Endeã/ …HOWMX:ä/%‡NEWCARTQ>;;Bilde Pr}fsumme }berå/>;;$BFF0-$C0EFæ/,ç/‡NEWCAR1O†CARTCS 9è/2é/H‡NEWCAR1;;256 Byteê/'R†CARTCK;;Gleich der alten ? Flaggenë/"P†CARTCK;;setzen und speichern.ì/:í/&…HARDIQ>;;Hardware initialisierenî/>ï/P…PBCTL;;PIA ausser PORTBð/†HARDI1P†HPOSP09;;GTIAñ/P†DMACTL9;;ANTICò/P…AUDF19;;POKEYó/(>ô/$F†HARDI2;;Nicht das Betriebssytemõ/P…PORTA9;;ausschaltenö/ †HARDI22÷/H†HARDI1;;Schleife ->ø/$Q><;;Kein PIA-IRQ, PortB, CB2=HIù/ P…PBCTLú/$Q>ÿ;;Muss man, sonst geht gleichû/P…PORTB;;nichts mehr.ü/%Q>8;;Datenrichtungsregister (DRR)ý/P…PACTL;;ansprechenþ/ P…PBCTLÿ/&Q>;;PORTA als Eingang (Joysticks)0 P…PORTA0*Q>ÿ;;PORTB als Ausgang (MMU-Steuerung)0 P…PORTB0$Q><;;Wieder die PORTS ansprechen0 P…PACTL0 P…PBCTL0,Q…PORTB;;Loeschen der IRQ-Status Bits 7,60,Q…PORTA;;Loeschen der IRQ-Status Bits 7,60&Q>";;Sende-/Empfangsfrequenz durch 0P…SKCTL;;#4. Tastatur an. 0"Q> ;;Lautst{rke 0, reiner Ton. 0 P…AUDC3 0 P…AUDC4 0%Q>(;;Takte #3 mit 1.77 MHz, h{nge0(P†AUDCTL;;#4 an #3 an (16 Bit Teiler)0Q>ÿ0 P†SEROUT0:0…OSRAM"†BRKKEY0Q>4ˆBRKEVENT;;Vektor f}r die0P…BRKKY;;BREAK-Taste0Q>5ˆBRKEVENT0 P…BRKKY0"Q†TRAMSZ;;RAM-Groesse in Seiten0 P†RAMSIZ0P†MEMTOP0Q>0 P†MEMTOP0!Q>;;MEMLO auf $0700, Seite 60%P…MEMLO;;ist f}r den Anwender frei0Q>0 P…MEMLO 0 †EDITRV ;;Editor Init!0 †SCRENV ;;Screen Init"0 †KEYBDV ;;Keyboard Init#0 †PRINTV ;;Printer Init$0 †CASETV ;;Cassette Init%0 †CIOINV;;CIO Init&0 †SIOINV;;SIO Init'0# †INTINV;;Interrupt Handler Init(0 †DISKIV;;Diskette Init)0+Q>4ˆNEUIOREQ;;Interruptvektor f}r Ger{te*0P…VPIRQ;;am parallelen Bus+0Q>5ˆNEUIOREQ,0 P…VPIRQ-0& ‡NEUINIT;;Ger{te am parallelen Bus.0#Q†CONSOL;;START-Taste gedr}ckt ?/0M>;;0=Ja, 1=Nein00N>10 P„CKEY20:30…BOOTEQ†WARMST;;Warmstart ?40F†NOWARM;;Nein ->50(Q„BOOT;;Wurde von Diskette gebootet ?60M>70F†NOINIT;;Nein, (RTS) ->80$!„DINI;;Ja, initialisiere Dos neu90†NOWARMQ>;;Floppy Nr. 1:0P…DUNIT;;$0301;0Q> S;;Status Kommando<0 P†DCOMND=0! †DSKINV;;Disk Interface (SIO)>0G†NOINIT;;Fehler, (RTS) ->?0†DOBOOTQ>;;Sektor #1@0 P…DAUX2A0Q>B0 P…DAUX1C0"Q>4†CASBUF;;Puffer auf $0400D0 P†DBUFLOE0Q>5†CASBUFF0 P†DBUFHIG0…SECT1 †GETSEC;;Lese SektorH0I†ALLSEC;;ok ->I0/†BADDSK †DSKRDE;;Fehlermeldung: "Boot Error"J0Q†CASSBT;;Cassettenboot ?K0%F†DOBOOT;;Nein, versuche weiter ->L0 †NOINIT:M0†ALLSEC$>N0*†RDBYTEQ†CASBUF9;;# Bloecke, AdresseO0 P†DFLAGS9P00Q0I†RDBYTE;;Schleife ->R0,Q†BOOTAD;;Adresse, ab der das Programm imS0*P…RAMLO;;Speicher abgelegt werden soll.T0Q†BOOTADU0 P…RAMLOV0(Q†CASBUF;;Init Adresse nach DOSINIW0(P†DOSINI;;(Byte 4 u. 5 des 1. Blocks)X0Q†CASBUFY0P†DOSINIZ0†MVBUFF%>[0/…MVNXBQ†CASBUF8;;Kopiere Block (128 Byte)\0&P@…RAMLO7;;an die verlangte Adresse]01^0 I…MVNXB_0",;;Anfangsadresse um die Block-`0Q…RAMLO;;l{nge erhoehen.a0O>€b0 P…RAMLOc0 Q…RAMLOd0O>e0 P…RAMLOf0#"†DBSECT;;Blockz{hler verminderng0$F†ENBOOT;;Alle Bloecke geladen ->h0#…DAUX1;;N{chster (1-255)i0…SECTX †GETSEC;;Block lesenj0'I†MVBUFF;;I/O erfolgreich, weiter ->k0! †DSKRDE;;Fehler: "Boot Error"l0Q†CASSBT;;Cassette ?m0H†BADDSK;;Ja, Ende ->n0&F…SECTX;;Diskette, neuer versuch ->o0†ENBOOTQ†CASSBT;;Cassette ?p0F…XBOOT;;Nein ->q0 †GETSEC;;Lese EOF-Blockr0)…XBOOT …BLOAD;;Boot Programm ausf}hrens0E†BADDSK;;Fehler ->t0" „DINI;;Programm initialisierenu0 #„BOOTv0:w0%…BLOAD,;;Ab Byte 6 steht bei einemx0'Q†BOOTAD;;Boot eine Routine, die deny0$O>;;Boot initialisieren sollte,z0(P…RAMLO;;durch ein geloeschtes C-Flag{0+Q†BOOTAD;;den Erfolg signalisiert und|0 O>;;mit RTS endet und somit}0#P…RAMLO;;hierhin zur}ckkehrt.~0 !@…RAMLO:0.„DINI!@†DOSINI:;;Indirektes JSR nach DOSINI€0+†DSKRDE$>4†ERRMSG;;Print #0;"Boot Error"0 %>5†ERRMSG‚0Aƒ0$>„0 P…ICBAL9…0C†0 P…ICBAH9‡0Q> ˆ0 P…ICCOM9‰0Q>ÿŠ0 P…ICBLL9‹0 !„CIOVŒ0†GETSECQ†CASSBT;;Cassette ?0F…DISKM;;Nein ->Ž0$!†RBLOKV;;Lese Block von Cassette0…DISKMQ> R;;SIO Lesen0 P†DCOMND‘0Q>;;Floppy Nr. 1’0 P…DUNIT“0!†DSKINV;;Disk Interface”0†CSBOOTQ†WARMST;;Warmstart ?•0F†CSBOT2;;Nein ->–0 Q„BOOT;;1=Diskboot, 2=Casboot—0M>˜0"F†NOCSB2;;Kein Cassettenboot ->™0 !„CINIš0+†CSBOT2Q„CKEY;;War beim Reset die START-›0%F†NOCSB2;;Taste gedr}ckt ? Nein ->œ0Q>€;;Kurze IRQ0 P…FTYPEž0#†CASSBT;;Flag f}r CasbootŸ0' †CSOPIV;;Cassette zum Lesen oeffnen 0% …SECT1;;Booten und initialisieren¡0Q>;;Flags loeschen¢0 P†CASSBT£0 P„CKEY¤0T„BOOT;;Danach =2¥0 Q†DOSINI¦0 P†CASINI§0Q†DOSINI¨0P†CASINI©0 †NOCSB2:ª0„CINI!@†CASINI:«0AŽDisk InterfaceA