@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREIE SEKT.! G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSBENUTZE MEM.SAV UM ZU LADEN!! D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSFEHLER-SAVE IN MEM.SAV AUF DISK TIPP Y FUE&}R DOS-START B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu } 3E:N`}ABBUC e.V. DOS 2.5FarbeŠΠ㩠 . DISK INHALT . FORMAT 1040. ZUM BASIC *} . DUPLIZIER DISK. KOPIERE FILE . BINAER SAVE. LOESCHE FILE(S) . BINAER LOAD. NAME AENDERN . START AB ADRE+}S. SICHERE FILE . MEM.SAV ANLEG.. ENTSICHERE FILE . DUPLIZIER FILE. DOS NEU ANLEGEN . FORMAT 720SecL !N',}#"&))9(&*)/h)''-&؆莟R'S  v L/ˢ L }LEGE-->DOS 2.0s, TIPP Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!FALSCHE WAHLWAEHLE.} FUNKTION-->νś! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DISK INHALT-->AUSGABE,FILE NAME ?[# 0 0 &|D3" 1L!NICHT AUF DISK N !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TIPP "" ZUM LOESCHENWAS LOESCHEN ? 2}KOPIE-VON,NACH?WAHL NICHT ERLAUBT412 FREIE SEKT.! KOPIERE---D2:DISKKOPY.NEUl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!ABKUERZUNGEN SIN6}D JETZT NICHT ERLAUBT 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!NICHT LADBAR WELCHE DATEI LADEN ?) 0 ?}0#B 1L!SICHERE FILE NAME?) 0 0$B 1L!ENTSICHER FILE NAME?DUP DISK-QUELL,ZIEL STATION?TIPP "" FUER PROGRA@}MMGEBRAUCH :""LOESCHT MEM.SAV SPEICHERFE! +L1   `*  70 2 2A} 0.* 1 y0 0)LEGE DISK EIN ,TIPP "^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` DISK VOLL !!! LEGE QUELLDISK EIN,TIPP ΛLEGE ZIELDISK EIN ,TIPP E}`  `8 rL1`-* 1P* 1 y0Y`hhL!GEBE FILE NAME AN ? - 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`ZIEL KANNKEIN DOS.SYS J}SEIN!0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GEBE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`NUR 1 BUCHSTABE !! ,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} ZU LANG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!FEHLER- 167ɛ+,' 20*.. өr2 1``2ZU VIELE WERTE!FALSCHE HEXAQ}DEZIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1GEBE D1-->D8 ANuR} EZIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1GEBE D1-->D8 ANu!       8` 8`     xXl   -.R,$T}4xX ѩѩ X(`23 4reiberinstU}alliert0 ! !o!!!L HHHэ)hhhl-L ) / )L L )622LN ѬV}"8` `Lc `) ѭL L #L ` ) `)W}`` )`)` *``B8 LV!8  X}"``))```H) ѥڭih#`"( )*`*ѥ+Ѡ`*`*+Y}```))```H) ѥڭih#`"( )*`*ѥ+Ѡ`*`*+ KEKEYTANOCHABC7A $$ŠӲ$$ [}($$ҤĠΠҤě2$$ҤԠĠͭ<$$ԩ \}F%%6-F:A!,%AV$F:A",P6-AZ@d(>:A%,n++@@@@ ]}@0R:x++@A@@R:++@B@@@R:##@@ ^}R:AdAU)@"@6-AU"@AF:,"@A _} (>:, F:Ad,"AUA`6-F:%F:Ad,,."AU"*@@.6-@*@ `}AdAU A` D:TERM.BAS@U: a}@U: 8 ************************************** * ASSEMBLERECKE * * HANDLER FUER RS232 SCHNITTSTELLE * * ANDREc}AS BINNER & HARALD SCHOENFELD * ************************************** ORG $1EE0 IBUF EQU $2200 ;Inputbuffer OBUF EQU $d}2300 ;Outputbuffer ACDATA EQU $D100 ;ACIA Datareg. ACSTAT EQU $D101 ;ACIA Statusreg. ACCOMM EQU $D102 ;ACIA Commae}ndreg. ACCONT EQU $D103 ;ACIA Controlreg. PROT EQU $6F0 ;siehe Text STOP EQU $6F1 CONT EQU $6F2 FULLFL EQU $6F3 DATABf}RK EQU $6F4 ERR EQU $6F5 STAT EQU $6F6 CHECK EQU $6F7 OFF EQU $6F8 RWFL EQU $6F9 NOCHR EQU $6FA RPOI EQU $6FC IPOI EQU $6FDg} TPOI EQU $6FE PPOI EQU $6FF DOSINI EQU $C DOSVEC EQU $A VIMIRQ EQU $216 COLOR1 EQU 709 COLOR2 EQU 710 COLOR4 EQU 712 MEMLO h}EQU 743 ICAX1Z EQU $2A ICAX2Z EQU $2B ICCOMZ EQU $22 BRKKEY EQU 17 STARTUP LDA DOSINI ;DOS-Initvektor STA MEM ;merki}en LDA DOSINI+1 STA MEM+1 LDA #INIT ;Neue Initadresse STA DOSINI LDA #INIT/256 STA DOSINI+1 START2 LDA VIMIRQ ;OS-j}Interruptvektor STA IRQ ;merken LDA VIMIRQ+1 STA IRQ+1 LDA DOSVEC ;DUP-Vektor STA DOS ;merken LDA DOSVEC+1 k} STA DOS+1 JSR VECSET ;->eigene Vektoren * ;setzen RTS *********************************** *Initalisierungsroutine l}nach jedem* *Reset * *********************************** INIT DFB 32 ;Code "JSR" Befehl MEM DFW 0 ;"Platm}zhalter" fuer * ;Sprungadresse JSR VECSET ;->Vektoren setzen RTS *********************************** *Routine nach n}BASIC-Befehl DOS * *********************************** DUP LDA MEM ;Gemerkte Werte STA DOSINI ;wieder zurueck LDo}A MEM+1 ;schreiben STA DOSINI+1 LDA DOS STA DOSVEC LDA DOS+1 STA DOSVEC+1 SEI ;Interrupt aus LDA IRQ ;OS-Ip}nterruptvek. STA VIMIRQ ;wieder setzten LDA IRQ+1 STA VIMIRQ+1 CLI JMP (DOSVEC) ;->zum DUP **********************q} *Vektorinitalisierung* ********************** VECSET LDA #DUP ;Eigene Aufruf- STA DOSVEC ;routine fuer DUP LDA #DUPr}/256 ;eintragen STA DOSVEC+1 LDA #TAB ;"R:"-Handler STA $32D ;eintragen LDA #TAB/256 STA $32E LDA #'R STA $32Cs} LDA #0 ;Handler vor BASIC STA MEMLO ;Zugriff schuetzen LDA #$24 STA MEMLO+1 LDA #52 ;Neue Farben STA COLOR2t} LDA #14 STA COLOR1 LDA #6 STA COLOR4 SEI ;IRQ's aus LDA #INT ;Vektor auf STA VIMIRQ ;eigene Routine LDA #Iu}NT/256 ;setzen STA VIMIRQ+1 CLI ;IRQ's an LDA #9 ;kein Parity STA ACCOMM ;1 Stopbit LDA #30 ;9600 Baud Sv}TA ACCONT LDA #19 ;Codes fuer STA STOP ;Softhandshake LDA #17 STA CONT LDA #32 ;32=DCD abfragen STA CHECKw} LDA #1 ;Softhandshake STA PROT LDA #0 ;Pointer und STA RPOI ;Flags auf Null STA IPOI STA TPOI STA PPOI Sx}TA FULLFL STA ERR STA OFF STA RWFL STA DATABRK TAY ;Einschalttext TOP LDA TEXT,Y ;ausgeben STA (88),Y INY y}CPY #40 BNE TOP RTS ;...das war's TEXT ASC % RS232-Treiber installiert % IRQ DFW 0 ;zum merken.z}.. DOS DFW 0 TAB DFW OPEN-1 ;Handlertabelle DFW CLOSE-1 DFW GET-1 DFW PUT-1 DFW STATUS-1 DFW SPECIAL-1 JMP INIT ***{}*************** *Interruptroutine* ****************** INT PHA ;alle Reg. retten TYA PHA TXA PHA LDA ACSTAT ;ACIA-|}IRQ? STA STAT AND #128 BNE ACIA ;->Ja BACK PLA ;alle Reg. holen TAX PLA TAY PLA JMP (IRQ) ;->OS-Routine A}}CIA LDA CHECK ;evtl.DCD und AND STAT ;DSR abfragen BEQ OK JMP BACK OK LDA STAT ;Daten angekommen? AND #8 BEQ ~}NOTFULL ;->Nein JSR REC NOTFULL LDA STAT ;Daten ausgeben? AND #16 BEQ NOTEMPT ;->Nein JMP TRANS NOTEMPT JMP BACK *}********************************* *Angekommenes Byte in Inputbuffer* ********************************** REC LDA STAT ;Fe}hler? AND #5 BNE ERROR ;->Ja LDA PROT ;Handshake? BEQ NSH ;->Nein LDA ACDATA CMP STOP ;Xoff von Gege}nstelle? BEQ ANHALT ;->Ja CMP CONT ;Xon von Gegenstelle? BEQ WEITER ;->Ja JMP INBUF NSH LDA ACDATA INBUF LDY RPO}I ;Byte in Buffer STA IBUF,Y INC RPOI LDA IPOI ;Buffer voll? SEC SBC RPOI CMP #8 BEQ VOLL ;->Ja RTS } VOLL JSR AUS LDA #1 STA FULLFL RTS ERROR LDA STAT ;Fehler merken STA ERR JMP VOLL ANHALT LDA #1 ;alle Sendevo}rgaenge STA DATABRK ;des ACIA stoppen RTS WEITER LDA #0 ;alle Sendevorgaenge STA DATABRK ;wieder freigeben RTS *}******************************* *Byte aus Outputbuffer ausgeben* ******************************** TRANS LDA DATABRK ;Auf G}egenstelle * ;warten? BNE NOTRANS ;->Ja LDA TPOI ;Buffer leer? CMP PPOI BNE AUSG ;->Nein NOTRANS LDA ACCO}MM ;ACIA Sendeinterrupt AND #243 ;sperren ORA #8 STA ACCOMM LDA OFF ;wurde Kanal ge- * ;schlossen? BNE Z}U ;->Ja JMP BACK ZU JSR AUS ;Uebertragung Ende JMP BACK AUSG TAY ;Byte senden LDA OBUF,Y STA ACDATA INC T}POI JMP BACK ************************** *"Ready" an Sender melden* ************************** AN LDA PROT BNE HAND }RTS HAND CMP #2 ;Hardwarehandshake BNE AN1 LDA ACCOMM AND #243 ORA #8 STA ACCOMM RTS AN1 LDA ACSTAT ;Softwareha}ndshake AND #16 BEQ AN1 LDA CONT STA ACDATA RTS ******************************** *"Nicht Ready" an Sender melden* *****}*************************** AUS LDA PROT BNE HAND1 RTS HAND1 CMP #2 ;Hardwarehandshake BNE AUS1 LDA ACCOMM AND #243} STA ACCOMM RTS AUS1 LDA ACSTAT ;Softwarehandshake AND #16 BEQ AUS1 LDA STOP STA ACDATA RTS **********************}********** *Die einzelnen Handlerroutinen:* ******************************** OPEN LDY #1 ;Status OK JSR AN ;Sen}der an LDA ICAX1Z STA RWFL LDA #0 ;keine Fehler STA ERR RTS CLOSE LDA #1 ;Sender ausschalten STA OFF } ;wenn Buffer leer LDY #1 ;Status OK RTS GET LDA #0 STA NOCHR LDA BRKKEY ;BREAK ? BEQ BREAK ;->Ja LDA IP}OI ;ein Byte da? CMP RPOI BNE BUFCHK ;->Ja LDA ERR ;Fehler aufgetreten? BNE FEHLER ;->Ja LDA RWFL ;auf }Byte warten? CMP #12 BEQ GET ;->Ja LDA #1 ;"Kein Zeichen"- STA NOCHR ;Flag setzen LDA #0 JMP NEXT BUFCHK L}DA FULLFL ;war Buffer voll? BEQ GETCHR ;->Nein LDA IPOI ;wieder Platz SEC ;fuer min. 10 SBC RPOI ;Zeichen}? CMP #10 BNE GETCHR ;->Nein JSR AN ;Gegenstelle an LDA #0 :Fullflag auf 0 STA FULLFL GETCHR LDY IPOI IN}C IPOI ;Byte aus Buffer LDA IBUF,Y ;holen NEXT LDY #1 ;Status OK RTS BREAK LDY #128 ;Status Break RTS FEH}LER LDA ERR ;Fehler auswerten AND #1 ;und entsprechende BNE PARITY ;Meldung erzeugen LDA ERR AND #3 BNE OVE}RRUN LDY #142 RTS PARITY LDY #143 RTS OVERRUN LDY #137 RTS PUT PHA LDA ACCOMM ;ACIA Sendeinterrupt AND #243 ;er}moeglichen ORA #4 STA ACCOMM PUTL LDA BRKKEY ;BREAK ? BEQ BREAK ;->Ja LDA PPOI ;Buffer schon voll? CLC ADC #2 CM}P TPOI BEQ PUTL ;->Ja LDY PPOI ;Byte in Output- INC PPOI ;buffer schreiben PLA STA OBUF,Y STATUS LDY #1 ;S}tatus OK RTS SPECIAL LDA ICCOMZ CMP #40 ;XIO 40? BEQ COMMAND ;->Ja CMP #41 ;XIO 41? BEQ PROTOKOL;->Ja CMP #42} ;XIO 42? BEQ SOFTCHR ;->Ja LDY #146 ;Nicht, dann Fehler RTS COMMAND LDA ICAX1Z ;XIO-Werte in STA ACCOMM ;ACIA-Re}g. LDA ICAX2Z ;schreiben STA ACCONT LDY #1 ;Status OK RTS PROTOKOL LDA ICAX1Z ;wie oben... STA PROT LDY #1 RTS} SOFTCHR LDA ICAX1Z STA STOP LDA ICAX2Z STA CONT LDY #1 RTS ************************************** * Startadresse} eintragen * *Achtung! Auch abspeichern im Monitor* *SAVE mit Append von $2E0 bis $2E1 * ****************************}********** ORG $2E0 DFW $1EE0 r* *SAVE mit Append von $2E0 bis $2E1 * ****************************7'B%DOS SYSB*)DUP SYSBSAUTORUN SYSBZTERM BASB>bRS232 SRC