' JJJJ ?\>' L-=l>  ԠéԠˠ#~?  xDIR ERA TYPESAVEREN USER!yO#< Ty#O 3ǯ21y_͸2y2ͽ:ķ˜1͘A͌>>͌92^ :˷¥.!_~#fow]ɭʎʥ!v"!çREAD ERRORçNO FILE^:˷#͘*~ "Ʒ"͌#>?͌͘ =_.:;<> Oƅo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6"  Ň!˶2:2a{_:˷ʖ:˷>Ľʖ:=2–!B!6#5ʖ:˷Ľ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!\XEPSON COPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<į2: :):>:(y2E!|"*wɍ`JX)^>EE??++ ԩ  [\ ĭ ?  JL ``LLL $Lq<`ΧԠĠڸčԠԠ͠Ԡ؍2>o:= gw8H<8H=` }Hx / hJ Leh<> > @A @A>i =<>+ LeÍڍh@(L>*// -П( ( $8` %  ZNx`. }x$50x.$50xL JJJJ`Hjf5 }h $50x`  Ȍ` Hx  -(hL(h8֩`Lx (`H݌hHhHh݌>?F؅G(jf5(  ;  R( FGj 0x j $xxH` ( Rh RL.xxH h  !"#$%&'()*+,-./0123456789:;<=>?x&& 8 , P ; ' / \ ; & ; x)*++`FGG8`0($ p,&" cI꽌ɪVɭ&Y & &Y &   꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`V0 ^ *^ *>`+*xS&x'8*3IxiU ,>J>V J>V `8'x0| &HhHh V Y V '&Y V x ꪽV ' `Hh` ! ~ 3#0 Wx x ƀ Ƃ G ~ # 3x~#B!Y~ɯ2:˷=!˾ý:˷=!˾:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇ ɯw4!Y~ʆ͌†t=ʆf ^ T ɯ2o&)|+!<ͧЯ2*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄi6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C :ٷ:ddslO s#r:EϷ͊:==»y==»*Ww#*"͸*:G#š"͸:!پw4!iw:Z!E~=26 w ~>2!E5T*C!"C"C!w# F! w͌xѯ2͢*C ~<wʃG:٠!٦ʎì 4~ʶ¬:<ʶ$ʶïZͻЯx>2>2ͻ:!پZկ2:EϷẅ́͊Ͳ> *C ^OT *C~wD -'  -@ͦ~^*C Ox! N!Fwyxʋ>ڋ>*Cw~#+w#w+ɯ2E22i^ *C :ٷ~w~͔͔# # ::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | sӖ-|N-# S:2E!~Яw>T D^6k-äPYy 5*{zBK5:AϾ#~$=2Ek͌ ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:مo$*C~i6iw**{#zr+s{ozg**͕** Ѿ,w͜͸Ͳ!!N#F$**O!~#O: \зSЀ*C :ٷqn& ^#V>O^"*}:*)=":O:١o"*C *C!ͮ~2~2ͦ:٦2ͮ:ЯO:فw:w |g}o*ٯ# 2E>! ^#V w#P:BO|^#V#"##"##"##"!O*!O*|!6ʝ6>گ*w#w*w#w'û*ڷ! J*""!N#F*^#V*~#foyx*{_zW+*x: 2 p&x~+é7ͯ2 H! >w_: ! Ͼ5ͤNkͱ¦ͱxʊ#Nx: Ϸ! ϖ2 ͤ! 5™#wO~x½p Hy<< ڷʑ :!qMD# O͐  :ϷE B 2>: Ϸb# : Ϸy! 4 5~yy5 6yҐ^H@Oy H H: –ͬ  #H: ! Ͼ Hù H H $O͐: 2 *CN# ʽ̙̥̫̱"C{2!"E9"1Aϯ22!ty)K!G_^#V*Cΐ~؃E؜إث ,&-AGMSϛ!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6=qf^!~2>`~2˯2\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: !˶ Â$$$ SUBÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Yʸpsp2mÆÆf ͧÆFILE EXISTS _: É: :˷ʉ=2)ͽÉ T!@k!}|qs+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!BϾw!>2*C~=2u:B2~2wE:A*C϶w>"!""ٯ2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*٤W}_*"}o|g":ٷʑ*C6:ٷʑw:2E**E}DQ>2C0T"I !>"H>2J: !͢:d::d!s~B#1!P!J߇o~,foɷp:BB Apple ][ CP/M 56K Ver. 2.20B (C) 1980 Microsoft ;ۯ2>EE??++B#1!P!J߇o~,foɷp;ۯ2:޷;ۯ2e ]~6(*} *:޽ y(3:޷s:2G<2x/a2:oa":޷zޯ2{![:޷ <2:>sɯ2>!>2!;:*     1>2>2*"?ۯ2:08 !"Y"BT"->2:8Y"/:8Y"F~!xq!;`~0,~!M;!x~>.~8[q>:޷ 2y2!!{o!:=8 ~y!3w.y2Cɯ2>!w#w#wOa."y .:g"*"!~((5:# :*޽ :޼ $| 8g,"ޯ2!"_!ޅoN!޷((+! ~O#O:x >2ޯ2:޷*(*D*:wk*(:$_"~28 ?@wx( !;!܅ony 2$8!2E!y>>?22!ɯog"$2E!.B...X&*}(8.|8&"$պ`~(,qy2E[22G: 2:O*:P!O#~#'۹~y/:02?"2O: K*:*(0**:8'(*:08* *: 8(*7!w˹#~(=5:!( +_ywɷ+ͱ*:]lc_O{- OMG!~_ :( 6>83! ~èCfuÇKmVÉÎÓãݯ`iޓښ:ޓڦJޓڲZޓھjޓzޓߊ / !~ `66= !; !{g1:Q!͢گ22>2!"2!"͎>2-CP/M-AG#02ADR WSMADRINP CPMAG#02DOCDATEM80 COMDATEM80 DOC  DATEM80 MAC( DATEM80 REL&PLZORT& .pa  ..Datei mit den Adressen z.B. aus DBASE .df ADRINP .rv VORNAMENACHNAME,STRASSE,PLZORT .. &VORNAMENACHNAME& &STRASSE& TRANSFERPASghiUHRIN FORjUHRIN RELkUHRINFO DOC lmUHRLES FOR noUHRLES RELpUHRTST COMAqrstuvwxyUHRTST FOR z{FTR COMFTRDOC WSFIFX80INITBAS1 !FX80INITDOC$"#$%&FX80INITTXT>'()*+,-.FX80INITWS M/012345678NOLF COM9NOLF MAC:;<UHRTST REL |}..Druckformat der Etiketten 3.5cm x 10.7cm .mt 0 .mb 2 .pl 9 .op .po 8 ..Page Offset ist variabel, je nach Einspannen .. ..Datei mit den Adressen z.B. aus DBASE .df ADRINP .rv VORNAMENACHNAME,STRASSE,PLZORT .. &VORNAMENACHNAME& &STRASSE& NOLFCONFCOM=NOLFCONFMAC>?@PRINTER COMAPRINTER MACBCDSUFFIX WS EFTEXTFORMCOMGHIJKLMNOPQRSTUVTEXTFORMCOM8WXYZ[\]TRANSFERCOMG^_`abcdefD. Boberowsky,Bramfelder Str. 91,2000 Hamburg 60 Michael Beyer,Postfach,2000 Hamburg 60 Clemens Sch|der,Hospitalstra~e,2000 Hamburg 50.pl 72 .op CPMAG#02 I eine Ihre Laufwerk steck nu di zweit Diskett de CP/ AG Si enth{l ein Reih vo Programmen f} di Si hoffentlic nutzbringend Anwendunge haben ode di Ihne nsferierten Files. Da Program TEXTFORM vo Herr Wilhelms 118 is f} de gleiche Zwec geschrieben leiste jedoc wesentlic mehr al TRANSFER dᠠ e meh M|glichkeite bietet Insbesonder ber}cksichtig e weitestge!h$\!~0#~00 > #~G#~x( =G'!o#~0#~0"\\Keine Uhr vorhanden! $File M80.COM nicht auf dieser Disk! $Kann Datum nicht patchen! $JanFebM{rAprMaiJunJulAugSepOktNovDezM80 COMrgedatei f}r Adressaufkleber ADRINP => Daten fuer ARD.WSM (Beispiel) FTR.COM FTRDOC.WSF => DBASE Funktions-Tasten-Routine f}r Basis 108 NOLF.COM NOLF.MAC => NO-LINE-FEED. Entfernt LF hinter CR bei der Drucker-Ausgabe }b Anregungen f}r eigene Programmiervorhaben bietet. All Programm sin entwede i sic selbst ode durc ei Dokumentationsfile (.DOC) erkl{rt. F} di Betreibe eine A.U.G.E.-Uh sin gleic蠠 mehrer Programme dabei. Siehe die hen di Erforderniss be eine Weiterbearbeitung von ehem. DOS-Textfiles mit WordStar. Die sonstigen Programme auf dieser Diskette: CPMAG#02.DOC => Dieser Text (WORDSTAR-format) SUFFIX.WS => gesammelte CP/M Suffix z.T. Vorschl{ge FX80IMACRO-80<Ĝf 4f& 4*&?+#~> T], z  nicht patchen! $JanFebM{rAprMaiJunJulAugSepOktNovDezM80 COMr vorhanden! $File M80.COM nicht auf dieser Disk! $Kann Datum nicht patchen! $JanFebM{rAprMaiJunJulAugSepOktNovDezM80 COMer Slot #1. NOLFCONF.COM NOLFCONF.MAC => NOLF }bersetzt in Z80-Code und erg{nzt zum Einbinden ins System. PRINTER.COM PRINTER.MAC => MX-82 Anpassung an CP/M System. Files DATEM80.DOC und UHRINFO.DOC . Be de Program TRANSFER handel e sic u ein verbessert Versio de i U 7/8 vo Herr Machholz 243 vorgestellte Programme zu ]berarbeitun vo mi de Program APDO vo DO nach CP/M tras1?%:  x*R͗2!O #x y2 y UHR!:''''_W" #w##w* w##=w>#w++w! [ R yw # !]2h2j2|\  !h\(  !+# > Textdatei; im DOS mit exec zu starten (nur mit APDOS ins CP/M eingelesen) (noch in der DOS-Form) FX80INIT.WS => Formatierte Form des Programmes f}r Ausdruck mit dem Wordstar ADR.WSM => WS, MailmeNIT.BAS => Initprogramm f}r den EPSON FX 80 Drucker angepa~te CP/M MBASIC Version (BASIC Token Format)(f}r Epsoninterface) s. auch UM 8/83 S. 9 ! FX80INIT.DOC => kurze Programmbeschreibung FX80INIT.TXT = H.M.Ihme Kathweg 8 2300 Kronshagen Tel. (0431) 589228 US AUGE-UHR DIE ROHZEIT IN DIE SPEICHERPL[TZE ======= MIN - MIN+11 => MIN(LH), STD(LH), TAG(LH), MON(LH), JAR(LH) * GETDAT: LD HL,0E080H ;PORTADRESSE LD A,(SLOT) ;SLOT-NR. SLA A SLA A SLA A SLA A ;SLOT*16 LD E,A XOR A LD D,A ADD HL,DE O DASS BEI LST:-AUSGABEN DIESES DATUM AUF DEM SEITENKOPF ERSCHEINT. DAS PROGRAMM MUSS EINMAL AM TAG AUFGERUFEN WERDEN, DAS GESETZTE DATUM BLEIBT BEIM AUSSCHALTEN DES RECHNERS ERHALTEN! DATEM80 UND M80 M]SSEN AUF DER GLEICHEN DISKETTE SEIN. ==========ussetzun f} ordungsgem{~e Funktioniere ist da DATEM8 un M8 au de gleiche Dis sin un dies nich schreibgesch}tz ist. De Source-Fil DATEM80.MA ma gleichzeiti al Beispie daf} dienen wi ma i Z80-Programme sic di ,UHR ;AUF STRING 'UHR' FNDSL2: LD A,(DE) ;CHARAKTER HOLEN CP (HL) ;MIT INHALT PROM VERGLEICHEN JR NZ,FNDSL3 ;NICHT GLEICH INC HL ;N[CHSTE PROMZELLE INC DE ;N[CHSTER BUCHSTABE INC B LD A,B ;ALLE 3 BUCHSTABEN GETESTET? CP 3 JR NZ,FNDSL M 3055 Da Program DATEM80.CO - lie Dat M8 - is f} Apple- un Basisbenutze gedacht di vie mi de Macroassemble M8 arbei- te un ein A.U.G.E.-Uh ih Eigentu nennen. Da Program lies be Aufru di MELDUNG XDAT: LD HL,(SAVST) LD SP,HL ;STACK RESTOREN RET ;ZURUECK INS CP/M DATE1: CALL GETDAT CALL FINM80 ;DATUM SCHREIBEN JR XDAT .COMMENT * FNDSLT: SUCHT SLOTNUMMER, IN DER AUGEUHR STECKT, UND ======= SPEICHERT SIE NACH (SLOT). WENN (S=============================================== * TITLE DATEM80 .PHASE 100H BDOS EQU 5 FCB EQU 5CH BUF EQU 80H LD (SAVST),SP LD SP,STACK CALL FNDSLT ;SLOT SUCHEN LD A,(SLOT) OR A JR NZ,DATE1 LD C,9 LD DE,ERROR1 CALL BDOS ;FEHLERUhrzei hereinholt Da Datu wir vo M8 nu verwerte be Aufrufe zu Ausliste ode Ausdrucken wi z.B M8 ,TTY:=XYZ(.MAC ode M8 ,LST:=.... 2 ;NEIN LD A,C ;SLOT-SUCHE WAR ERFOLGREICH LD (SLOT),A ;SLOT-NR. NACH (SLOT) RET FNDSL3: INC C ;N[CHSTE SLOT-NR. LD A,C ;>7? CP 8 JR NZ,FNDSL1 ;NEIN, WEITER TESTEN RET ;MEHR SLOTS GIBT ES NICHT UHR: DB 'UHR' .COMMENT * GETDAT: L[DT A.COMMENT * ========================================================= H. M. IHME KATHWEG 8 / 2300 KRONSHAGEN M 3055 DIESES PROGRAMM LIEST DIE AUGE-UHR IN EINEM BELIEBIGEN SLOT UND SCHREIBT DAS DATUM IN DEN DISK-FILE M80.COM AN DIE RICHTIGE STELLE, SUh i eine beliebige Slo un tr{g da aktuell Datu i de Fil M80.CO ein un zwa anstell de sons bei Liste erscheinende Datums da Micro- sof eingetrage hat E brauch als pr Ta nu einma aufgeru- fe z werden VoraLOT)=0, DANN KEINE UHR DA. * FNDSLT: XOR A ;AKKU AUF NULL LD (SLOT),A ;INITIAL-WERT F]R (SLOT) LD C,1 ;LAUFENDE SLOT-NR. LD HL,0E0E0H ;PROM-ADRESSE FNDSL1: LD B,0 ;Z[HLER F]R 3 BUCHSTABEN LD DE,100H ADD HL,DE ;PRO SLOT-NR. 100H DAZU LD DE ;HL H[LT RICHTIGE ADRESSE LD (REGA),HL INC HL LD (HL),A ;CRA=0 SETZEN INC HL INC HL LD (HL),A ;CRB=0 SETZEN LD HL,(REGA) LD (HL),A ;REGA AUF EINGANG INC HL INC HL DEC A ;A=FF LD (HL),A ;REGB AUF AUSGANG LD A,4 INC HL LD L,A ;HL ZEIGT AUF MONATSSTRING LD BC,3 ;3 CHARACTER LANG LDIR POP HL INC HL LD A,(HL) ;JETZT JAHR*10 AND 0FH ADD A,30H PUSH AF INC HL LD A,(HL) ;UND JAHR VERBINDEN AND 0FH ADD A,30H INC DE LD (DE),A INC DE POP AF LD (INM80: LD BC,11 LD HL,NAME1 ;M80 COM NACH FCB LADEN LD DE,FCB+1 LDIR XOR A ;CR AUF 0 LD (FCB+12),A LD (FCB+14),A LD (FCB+32),A LD C,15 LD DE,FCB CALL BDOS ;FILE M80.COM \FFNEN CP 255 JR NZ,FIN1 ;ERFOLGREICH LD C,9 LD DE,EX8ZP 0" b0@>BMj$ (.@~sက>oL&#?9q[&0(zGeQ D7@`j#?9aF~sH& A0Yn2 o9 &!!cI &< 7Lfu3 )r '3X &pE AND 0FH ADD A,30H ;ASCII PUSH AF ;RETTEN INC HL LD A,(HL) ;TAGE*10 AND 0FH ADD A,30H CP 30H ;=0? JR NZ,FIN5 ;NEIN LD A,' ' ;VORNULLUNTERDR]CKUNG FIN5: LD (DE),A INC DE POP AF ;TAGE HOLEN LD (DE),A INC DE INC DE ;AUF(HL),A ;CRB AUF 4 DEC HL DEC HL LD (HL),A ;CRA AUF 4 LD HL,MIN LD DE,(REGA) LD C,82 LD B,11 ;Z[HLER GETDA1: LD A,C INC DE INC DE LD (DE),A ;82-92 NACH REGB DEC DE DEC DE LD A,(DE) ;INHALT VON REGA LD (HL),A ;NACH MIN - MIann Datum nicht patchen!',0DH,0AH,'$' TABEL: DB 'JanFebM{rAprMaiJunJulAugSepOktNovDez' NAME1: DB 'M80 COM' NAME2: DB 'MACRO-80' SLOT: DS 1 REGA: DS 2 MIN: DS 11 SAVST: DS 2 SAVE: DS 23 DS 16 STACK: END DE),A LD C,34 LD DE,FCB CALL BDOS ;RANDOM SCHREIBEN LD C,16 LD DE,FCB CALL BDOS ;FILE SCHLIESSEN JP XDAT ;DAS WAR'S ERROR1: DB 'Keine Uhr vorhanden!',0DH,0AH,'$' ERROR2: DB 'File M80.COM nicht auf dieser Disk!',0DH,0AH,'$' ERROR3: DB 'KRROR2 CALL BDOS JP XDAT FIN1: LD BC,23 ;ALTEN FCB-STAND RETTEN LD HL,FCB+12 LD DE,SAVE LDIR LD C,20 LD DE,FCB ;SEQUENTIELL LESEN CALL BDOS OR A JR Z,FIN3 ;HAT GEKLAPPT LD C,9 LD DE,ERROR3 ;STRING MACRO-80 NICHT GEFUNDEN CALL Ba:Mqh:e7A!(n#LDȂp9L&QJ:'S9Lp'΄y؈e=G@ iR'G hH, Z,-KO[&0(zGeQ D7@`j#?9aF~sH& A0Yn2 o9 &!!cI &< 7Lfu3 )r '3X &p MONAT INC HL LD A,(HL) AND 0FH LD B,A ;A RETTEN INC HL ;AUF MONAT*10 LD A,(HL) AND 0FH OR A ;=0? LD A,B ;A RESTOREN JR Z,SKIP ADD A,10 SKIP: DEC A ;JANUAR=0 LD B,A SLA A ;*3 ADD A,B PUSH HL LD HL,TABEL ADD A,L LDN+11 INC C INC HL ;ADRESSEN H\HER DJNZ GETDA1 ;DAS GANZE 11 MAL XOR A INC DE INC DE LD (DE),A ;0 NACH REGA RET .COMMENT * FINM80 \FFNET FILE M80.COM, SUCHT NACH STRING MACRO-80 ====== UND SCHREIBT 6 PL[TZE H\HER DAS DATUM HINEIN. * FUSN%S'i,l(tp$"x3@PXdJ@j\y@8!p8!# yla8%RAHBp6X'ebr@b3Fw@gqzwgqX!ݥH R!0H6 0^ XBKj^24F%4 ?p$"3@` &D0v@pHL LD BC,23 LD HL,SAVE LD DE,FCB+12 ;FCB VOM VORIGEN RECORD LDIR ;RESTOREN LD C,36 ;GEFUNDEN LD DE,FCB ;AUF RANDOM SETZEN CALL BDOS POP HL LD DE,7 ADD HL,DE ;AUF DATUM EX DE,HL ;DE ZEIGT AUF DATUM LD HL,MIN+5 LD A,(HL) ;TAGDOS JP XDAT FIN3: LD BC,128 LD HL,BUF LD DE,NAME2 LD A,(DE) CPIR ;VERGLEICHEN JP M,FIN1 ;VERGLEICH NEGATIV LD B,7 ;7 BUCHSTABEN DEC HL ;KORREKTUR FIN4: INC DE INC HL LD A,(DE) CP (HL) JR NZ,FIN1 ;UNGLEICH DJNZ FIN4 PUSH !ii!4!i")!  ~_8{Ɉ astenroutin unte da CP packen Stattdesse l{~ sic auc da Fil PSEUDO.CO umschreiben s da e etwa wenige Plat ben|tig unte de Voraus setzung da di RAM-Kart vorhande ist sons nicht Dies Funktionstastenroutin l{u~erdem wurden folgende Funktionstasten belegt: im Edit Mode haups{chlich: F1 = Ctrl-V = Insert F2 = Ctrl-W = Exit + Save F3 = Ctrl-Q = Exit ohne Save F4 = Ctrl-Y = Delete Data F5 = Ctrl-U = Delete Record im Modify Mode: . Assemblerlisting Au de Assemblerlistin sin di Tastaturcode un di ]bersetzun ersichtlich E sin noc frei Pl{tz vorhanden Dies freie Pl{tz k|nnen beliebig belegt werden. E I-----I I-----I I-----I Delete links I I I I I I Ctrl-G I-----I I-----I I-----I =Delete rechts (return un di Funktionstastenroutin is installiert Wen Si di FT i CP/ selbs verewige m|chten dan lade Si MBASI un da Program CONFIGIO.BAS Mi diese Program schreibe Si de I/ Cofiguratio Bloc mittel Funktio F6 = Ctrl-N = New Field F7 = Ctrl-Y = Clear Field F8 = Ctrl-T = Delete Field F10 = Ctrl-P = Drucker an/aus .pa Einbau der Funktionstatstenroutine Zun{chs wir da CP gebootet Dan gebe Si ein FT .bp0 .po18 .cw10 .mt0 Basis 108 Funktionstastenroutine f}r dBASE II  .cw8  Cursor up Ctrl-R I-----I inschr{nkungen der Funktionstastenroutine Di Funktionstastenroutin arbeite nich zusamme mi de Program PSEUDO.COM d diese di Speicherpl{tz F20 bi F27 ben|tigt Fall di Pseudoflopp gebrauch wird mu ma di Funktionst Cursor down Die Taste Home ist nicht belegt A de Programm au di gew}nscht Diskette di nat}rlic bereit formatier sei mu un scho da CP Syste enthalte mu~ Imme wen Si mi diese Diskett dan booten wir de Compute au di Funktionstaste wi gew}nsch reagierenI I-----I I-----I Cursor links I I I Home I I I Cursor rechts I-----I I-----I I-----I I-----I I-----I Ctrl-C =last record I I I I I I =next record I-----I I-----I I-----I I-----uf nu mi CP 2. i de 5 Version CP funktionier ander un mu mi eine gan andere Routin bedien werden We sic nich zutraut da obig selbs durchzuf}hren kan ein Kopi gege frei Diskett un Freiumschla vo Autgstabell beginn be F2CC. Di }bersetzte Wert beginne be F2E6. .uj0 F200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ F210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ F220: 00 00 00 00 00 00 00 00 DAN HO DI CHA AU E F27 C RE ;UN GE HEIM OR TABELLSTAR ;TABELLSTART F2C 8 8 8 DEF 088H,08AH,08BH,095H,08EH F2C 9 8H VECTOR ;ZEIG AU EINE SPRUNGBEFEH UND ;DIESE ZEIG ERS AU DB29H F2C TABELLSTAR EQ 0F2CC ;BEGIN DE ]BERSETZUNGSTABELLE F38 VECTO EQ 0F382 ;EINSPRUNGV EN 1 .pa FUNKTIONSTASTENROUTIN 16.MAI.8 MACRO-8 3.4 18-Sep-8 PAG S Macros: Symbols: F26 ANFAN DB2 GETCHA F27 NOFIN F2C TABEL AD HL,B ;( IS NOC VO VORHE 0) F27 7 L A,(HL ;HO DI DA ]BERSETZT ZEICHEN ;DA FOLGEND WIR I JEDE FAL DURCHLAUFE UN VERHINDERT ;DA NICH DEFINIERT FUNo bekommen. I Ma 1983 f} AUG ne bearbeite i Janua 1984 Edga Sch{ttl M228 Eschborne Str 64 623 Schwalbach Tel: 06196-5712  .pa .cw8 .uj0 FUNKTIONSTASTENROUTIN 16.MAI.8 MACRO-8 3.4 18-Sep-8 PAG 1 OR TABELLSTART+026 F2E 1 1 0 DEF 013H,018H,005H,004H,012H F2E 0 1 F2E 0 1 1 DEF 003H,014H,019H,015H,017 ;]BERSETZUNG F2E 1 1 F2F F2D 8 C C DEF 08FH,0C8H,0C4H,0C5H,0C2 ;TASTENCODES F2D C C F2D C C C DEF 0C3H,0C1H,0CAH,0C6H,0C7H F2D C C F2D 0 1 DEF 008H,015H ECTO DE CP/M ZEIGT ;MITTELBA AU GETCHAR 0000 ASE ;ABSOLUT ASSEMBLIERUNG OR 0F269 ;AU DIESE ADRESS F[NG P AN LSTAR F38 VECTO N Fata error(s) .cw10 .uj1 Hexdum de Routine Di zugeh|rige Byte sin fet gedruckt. Di Routin selbs lieg au F26 bi F27 un is vol relokatibel. Di ]bersetzunKTIONSTASTE ERKANN WERDE F27 5 NOFIND L E, ;RETT CHA I E F27 1 RL ;WEN BIT DAN CARRY F27 3 E J C,ANFAN ;BIT8 DAN ANFANG F27 7 L A, ;NEIN TITL FUNKTIONSTASTENROUTIN 16.MAI.8 DB2 GETCHA EQ 0DB29 ;CP/ TASTATURROUTINE HIERHE ZEIG ;VECTO NORMALERWEISE D.1 1 1 DEF 011H,016H,010H,00DH,019 F2F 0 1 F2F 7 0 DEF 07FH,007H OR VECTOR F38 F26 DEF ANFANG F27 E B CPI ;VERGLEICH CHA I MI TABELLE F27 2 0 J NZ,NOFIN ;WEN NICHT GI CHA AU WEN BIT8= F27 0 1 L C,02 ;BERECHNUN DE SPRUNGABSTANDES F27 0 F26 C DB2 ANFANG CAL GETCHA ;LIEFER TASTENCOD I REGISTE A ;IS FUNKTIONSTAST GEDR]CKT? F26 0 001 L BC,02 ;L[NG DE SPRUNGTABELLE F26 2 F2C L HL,TABELLSTAR 00 00 00 00 00 00 00 00 ................ F230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ F240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ F250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............  "BITTE DRUCKER ON-LINE SCHALTEN!": e@ (BUSY)  @eJ B$(),T( )fT LM :RM :TA f^ B$() "???"0fh I  `fr A$: (A$,) "???" I : rf| B$(I) A${f If P :I :.y+w..... F2D0: 8E 8F C8 C4 C5 C2 C3 C1 CA C6 C7 08 15 00 00 00 ................ F2E0: 00 00 00 00 00 00 13 18 05 04 12 03 14 19 15 17 ................ F2F0: 11 16 10 0D 19 7F 07 00 00 00 00 00 00 00 00 00 ................ F300: 00 3A 00 F3 B7 "SLM: SETZEN LINKEN RAND"c "FO1: FORMULARLAENGE /ZOLL"c "FO2: FORMULARLAENGE /ZEILEN"d "SKI: PERFORATION UEBERSPR."Id "ZAB: ZEILENABSTAND 1/8 1/6 7/72 N/216"od "TAB: TABULATORSTOPS SETZEN "d "INC: INCREMENTALER DRU............... F3B0: FF FF FF FF FF FF FF FF 04 05 01 01 01 01 02 01 ................ F3C0: AD 83 C0 AD 83 C0 8D 00 C1 AD 81 C0 20 3F FF 20 ............ ?. F3D0: F0 FD 8D 81 C0 20 4A FF 4C C0 03 00 00 00 00 E1 ..... J.L....... F3E0: 1B 0C 00 CD 01.... F260: 00 00 00 00 00 00 00 00 00 CD 29 DB 01 1A 00 21 ..........)....! F270: CC F2 ED B1 20 04 0E 19 09 7E 5F 17 38 EB 7B C9 .... ....~_.8.{. F280: 9E 09 08 21 9A E0 3A 81 F2 77 23 3A 80 F2 77 2B ...!..:..w#:..w+ F290: 2B 7E E6 60 CA 9A F2 3A A7 DE 20 05 77 32 0C E0 C9 32 .:...:.. .w2...2 F310: 0D E0 18 F6 A7 1F F5 9F 32 00 F3 F1 5F 16 F0 D0 ........2..._... F320: 32 0D E0 C9 00 00 00 00 00 00 00 00 00 00 00 00 2............... F330: AD 81 C0 6C FC FF 4C C0 03 00 00 00 00 00 00 00 ..CK +/-"d "UNI: UNIDIRECTIONAL +/-"d "RES: DRUCKERRESET"d "ERR: PAPIERENDEERROR +/-"e" "AZS: KURSIV +/-"-e, "???: HELPFUNKTION"fe-:hier war ein Fehler bei der Umrechnung endstandene6 BUSY : OUT : (BUSY) 01 60 60 00 08 00 01 00 00 00 00 ......``........ F3F0: C0 03 C0 03 00 4C C0 03 4C C0 03 4C C0 03 C0 03 .....L..L..L....  C0 20 3F FF 20 ............ ?. F3D0: F0 FD 8D 81 C0 20 4A FF 4C C0 03 00 00 00 00 E1 ..... J.L....... F3E0: 1B 0C 00 CD 01C3 83 F2 7E E6 08 CA 91 F2 +~.`......~..... F2A0: 2B 7E F5 3A 82 F2 23 23 77 F1 C9 21 9A E0 3A 82 +~.:..##w..!..:. F2B0: F2 77 23 3A 80 F2 77 2B 2B 7E E6 40 CA C2 F2 C3 .w#:..w++~.@.... F2C0: AB F2 7E E6 10 CA B9 F2 79 2B 77 C9 88 8A 8B 95 ..~....b AZbd bn ( ): bx "EPSON FX80 INITPROGRAMM": c "(C) DIERK BOBEROWSKY AUG.1983"c -c "END: PROGRAMMENDE"Ic "SET: CHARACTERSET"dc "TYP: SCHRIFTTYP "c "SRM: SETZEN RECHTEN RAND "c D0 F3 2A DE F3 77 C9 8D BF C0 60 .!|."..*..w....` F380: 4A F3 69 F2 29 DB 5E F3 3E DC 45 DD 83 F2 AB F2 J.i.).^.>.E..... F390: AB F2 2B DD AB F2 20 1B AA D9 D4 A9 A8 1E BD 0B ..+... ......... F3A0: 0C A0 00 0C 0B 1D 0E 0F 19 1E 1F 1C FF FF FF FF ..l..L......... F340: 00 00 00 00 00 00 00 00 00 00 3A BB F3 FE 03 C2 ..........:..... F350: 0C DB 3A BE E0 1F 9F C9 C3 29 DB E6 7F C9 3A BB ..:......)....:. F360: F3 FE 03 C2 3E DC 3A BE E0 E6 02 28 F9 79 32 45 ....>.:....(.y2E F370: F0 21 7C 03 22 "*";A$f I I f (A$,) (B$(I),) W I: f I  f g g W *,.,2,6,:,>,hB,PF,8J, N,R,U,Y,],a,a,e,xi,`m,Hq,0u,y,},,Є,,,,p,Xg "+" A1$ "-" L: u&RST : u0RST ("i"): u:R "%% INCREMENTALER DRUCK ";.vDR A1$ "+" ST : : "AN": XRXvNR A1$ "-" ST : : "AUS"`vXR vU UNIDIRECTIONALER DRUCK AN/AUSvU E ";A1;" ZEILEN"oB oPF UEBERSPRINGEN DER PERFORATIONoZF ESC,"N",pdF : (" "A1$) (A1) L: 'pnFST : ApxFST ("N"): TpFST A1: pF "%% PERFORATION ";A1;" ZEILENSPRUNG"pF p8J ***************************************************i' INITROUTINEN FUER DEN FX80$j$' ***************************************************:j* "PROGRAMMSTOP"Bj+ Wj. CHARACTERSETmj. ESC,"R",j. : (" "A1$) ENVORSCHUB AUF ";T();"/216 ZOLL"s2K s N TABULATORSTOPS SETZENs*N ESC,"D",,,...,,<0>t4NTA : K   >t>N : A1$ "" K !: fNjtHN (" "A1$) (A1) L: tRNTA TA :T(TA) A1t\NST F SPALTE ";A1m:LM A1m: IF RM < > 0 THEN POKE 1657,RM - LMm: m> FORMULARLAENGE IN ZOLL n> ESC,"C",<0>,In> : (" "A1$) (A1) L: \n>ST : vn>ST ("C"): n>ST : n>ST g AUSGABE DIREKT AUF DEN PARALLELPORTg:hier war nur eine Dummyroutine ohne funktion 'REM'h LET OUT = - 162400h LET BUSY = - 15935Ih (BUSY) Wh OUT,ST^h uh PARAMETERINPUTh (A$,P,) " "~JT() A1qJ T()  T()  JqJST : qJST ("0"): rJ "%% ZEIELNVORSCHUB AUF 1/8 ZOLL": BrJ T()  T() H JUrJST : orJST ("1"): rJ "%% ZEILENVORSCHUB AUF 7 ZEILENABSTANDpBJ ESC,"0" => 1/8 ZOLL pLJ ESC,"1" => 7/72 ZOLLpVJ ESC,"2" => 1/6 ZOLLq`J ESC,"3", => NR/216 ZOLLOqjJ : (" "A1$) (A1) L: qtJT() A1: : (" "A1$) (A1) L: q(A1) L: j. ST : j/ ST ("R"): j/ ST A1:  k/ "%% CHARACTERSET NR. ";A1k&/ %k2 SCHRIFTTYP:k2 ESC,"!",mk2 : (" "A1$) (A1) L: k2 ST : k2 ST ("D"): tfN KtpN "%% TABSTOPS AUF ";tzNST : tN K  TAtNST T(K): uN T(K);", ";%uN K: "GESETZT"7uNST : ?uN `uR INCREMENTALER DRUCKMODUSxuR ESC,"i",<0>|<1>uR : A1$ A1: n> "%% FORMULARLAENGE ";A1;" ZOLL"n> nhB FORMULARLAENGE IN ZEILENorB ESC,"C", 4o|B : (" "A1$) (A1) L: GoBST : aoBST ("C"): toBST A1: oB "%% FORMULARLAENGE: P P : h J P (A$)h (A$,J,) "/" J i A1$ (A$,P,J P):A1 (A1$)i P J $i$ OiL "%% PARAMETERFEHLER !!"; (): i ()"BEFEHL FALSCH (??? FUER HELP)" (): i' /72 ZOLL": rJ T()  T()  KrJST : rJST ("2"): sJ "%% ZEILENVORSCHUB AUF 1/6 ZOLL": =sK T()  L: Ps KST : jsKST ("3"): sKST T(): s(K "%% ZEIL "%% RECHTER RAND AUF SPALTE ";A1l7 POKE 1657,RM - LMl 7 l: LINKEN RAND SETZENm: ESC,"l",5m: : (" "A1$) (A1) L: Hm:ST : bm:ST ("l"): um:ST A1: m: "%% LINKER RAND AU ("!"): k2 ST A1: k3 "%% SCHRIFTTYP NR. ";A1k3 k6 RECHTEN RAND SETZENl6 ESC,"Q",Al6 : (" "A1$) (A1) L: Wl6 ST : tl6 ST ("Q"): l6 ST A1: l6SC,"U",<0>|<1>vV : A1$ "+" A1$ "-" L: vV "%% UNIDIRECTIONAL ";wVST : w"VST ("U"): Nw,V A1$ "+" ST : : "AN": @Vxw6V A1$ "-" ST : : "AUS"w@V wY DRUCKEinwei au de Befeh '??? (Befehlslist ausgeben) I de Program werde s gu wi kein Abfrage au Plausibilit{ gemach (Abh{ngikeite de Paramete unterein- ander un siche is auc de allgemein Aufba verbesserungsw}rdigerun vornehme z k|nnen is da Program FX80-INIԠ endstanden E is i Applesoft-basi geschriebe un wir s au jede Appl un applekompatible Compute laufe k|nnen de mi eine Epsoninterfac ausgestatte ist Ei Umsch$ "+" ST ("4"): : "AN": aya A1$ "-" ST ("5"): : "AUS"ya ya ze zxi z`m zHq 'z0u /zy 7z} ?z GzЄ Oz Wz _z gzp vzX HELP zb "BEFEHLSLISTE:"iesen wen de Drucke nich on-lin is (nach- tr{glic eingeschoben Funktion) Is de Drucke bereit s melde sic da Program mi eine Stern de signalisiert da da Program au Befehl wartet Di erfolgreich BefehlRRESETwY ESC,"@"wYST : wYST ("@"): wZ "%% DRUCKERSOFTRESET"w Z x] PAPIERENDEWARNUNGHx] : A1$ "+" A1$ "-" L: hx] "%% PAPIERENDEWARNUNG ";{x]ST : x] A1$ "+" n werde zu Aus- f}h- rungszei i ein Tabell geladen Di Tabell is f} weiter Erweite- runge vo vor herei etwa gr|~e dimensioniert Erweiter- unge m}sse nu i di DATA-zeile eingetrage werde (di erste dreibe au ander Interfac is seh schnel m|glich d nu di Adresse (Bus un Port i de Routin f} di Ausgab ge{nder werde m}ssen All Befehle di vo Program verarbeite werde k|nnen stehe i de DATA-zeile uzl K  zv B$(K) "" )B$(K)z z z gzp vzX HELP zb "BEFEHLSLISTE:"z`m zHq 'z0u /zy 7z} ?z GzЄ Oz Wz _z gzp vzX HELP zb "BEFEHLSLISTE:"sausf}hrun wir durc ein Wieder- hohlun de Paramete angezeigt Wir de Paramete syntaktisc falsc eingegeben s wir '% Parameterfehler gemeldet Wir de Befeh nich erkannt s gib e auc ein Fehlermeldun mi de H FX80-Initprogramm De neu Drucke FX8 vo Epso biete ein Vielzah vo Ein- stellungen di zu Tei i Programme nich implementier sind U vo Programmstar ein InitialisiST ("8"): : "AN": ^x] A1$ "-" ST ("9"): : "AUS"x^ ya ALTERNATIVER ZEICHENSATZ"ya ESC,<5>|<4>Yya : A1$ "+" A1$ "-" L: rya "KURSIVSCHRIFT ";yaST : ya A1re Buchstabe werde f} de Befeh gehalten un di REM-Zeile bilde di endsprechende Ansprungpunkt f} di neue Befehle. Nachde da Program gestarte worde ist wir da Busy-Signa ab- gefrag un darau hingew嬠 abe auc i diese For leiste mi da Program scho einig Hilfe Ic schalt de Drucke meis vo de Boote vo CP/ ode de UCSD-Syste au 13 Stelle un eventuel auc noc au US-ASCII Zu Tei arbeit ic auc THEN PRINT "BITTE DRUCKER ON-LINE SCHALTEN!": PRINT 320 IF PEEK ( - 15935) > 127 THEN GOTO 320 330 DIM B$(30),T(32) 340 LM = 0:RM = 0:TA = 0 350 LET B$(30) = "???" 360 FOR I = 1 TO 30 370 READ A$: IF LEFT$ (A$,3) = "???" THEN I = 30: GOTO 390 38 Au gute Gelinge un viel Idee zu Verbesserung. Dierk Boberowsky M2083 Bramfelder Stra~e 91 2000 Hamburg 60 bi 6. Sechzeh Verschieden stehe zu Aus- wahl de Res sid Doppelbelegungen. SRM n Setze de rechte Randes abh{ngi vo de Schriftar (sieh Drucke - Manual) SLM n Setze de linkeM: SETZEN RECHTEN RAND " 190 DATA "SLM: SETZEN LINKEN RAND" 200 DATA "FO1: FORMULARLAENGE /ZOLL" 210 DATA "FO2: FORMULARLAENGE /ZEILEN" 220 DATA "SKI: PERFORATION UEBERSPR." 230 DATA "ZAB: ZEILENABSTAND 1/8 1/6 7/72 N/216" 240 DATA "TAB: TABULA UNI +, - Ei- un aus-schalte de Unidirectionale Druckmodus Unidirectiona au endsprich Bidirectionale Modus. ERR +, - Di Papierendewarnun wi au- ode angeschaltet. AZS +, - mi 'Altpapier un mu dan au Gr}nde de Lesbarkei de rechte Ran setzen. Di folgende Befehl sin de Program scho bekannt: END Durc diese Kommand wir da Program ordnungsgem{ beende un ma Rande (z.B Heftrand) mu abe kleine sei al de recht Rand (na logisch). FO1 n Setze un initialisiere de Formularl{ng (Angab i Zoll) FO2 n Setze un initialisiere de Formularl{ngTORSTOPS SETZEN " 250 DATA "INC: INCREMENTALER DRUCK +/-" 260 DATA "UNI: UNIDIRECTIONAL +/-" 270 DATA "RES: DRUCKERRESET" 280 DATA "ERR: PAPIERENDEERROR +/-" 290 DATA "AZS: KURSIV +/-" 300 DATA "???: HELPFUNKTION" 310 IF PEEK ( - 15935) > 127 Kursivschrif a ode aus. RES E wir ei Druckerrese ausgel|st de de Drucke au sein Defaultein- stellun setzt. ??? E wir ein kurz Befehlslist mi minimale Erl{uterunge ausgegeben. befindet sich wieder in der Systemebene (Applesoft Bzw. DOS). SET n E wir de endsprechend national Zeichensat ausgew{hl (sieh Drucker- Manual bi 7). TYP n Einstelle de Schriftar (0 100 TEXT 110 PRINT CHR$ (12): HOME 120 PRINT "EPSON FX80 INITPROGRAMM": PRINT 130 PRINT "(C) DIERK BOBEROWSKY AUG.1983" 140 PRINT 150 DATA "END: PROGRAMMENDE" 160 DATA "SET: CHARACTERSET" 170 DATA "TYP: SCHRIFTTYP " 180 DATA "SR TAB t1/t2/.../t32 Setze de Druckertabstop (e sin bi z 3 Angabe m|glich di Wert sin abh{ngikeite de Maximalwert vo Schrifttyp) INC +, - Ei- ode aus-schalte de incrementale Druckmodus. (Angab i Zeilen abh{ngi vo gesetzte Zeilenabstand). SKI n Perforatio automatisc u Zeile }berspringen ZAB 1/8, 1/6, 7/72 oder n/216 Setze eine Zeilenvorschube (Zeilenabstand (Angabe i Zoll). 0 LET B$(I) = A$ 390 NEXT I 400 LET P = 4:I = 0: INPUT "*";A$ 410 LET I = I + 1 420 IF LEFT$ (A$,3) = LEFT$ (B$(I),3) THEN W = I: GOTO 460 430 IF I < 30 THEN GOTO 410 440 GOSUB 1200 450 GOTO 400 460 ON W GOSUB 11000,12000,13000,14000,15000,16002 ZOLL": RETURN 19160 IF T(1) < > 1 OR T(2) < > 6 THEN 19200 19170 ST = 27: GOSUB 480 19180 ST = ASC ("2"): GOSUB 480 19190 PRINT "%% ZEILENVORSCHUB AUF 1/6 ZOLL": RETURN 19200 IF T(2) < > 216 THEN GOSUB 1100: RETURN 19210 ST = 27: GOSUB 480 192THEN POKE 1657,RM - LM 15090 RETURN 16000 REM FORMULARLAENGE IN ZOLL 16010 REM ESC,"C",<0>, 16020 GOSUB 1000: IF A1$ < > STR$ (A1) THEN GOSUB 1100: RETURN 16030 ST = 27: GOSUB 480 16040 ST = ASC ("C"): GOSUB 480 16050 ST = 0: GOSUB 480 16J - P):A1 = VAL (A1$) 1050 LET P = J + 1 1060 RETURN 1100 PRINT "%% PARAMETERFEHLER !!"; CHR$ (7): RETURN 1200 PRINT CHR$ (7)"BEFEHL FALSCH (??? FUER HELP)" CHR$ (7): RETURN 10000 REM *************************************************** 10010 REMLL 19040 REM ESC,"3", => NR/216 ZOLL 19050 GOSUB 1000: IF A1$ < > STR$ (A1) THEN GOSUB 1100: RETURN 19060 T(1) = A1: GOSUB 1000: IF A1$ < > STR$ (A1) THEN GOSUB 1100: RETURN 19070 T(2) = A1 19080 IF T(1) < > 1 OR T(2) < > 8 THEN 19120 1901) THEN GOSUB 1100: RETURN 14030 LET ST = 27: GOSUB 480 14040 LET ST = ASC ("Q"): GOSUB 480 14050 LET ST = A1: GOSUB 480 14060 PRINT "%% RECHTER RAND AUF SPALTE ";A1 14070 RM = A1 14080 POKE 1657,RM - LM 14090 RETURN 15000 REM LINKEN RAND SETZE0,17000,18000,19000,20000,21000,22000,23000,24000,25000,25080,26000,27000,28000,29000,30000,31000,32000,33000,34000,35000,36000,37000,38000,39000 470 GOTO 400 480 REM AUSGABE DIREKT AUF DEN PARALLELPORT 490 LET OUT = - 16240 500 LET BUSY = - 15935 5"C"): GOSUB 480 17050 ST = A1: GOSUB 480 17060 PRINT "%% FORMULARLAENGE: ";A1;" ZEILEN" 17070 RETURN 18000 REM UEBERSPRINGEN DER PERFORATION 18010 REM ESC,"N", 18020 GOSUB 1000: IF A1$ < > STR$ (A1) THEN GOSUB 1100: RETURN 18030 ST = 27: GO060 ST = A1: GOSUB 480 16070 PRINT "%% FORMULARLAENGE ";A1;" ZOLL" 16080 RETURN 17000 REM FORMULARLAENGE IN ZEILEN 17010 REM ESC,"C", 17020 GOSUB 1000: IF A1$ < > STR$ (A1) THEN GOSUB 1100: RETURN 17030 ST = 27: GOSUB 480 17040 ST = ASC ( INITROUTINEN FUER DEN FX80 10020 REM *************************************************** 11000 PRINT "PROGRAMMSTOP" 11010 END 12000 REM CHARACTERSET 12010 REM ESC,"R", 12020 GOSUB 1000: IF A1$ < > STR$ (A1) THEN GOSUB 1100: RETURN 1290 ST = 27: GOSUB 480 19100 ST = ASC ("0"): GOSUB 480 19110 PRINT "%% ZEIELNVORSCHUB AUF 1/8 ZOLL": RETURN 19120 IF T(1) < > 7 OR T(2) < > 72 THEN 19160 19130 ST = 27: GOSUB 480 19140 ST = ASC ("1"): GOSUB 480 19150 PRINT "%% ZEILENVORSCHUB AUF 7/7N 15010 REM ESC,"l", 15020 GOSUB 1000: IF A1$ < > STR$ (A1) THEN GOSUB 1100: RETURN 15030 ST = 27: GOSUB 480 15040 ST = ASC ("l"): GOSUB 480 15050 ST = A1: GOSUB 480 15060 PRINT "%% LINKER RAND AUF SPALTE ";A1 15070 LM = A1 15080 IF RM < > 0 10 IF PEEK (BUSY) > 127 THEN GOTO 510 520 POKE OUT,ST 530 RETURN 1000 REM PARAMETERINPUT 1010 IF MID$ (A$,P,1) = " " THEN P = P + 1: GOTO 1010 1020 FOR J = P TO LEN (A$) 1030 IF MID$ (A$,J,1) < > "/" THEN NEXT J 1040 LET A1$ = MID$ (A$,P,SUB 480 18040 ST = ASC ("N"): GOSUB 480 18050 ST = A1: GOSUB 480 18060 PRINT "%% PERFORATION ";A1;" ZEILENSPRUNG" 18070 RETURN 19000 REM ZEILENABSTAND 19010 REM ESC,"0" => 1/8 ZOLL 19020 REM ESC,"1" => 7/72 ZOLL 19030 REM ESC,"2" => 1/6 ZO: RETURN 13030 LET ST = 27: GOSUB 480 13040 LET ST = ASC ("!"): GOSUB 480 13050 LET ST = A1: GOSUB 480 13060 PRINT "%% SCHRIFTTYP NR. ";A1 13070 RETURN 14000 REM RECHTEN RAND SETZEN 14010 REM ESC,"Q", 14020 GOSUB 1000: IF A1$ < > STR$ (A030 LET ST = 27: GOSUB 480 12040 LET ST = ASC ("R"): GOSUB 480 12050 LET ST = A1: GOSUB 480 12060 PRINT "%% CHARACTERSET NR. ";A1 12070 RETURN 13000 REM SCHRIFTTYP 13010 REM ESC,"!", 13020 GOSUB 1000: IF A1$ < > STR$ (A1) THEN GOSUB 110020 ST = ASC ("3"): GOSUB 480 19230 ST = T(1): GOSUB 480 19240 PRINT "%% ZEILENVORSCHUB AUF ";T(1);"/216 ZOLL" 19250 RETURN 20000 REM TABULATORSTOPS SETZEN 20010 REM ESC,"D",,,...,,<0> 20020 TA = 0: FOR K = 1 TO 32 20030 GOSUB 1000: IFTORSTOPS SETZEN " 250 DATA "INC: INCREMENTALER DRUCK +/-" 260 DATA "UNI: UNIDIRECTIONAL +/-" 270 DATA "RES: DRUCKERRESET" 280 DATA "ERR: PAPIERENDEERROR +/-" 290 DATA "AZS: KURSIV +/-" 300 DATA "???: HELPFUNKTION" 310 IF 1000 REM 32000 REM 33000 REM 34000 REM 35000 REM 36000 REM 37000 REM 38000 REM 39000 REM HELP 39010 PRINT "BEFEHLSLISTE:" 39020 FOR K = 1 TO 30 39030 IF B$(K) < > "" THEN PRINT SPC( 1)B$(K) 39040 NEXT 39050 PRINT 39060 RETURN1030 ST = 27: GOSUB 480 21040 ST = ASC ("i"): GOSUB 480 21050 PRINT "%% INCREMENTALER DRUCK "; 21060 IF A1$ = "+" THEN ST = 1: GOSUB 480: PRINT "AN": GOTO 21080 21070 IF A1$ = "-" THEN ST = 0: GOSUB 480: PRINT "AUS" 21080 RETURN 22000 REM UNIDIRECT 120 PRINT "EPSON FX80 INITPROGRAMM": PRINT 130 PRINT "(C) DIERK BOBEROWSKY AUG.1983" 140 PRINT 150 DATA "END: PROGRAMMENDE" 160 DATA "SET: CHARACTERSET" 170 DATA "TYP: SCHRIFTTYP " 180 DATA "SRM: SETZEN RECHTEN O 24070 24060 IF A1$ = "-" THEN ST = ASC ("9"): GOSUB 480: PRINT "AUS" 24070 RETURN 25000 REM ALTERNATIVER ZEICHENSATZ 25010 REM ESC,<5>|<4> 25020 GOSUB 1000: IF A1$ < > "+" AND A1$ < > "-" THEN GOSUB 1100: RETURN 25030 PRINT "KURSIVSCHRIFT " A1$ = "" THEN K = 33: GOTO 20070 20040 IF A1$ < > STR$ (A1) THEN GOSUB 1100: RETURN 20050 TA = TA + 1:T(TA) = A1 20060 ST = ASC ("D"): GOSUB 480 20070 NEXT K 20080 PRINT "%% TABSTOPS AUF "; 20090 ST = 27: GOSUB 480 20100 FOR K = 1 TO TA 20110 ST IONALER DRUCK 22010 REM ESC,"U",<0>|<1> 22020 GOSUB 1000: IF A1$ < > "+" AND A1$ < > "-" THEN GOSUB 1100: RETURN 22030 PRINT "%% UNIDIRECTIONAL "; 22040 ST = 27: GOSUB 480 22050 ST = ASC ("U"): GOSUB 480 22060 IF A1$ = "+" THEN ST = 1: GOSUB 480:RAND " 190 DATA "SLM: SETZEN LINKEN RAND" 200 DATA "FO1: FORMULARLAENGE /ZOLL" 210 DATA "FO2: FORMULARLAENGE /ZEILEN" 220 DATA "SKI: PERFORATION UEBERSPR." 230 DATA "ZAB: ZEILENABSTAND 1/8 1/6 7/72 N/216" 240 DATA "TAB: TABULA; 25040 ST = 27: GOSUB 480 25050 IF A1$ = "+" THEN ST = ASC ("4"): GOSUB 480: PRINT "AN": GOTO 25070 25060 IF A1$ = "-" THEN ST = ASC ("5"): GOSUB 480: PRINT "AUS" 25070 RETURN 25080 REM 26000 REM 27000 REM 28000 REM 29000 REM 30000 REM 3= T(K): GOSUB 480 20120 PRINT T(K);", "; 20130 NEXT K: PRINT "GESETZT" 20140 ST = 0: GOSUB 480 20150 RETURN 21000 REM INCREMENTALER DRUCKMODUS 21010 REM ESC,"i",<0>|<1> 21020 GOSUB 1000: IF A1$ < > "+" AND A1$ < > "-" THEN GOSUB 1100: RETURN 2.pl 72 .po 0 .op  ******************************* * * * FX80.INIT Programm * * * ******************************* 100 TEXT 110 PRINT CHR$ (12): HOMEEM PAPIERENDEWARNUNG 24010 REM ESC,<8>|<9> 24020 GOSUB 1000: IF A1$ < > "+" AND A1$ < > "-" THEN GOSUB 1100: RETURN 24030 PRINT "%% PAPIERENDEWARNUNG "; 24040 ST = 27: GOSUB 480 24050 IF A1$ = "+" THEN ST = ASC ("8"): GOSUB 480: PRINT "AN": GOT PRINT "AN": GOTO 22080 22070 IF A1$ = "-" THEN ST = 0: GOSUB 480: PRINT "AUS" 22080 RETURN 23000 REM DRUCKERRESET 23010 REM ESC,"@" 23020 ST = 27: GOSUB 480 23030 ST = ASC ("@"): GOSUB 480 23040 PRINT "%% DRUCKERSOFTRESET" 23050 RETURN 24000 RPEEK ( - 15935) > 127 THEN PRINT "BITTE DRUCKER ON-LINE SCHALTEN!": PRINT 320 IF PEEK ( - 15935) > 127 THEN GOTO 320 330 DIM B$(30),T(32) 340 LM = 0: RM = 0: TA = 0 350 B$(30) = " ST = ASC ("C"): GOSUB 480 17050 ST = A1: GOSUB 480 17060 PRINT "%% FORMULARLAENGE: ";A1;" ZEILEN" 17070 RETURN 18000 REM UEBERSPRINGEN DER PERFORATION 18010 REM ESC,"N", 18020 GOSUB 1000: IF A1$ <> STR$ (A1)30 ST = 27: GOSUB 480 13040 ST = ASC ("!"): GOSUB 480 13050 ST = A1: GOSUB 480 13060 PRINT "%% SCHRIFTTYP NR. ";A1 13070 RETURN 14000 REM RECHTEN RAND SETZEN 14010 REM ESC,"Q", 14020 GOSUB 1000: IF 21000,22000,23000,24000,25000, 25080,26000,27000,28000,29000, 30000,31000,32000,33000,34000, 35000,36000,37000,38000,39000 470 GOTO 400 480 REM AUSGABE DIREKT AUF DEN 1000: IF A1$ <> STR$ (A1) THEN GOSUB 1100: RETURN 16030 ST = 27: GOSUB 480 16040 ST = ASC ("C"): GOSUB 480 16050 ST = 0: GOSUB 480 16060 ST = A1: GOSUB 480 16070 PRINT "% "PROGRAMMSTOP" 11010 END 12000 REM CHARACTERSET 12010 REM ESC,"R", 12020 GOSUB 1000: IF A1$ <> STR$ (A1) THEN GOSUB 1100: RETURN 12030 ST = 27: GOSUB 480 12040 ST = ASC ("R"): GO???" 360 FOR I = 1 TO 30 370 READ A$: IF LEFT$ (A$,3) = "???" THEN I = 30: GOTO 390 380 B$(I) = A$ 390 NEXT I 400 P = 4: I = 0: INPUT "*";A$ 410 I = I + 1 420 IF LEFT$ (A$,3) POKE 1657,RM - LM 14090 RETURN 15000 REM LINKEN RAND SETZEN 15010 REM ESC,"l", 15020 GOSUB 1000: IF A1$ <> STR$ (A1) THEN GOSUB 1100: RETURN 15030 ST = 27: GOSUB 480 15040 ST = ASC ("l"): A1$ <> STR$ (A1) THEN GOSUB 1100: RETURN 14030 ST = 27: GOSUB 480 14040 ST = ASC ("Q"): GOSUB 480 14050 ST = A1: GOSUB 480 14060 PRINT "%% RECHTER RAND AUF SPALTE ";A1 14070 RM = A1 14080 PARALLELPORT 490 OUT = - 16240 500 BUSY = - 15935 510 IF PEEK (BUSY) > 127 THEN GOTO 510 520 POKE OUT,ST 530 RETURN 1000 REM PARAMETERINPUT 1010 IF MID$ (A$,P,1) = " " THEN P = P + 1: GOTO 1010% FORMULARLAENGE ";A1;" ZOLL" 16080 RETURN 17000 REM FORMULARLAENGE IN ZEILEN 17010 REM ESC,"C", 17020 GOSUB 1000: IF A1$ <> STR$ (A1) THEN GOSUB 1100: RETURN 17030 ST = 27: GOSUB 480 17040 SUB 480 12050 ST = A1: GOSUB 480 12060 PRINT "%% CHARACTERSET NR. ";A1 12070 RETURN 13000 REM SCHRIFTTYP 13010 REM ESC,"!", 13020 GOSUB 1000: IF A1$ <> STR$ (A1) THEN GOSUB 1100: RETURN 130 = LEFT$ (B$(I),3) THEN W = I: GOTO 460 430 IF I < 30 THEN GOTO 410 440 GOSUB 1200 450 GOTO 400 460 ON W GOSUB 11000,12000,13000,14000,15000, 16000,17000,18000,19000,20000, GOSUB 480 15050 ST = A1: GOSUB 480 15060 PRINT "%% LINKER RAND AUF SPALTE ";A1 15070 LM = A1 15080 IF RM <> 0 THEN POKE 1657,RM - LM 15090 RETURN 16000 REM FORMULARLAENGE IN ZOLL 16010 REM ESC,"C",<0>, 16020 GOSUB CHR$ (7)"BEFEHL FALSCH (??? FUER HELP)" CHR$ (7): RETURN 10000 REM *************************************************** 10010 REM INITROUTINEN FUER DEN FX80 10020 REM *************************************************** 11000 PRINT 1020 FOR J = P TO LEN (A$) 1030 IF MID$ (A$,J,1) <> "/" THEN NEXT J 1040 A1$ = MID$ (A$,P,J - P): A1 = VAL (A1$) 1050 P = J + 1 1060 RETURN 1100 PRINT "%% PARAMETERFEHLER !!"; CHR$ (7): RETURN 1200 PRINT THEN GOSUB 1100: RETURN 18030 ST = 27: GOSUB 480 18040 ST = ASC ("N"): GOSUB 480 18050 ST = A1: GOSUB 480 18060 PRINT "%% PERFORATION ";A1;" ZEILENSPRUNG" 18070 RETURN 19000 REM ZEILENALTERNATIVER ZEICHENSATZ 25010 REM ESC,<5>|<4> 25020 GOSUB 1000: IF A1$ <> "+" AND A1$ <> "-" THEN GOSUB 1100: RETURN 25030 PRINT "KURSIVSCHRIFT "; 25040 ST = 27: GOSUB 480 25050 IF A1$ = "+" THEN GOSUB 480 21040 ST = ASC ("i"): GOSUB 480 21050 PRINT "%% INCREMENTALER DRUCK "; 21060 IF A1$ = "+" THEN ST = 1: GOSUB 480: PRINT "AN": GOTO 21080 21070 IF A1$ = "-" THEN SSUB 480 19110 PRINT "%% ZEIELNVORSCHUB AUF 1/8 ZOLL": RETURN 19120 IF T(1) <> 7 OR T(2) <> 72 THEN 19160 19130 ST = 27: GOSUB 480 19140 ST = ASC ("1"): GOSUB 480 19150 PRINT "%% ZEILENVORSCHUB AUF 7/72 ZOLL": RETURN 19160 ITURN 24000 REM PAPIERENDEWARNUNG 24010 REM ESC,<8>|<9> 24020 GOSUB 1000: IF A1$ <> "+" AND A1$ <> "-" THEN GOSUB 1100: RETURN 24030 PRINT "%% PAPIERENDEWARNUNG "; 24040 ST = 27: GOSUB 480 24050 1 20060 ST = ASC ("D"): GOSUB 480 20070 NEXT K 20080 PRINT "%% TABSTOPS AUF "; 20090 ST = 27: GOSUB 480 20100 FOR K = 1 TO TA 20110 ST = T(K): GOSUB 480 20120 PRINT T(K);", "; 20130 NEXT K: PRINT "GESETZBSTAND 19010 REM ESC,"0" => 1/8 ZOLL 19020 REM ESC,"1" => 7/72 ZOLL 19030 REM ESC,"2" => 1/6 ZOLL 19040 REM ESC,"3", => NR/216 ZOLL 19050 GOSUB 1000: IF A1$ <> STR$ (A1) THEN GOSUB 1100: RETURN RINT "%% UNIDIRECTIONAL "; 22040 ST = 27: GOSUB 480 22050 ST = ASC ("U"): GOSUB 480 22060 IF A1$ = "+" THEN ST = 1: GOSUB 480: PRINT "AN": GOTO 22080 22070 IF A1$ = "-" THEN T = 0: GOSUB 480: PRINT "AUS" 21080 RETURN 22000 REM UNIDIRECTIONALER DRUCK 22010 REM ESC,"U",<0>|<1> 22020 GOSUB 1000: IF A1$ <> "+" AND A1$ <> "-" THEN GOSUB 1100: RETURN 22030 PF T(1) <> 1 OR T(2) <> 6 THEN 19200 19170 ST = 27: GOSUB 480 19180 ST = ASC ("2"): GOSUB 480 19190 PRINT "%% ZEILENVORSCHUB AUF 1/6 ZOLL": RETURN 19200 IF T(2) <> 216 THEN GOSUB 1100: RETURN 19210 SIF A1$ = "+" THEN ST = ASC ("8"): GOSUB 480: PRINT "AN": GOTO 24070 24060 IF A1$ = "-" THEN ST = ASC ("9"): GOSUB 480: PRINT "AUS" 24070 RETURN 25000 REM AT" 20140 ST = 0: GOSUB 480 20150 RETURN 21000 REM INCREMENTALER DRUCKMODUS 21010 REM ESC,"i",<0>|<1> 21020 GOSUB 1000: IF A1$ <> "+" AND A1$ <> "-" THEN GOSUB 1100: RETURN 21030 ST = 27: 19060 T(1) = A1: GOSUB 1000: IF A1$ <> STR$ (A1) THEN GOSUB 1100: RETURN 19070 T(2) = A1 19080 IF T(1) <> 1 OR T(2) <> 8 THEN 19120 19090 ST = 27: GOSUB 480 19100 ST = ASC ("0"): GO ST = 0: GOSUB 480: PRINT "AUS" 22080 RETURN 23000 REM DRUCKERRESET 23010 REM ESC,"@" 23020 ST = 27: GOSUB 480 23030 ST = ASC ("@"): GOSUB 480 23040 PRINT "%% DRUCKERSOFTRESET" 23050 RE,<0> 20020 TA = 0: FOR K = 1 TO 32 20030 GOSUB 1000: IF A1$ = "" THEN K = 33: GOTO 20070 20040 IF A1$ <> STR$ (A1) THEN GOSUB 1100: RETURN 20050 TA = TA + 1: T(TA) = AT = 27: GOSUB 480 19220 ST = ASC ("3"): GOSUB 480 19230 ST = T(1): GOSUB 480 19240 PRINT "%% ZEILENVORSCHUB AUF ";T(1);"/216 ZOLL" 19250 RETURN 20000 REM TABULATORSTOPS SETZEN 20010 REM ESC,"D",,,..., ST = ASC ("4"): GOSUB 480: PRINT "AN": GOTO 25070 25060 IF A1$ = "-" THEN ST = ASC ("5"): GOSUB 480: PRINT "AUS" 25070 RETURN 25080 REM 26000 REM 27000 Rcharacter in (A). CP LF ;Is it a LF? JP NZ,NOTLF+OFFSET ;Nope. LD (LAST+OFFSET),A;Save current character. RET ;Return without printing anything. ; NOTCR: LD A,C * ;* CALL -A.P.P.L.E. November 1983 * ;* ( Z80-Code D. Stampe M334 ) * ;* * ;************************************************** ; ;A routine to eliminate the LF f LD (HL),D LD HL,PATCH ;Move patched driver to the LD DE,IOPATCH ; patch area by using the LD BC,LAST-PATCH+1 ; Z-80 LDIR instruction. LDIR JP WBOOT ;Exit througEM 28000 REM 29000 REM 30000 REM 31000 REM 32000 REM 33000 REM 34000 REM 35000 REM 36000 REM 37000 REM 38000 REM 39000 REM HELP 39010 PRINT "BEFEHLSLISTE:" 39020 FOR K = 1 TO 30 39030 IF B$(K) <> "" THEN PRINT LIST device vector 2 (UL2:). WRTPAR EQU 0DD31H ;Parallel card driver routine. SLOT EQU 1 ;Slot number. CR EQU 13 ;Carriage return. LF EQU 10 ;Line feed. IOPATCH EQU 0F200H ollowing a CR. ;For the UL1: device in slot 1 using a ; parallel driver card. ;For CP/M version 2.20B 56K. ; .Z80 ASEG ORG 100H ; WBOOT EQU 0 ;CP/M warm start entry. LSTVEC2 EQU 0F394H ;!s#r!: y 2y21 &Idy@ źNOLF REL,NOLF COMh the warm boot. ; OFFSET EQU IOPATCH-$ ;Assembler offset. PATCH: LD A,(LAST+OFFSET);Load previous character. CP CR ;Was it a CR? JP NZ,NOTCR+OFFSET ;Nope LD A,C ;Place current ;************************************************** ;* * ;* NOLF * ;* by * ;* M. Arnow SPC( 1)B$(K) 39040 NEXT 39050 PRINT 39060 RETURN  REM 38000 REM 39000 REM HELP 39010 PRINT "BEFEHLSLISTE:" 39020 FOR K = 1 TO 30 39030 IF B$(K) <> "" THEN PRINT ;IOCB user patch area. ; LD HL,LSTVEC2 ;Place UL1: vector in (HL). LD DE,IOPATCH ;Place start of user area in (DE). LD (HL),E ;Change UL1: vector to user INC HL ; patch area ;Place current character in (A). NOTLF: LD (LAST+OFFSET),A;Save current character. LD DE,SLOT ;Place slot number in (DE). JP WRTPAR ;Print the character. ; LAST: DEFB 0 ;Last character buff ;Place current character in (A). NOTLF: LD (LAST),A ;Save current character. JP 0000 ;Print the character. OLDLS EQՠ $- ;CONFIGI put olLST addres ; LAST: DEFB 0 ;Last ch * ;* CALL -A.P.P.L.E. November 1983 * ;* * ;* }bersetzt in Z80 Code und * ;* erg{nzt zum Einbinden ins * ;* System mit MBASIC CONFIGI DW OLDLST DW NEWLST ; .PHASE IOPATCH ; NEWLST: LD A,(LAST) ;Load previous character. CP CR ;Was it a CR? JP NZ,NOTCR ;Nope LD A,C ;Placeer. ; END slot number in (DE). JP WRTPAR ;Print the character. ; LAST: DEFB 0 ;Last character bufft 1 using a ; parallel driver card. ;For CP/M version 2.20B 56K, 2.30 60K. ; .Z80 ASEG ORG 100H ; CR EQU 13 ;Carriage return. LF EQU 10 ;Line feed. IOPATCH EQU 0F200H O * ;* D. Stampe M334, 4.2.84 * ;* * ;************************************************** ; ;A routine to eliminate the LF following a CR. ;For the LST: device in slo : y 2y2A72dFA N current character in (A). CP LF ;Is it a LF? JP NZ,NOTLF ;Nope. LD (LAST),A ;Save current character. RET ;Return without printing anything. ; NOTCR: LD A,C ;************************************************** ;* * ;* NOLF * ;* by * ;* M. Arnow ;IO user patch area. ; PATCH: DB 1 ;1 Patch DW IOPATCH ;Dest. Address DW END-NEWLST ;Length ; DB 2 ;Patch Type 2 DB 10 ;List Vector 1 LST: aracter buffer. END: ; .DEPHASE END  ;Print the character. OLDLS EQՠ $- ;CONFIGI put olLST addres ; LAST: DEFB 0 ;Last ch ;TEST STATUS LD A,00 ;0 IN A-REG = NOT READY RET NZ LD A,0FFH ;FF IN A-REG = READY RET ; GRAFIK: LD HL,CODE65+1000H ;LD HL WITH ADRESS OF F3DEH ; PATCH: DEFB 01 DEFW ORIGIN ;DESTINATION OF PROGRAM DEFW ENDE-START ;LENGTH OF PROGRAMM DEFB 01 ;PATCH TYPE DEFB 10 ;VECTOR TO BE PATCHED DEFW START ;ADRESS PATCHED INT ;ENTRY POINT INC HL LD (HL),E INC HL LD (HL),D USED: LD A,C AND 07FH ;MASK BIT 7 CP 11H ;CTRL-Q ? JR Z,GRAFIK ;YES, GO TO GRAFIK OUTPUT: CALL STATU LD HL,(BOOT+1) ;GET ADRESS OF FIRST ;BIOS ENTRY POINT (WARM ;BOOT) LD DE,2AH ;OFFSET TO LIST STATUS ADD HL,DE ;CALCULATE ADRESS OF ;LIST STAO ;VECTOR ; ; .PHASE ORIGIN ; START: LD A,(TEST) ;TEST IF FIRST TIME ;USING CP 00 JR NZ,USED LD A,01H LD (TEST),A LD (0F779H),A | :G >2G2y**>w1#s#ry(1 y2:>>!H"*wHHHHHy$!yKyLe :G >2G2y**>w1#s#ry(1 y2:>>!H"*wHHHHHy$!yKyS ;TEST PRINTER STATUS JR NZ,OUTPUT ;NOT YET READY, GO BACK ;TO OUTPUT LD A,C LD (0E090H),A ;OUTPUT CHAR RET ; STATUS: LD A,(0E1C1H) ;GET PRINTER STATUS BIT BIT 7,A; MX-82 Anpassung an CP/M System ;Fernand Rippinger M140 ;user 5/82 S.25 ff. 21.5.82 ; ; .Z80 ASEG ORG 100H ; ORIGIN EQU 0F200H ; BOOT EQU 00000H XREG EQU 0F046H SUB65 EQU 0F3D0H Z80SW EQU 0TUS LD A,0C3H ;LOAD A WITH CODE FOR ;JUMP INSTRUCTION LD (HL),A ;PUT IT IN LISTST BIOS ;ENTRY POINT LD DE,STATUS ;PUT STATUS ADRESS IN ;6502 SUBR LD (SUB65),HL ;PASS IT TO SUBR.ADRESS ;STORAGE AREA LD HL,(Z80SW) ;GET ADRESS OF Z80 ;SWITCH LD (HL),A ;SWITCH TO 6502 RET ;RESUMESVERSION DEZEMBER 1983 M. WILHELMS M 1184 Z͜ZV!s>Z͈K ------------- Disketten Zugriff wird in 2.Version ge{ndertZ͜ZV!s>ZV!s>ZC Dieses Programm l|scht, erg{nzt oder {ndert einzelne Zeichen einesZ͜ZV!s>Z@C Te - Datenbankfile (dbase) .CMD - Dbasekommandodatei .NDX - Indexdateien (dbase) .FMT - Dbase Ein- und Ausgabeformate .DCT - Spellstarw|rterbuch  END  165,33,141,121,6,169 DEFB 75,141,121,4,141,255 DEFB 207,76,101,193 ; ENDE: .DEPHASE <:=&os*<"<*<#"<:<&7:=&o!s>ZZ[\*.OVR - Overlay (1.Version) .OVL - Overlay (2.Version) .PRN - Liste mit Druckersteuerzeichen .TXT - Textdatei ohne Steuerzeichen .DOC - Programmbeschreibung HERE AFTER ;TERMINATION ; ; ; TEST: DEFB 00 ;INITIALISATION BYTE ; CODE65: ;6502 SUBROUTINE DEFB 72,138,72,152,72,165 DEFB 0,72,165,1,72,162 DEFB 1,169,15,141,24.pl 72 .he CP/M Namenskonventionen .op .BAS - BASIC Source .FOR - FORTRAN Source .PAS - Pascal Source .COB - COBOL Source .PLI - PL/1 Source .ALG - ALGOL Source ZV!s>Z)K TEXT-FORMATTER 1. .SUB - Kommandodateien .CRF - Crossreference Eingabedatei von Compilern .SYM - Symboltabelle von einigen Compilern .BAK - Backupdatei (einiger Editoren) .$$$ - Workdateien .DBF9,4 DEFB 169,151,141,121,5,169 DEFB 0,141,249,5,141,249 DEFB 6,165,36,141,249,7 DEFB 165,33,141,121,6,169 DEFB 75,141,121,4,141,255 DEFB 207,76,101,193 ; ENDE: .DEPHASE p.vNkÈú ͢T}2=ͨT!=^#V:=&os!!vM:<&u:=&o!s>ZZ[\͢T}2=ͨT:=&o:<&o}*<*<+"=#S"=*=#"=*=+"=|!=^#V!<*=^s!!vMð!}2=!".C - C Source .WS - Word-Star Eingabedatei .IND - P-Code des CBASIC .ASC - P-Code des ALGOL .REL - rel. Object-Code .HEX - abs. Object-Code hexadezimal .COM -name>.ASM - Assembler Source (8080 oder Z80) .SRC - Assembler Source .MAC - Macro 80 Source (Z80, 8080, 6502) .Z80 - Z80 Assembler Source .LSP - LISP Source .ADA - ADA Source ZV!s>Zu Anwendungsbeispiele : Z͜ZV!s>ZV!s>Z4 -(DOS)-TEXTE k|nnen von WORDSTAR verarbeitet werdenZ͜ZV!s>Z4 Form Feed wird durch .PA <}2Z/$ Bezeichnung der Original - Datei :Z͜Z!!=Z!WV!!!kG!! B!}2Zͬ( ====> FEHLERHAFTE DATEI-BEZEICHNUNG ! Z͜ZV!}2< !s>Z$ Name der ver{nderten Version :Z͜Z!!=Z!bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb:bq!!!ZG - 4 - Absatz nach LeerzeileZ͜ZV!s>Z͏ 4 5 - Makrozeile bis Absatz bildenZ͜ZV!s>Z 4 Z͜ZV!s>ZV!s>Z CR-LF> ersetzt Z͜ZV!s>ZM* wird durch ersetzt Z͜ZV!s>Z͘7 Absatz-Erkennung mit hartem und weichem Z͜ZV!s>ZV!s>Z2 - 8 Bit ASCII-Text in 7 Bit ASCII-Text ver{ndern Z͜ZV!s>Z.2 =!͖Y8:<&o:<&o}/o}5! *=#"=5R:<&R!*=#"=R_:&o:<&o:<&o}/o}Ҍ:&o![}2:&o!ͯT͛U:<&o}J:&o![͖Y!A:&o!]͖Y!U:&o!\͖Y!O:&o!{:<&:<&o}/0:&o!}2<:<&o:<&o}_!}2Z~ 4 VORHANDENE DATEI KANN NICHT ]BERSCHRIEBEN WERDEN ! Z͜ZV!}2< !s>ZV!s>Z  Mit Bildschirmecho ? (J/N) Z͜Z! =!=ZͿV: =&o!NU!nUU͛U !}2< !D!!!Zf9 ===> PROGRAMM KONNTE NICHT BEENDET WERDEN , DISK VOLL ? Z͜ZV*=%:<&o}/Ҍ(+!s>ZV!s>ZI---------------------- TEXT FORMATTER BEENDET ---------------------------Z͜ZV!s>ZV͟TZ͜Z!!=ZͿV:&o!1!5OU! UU͛U !s>ZV!}2ZV!s>Z͍A Idee nach User Magazin 7/83 S.21 . Freigegeben f}r Mitglieder .Z͜ZV!s>ZL ---------------------------------------------------------------------------Z͜ZV!s>ZV͖Y!a:&o!}͖Y'!u:&o!|͖Y@!o!eÃ:&o! !~OU͛Up:&oÃ:<&҃:&o!}2Z{ ? Umlaute werden aufgeloest. z.B. ] in UeZ͜ZV!s>ZV!s>Z; % WORDSTAR TEXT Z͜ZV!s>ZV!s>Z * 3 - Mit weichem }2ZV!s>ZV!s>Z<  BITTE AUSW[HLEN : Z͜ZV!s>ZV!s>ZV!s>Z͌ ( ASCII 7 BIT TEXT Z͜ZV!s>ZV!s>Z / 1 - CR durch CR-LF ersetzenZ͜ZV!s>Z( ; 2 #r/D*D͞MDD/D!S!*D"Ys#r!S^#V!YD!S!s#r*D<!s*D;!s*D4*Ds#r*D!YD*D6!s#r*D@~D!S^#V!S^#V4^#VMLD*OD*D<!s*D;!sDF͢T"U B͢T"D"DͨT%Y*D8^!͖YB*D*D!DD*D!͖YB!s>ZV!s>Z͆BUnable to automatically close: Z͜Z*DZ͜ZͣB in RESETZ͜ZV!s>ZV!s>ZBProgram abortedZ͜ZV͟T*D! !!K\*D8!%Y*B^!͖YҲ@*B+@@:PASTMP00.$$$!?Z!:?!*B! ! \!:?!!:?!^#s!:?!^!9Yң@!:?!!0s!:?!!:?!^#s*B*B*BkG*B! !!K\*B!͖Y@*B@!s*B}/o|/g#"BA*B@!L?Ò?͢T"?ͨT!S^#V*?!S^#V4^#V \!S^#V!S^#V4^#VML͢T"?"?"?ͨT*?!S^#V!S^#V4^#V \!S^#V!S^#V4^#VvM?͢T"B"BͨTs*D!͖Y/C*D}/o|/g#"D*D@!s=C*D@!s*D<!s*D;!s*D! !s!S*Ds#r*D?!s*DA!s*D8!s*D9*Ds#r*D4*Ds#r*D=*Ds#r*D^!͖Y*D͡M}/o}D!S!s*}-=^#V#{)==!??6#6#6#6!=?6#6!\##"\!9"\"\>2:?!00";?!=6# xj=!"="=">">>2=2>>2=2>> 2r>!r>"=!5?">!K"6?!0K"8?s*B<!s*B;!s*B8!s!S*Bs#r*B6!s#r*B9*Bs#r*B=*Bs#r*B4*Bs#r*B?!s*B͡M}/ҪA!S!s#rA*B͞MҸAA*B*ByK!S!*B"Ys#r!S^#V!YA!S!s#rG"WG"YGͨT%Y!S*YGs#r*YG8^!͖YOF*YG9*YG6^#Vs#r͜Q*YG?^!Y*YG@^}F*YG4^#V!YE*YG!!s*YG9!s#r!!+"[G#S"cG*[G#"[G*cG+"cG|E͜QE F*YG*YG4^#V!K\*YG9TYT{ozg##*)T!*)T"TzT+TAT!*T!JͨT:>J&o!aͭY:>J&o!zY}ұG:>J&o!}o|g}2>J:>J&o}24J:4J&o͢T"@J"BJ"DJͨT!S!s#r*@J^!Y*@J!^! 3Q*Q!s*Q<!s*Q6!s#r%YËQSQ*Q*QB*Q?^^s*Q?*Q?^#s*Q#"QXP!S^#V6!s#r%YßQAR͢T}2SͨT!S^#V"S*S?^!͖Y R!S!*SB"Ys#r!S!*S"Ys#r*Sozg \*+K!*+K^*'K{ozgs3K͢T}2tKͨT!S^#V!:tK&os!S^#V!S^#V4^#VvM|K͢T"K"KͨT%Y!S!*K"Ys#r!S!s#rýK!S^#V8^!Y L!S^#V!S^#V4^#VML!S^#V!!! \!PJ*DJ! ! \*DJ8!s`J͢T"J"JͨT*J!}/o|/g#͖YҖJ!=<^}2JåJ*J<^}2J:J&oûJ͢T"'K")K"+KͨT*+K*)K*'K*+K*)K*+K^*)K*'K!{ozg{T"JV"LV!9T*LV| U$U*JV:LV_!9:LV_!GU~Gw @"JV"RV"PV!9T*PV| U"LV*RV| U} UʔU$U*LV#"LV*RV{zU$U*JV"JV!9DM! 9^#V"LV|U}_F:LV_!GU~U!"9*JVU"JV!9! 9 w#U! {+" " 1ͮ!* ^!"; * ʹ@:PASTMP00.$$$!"!l!* ! !#!l!!l!^#s!l!^!9R"on)ͨ"%#X!͢"X!͢". Eingabefile: ͨ"%#!+!͢"!͙e!͢"a Ausgabefile: ͨ"%#!!͢"!͙e!͢"ͨ!W)ordStar oder nur CP/M Version: ͨ"%#!}2@!<!͢"He:<&o!W"!}2@!U!!+!!!!*}_^#V#{[N!q6#6#6#6!o6#6! $##" $!9"$"$>2l!00"m!6# xœ!"""">22>2"2> 2!"!g"!C"h!"jZ\x'\~# x\5\xI\ + +~+ x?\{q#{R\l\Y̓\}-- ̓\-w\*8?9*JV"JV!9! 9 /w#V! 9*JV"JV!9! 9 w#8V! 9*JV"V^#V#"V^#V#"V"V*V*VYڨV*V*V*VYڨV*V*V{_zW*V^#V*V#)*V^#V"V͐Zq*V b\ b\*S;~V͐ZV6*S8~͐Z!P!A! ! -:=&o^:=&o:=&o!͢"ͨ"#^ 0Ü!!!>} !U!!>} *D(!xp!""!!͓ !U!͓ p!"Ҝ!͢"cEingabedatei nicht vorhanden!ͨ"%#X!͢"͐Programm wird abgebrochenͨ"%#X!U!}/a!U=^#V^}2=!U!:=&oQ:=&o! !͢"X^:@&#!.Y͢T"YͨT! *Y"Y"Y(YRY͢T"lY"nYͨT*nYM*lYo&"pY*pY"bY*bY!!"Y"rY~#ʓYYYYʪYYZ}£Y|Y!`iZzY}|YãYYãYZzY{zYãYZ}Y|ʣY!`iZðYZÀG+}2B1!=^#V:B&os!!!͢"X!͢"w Transfer-Utilityͨ"%#X!͢"X!͢"-Programm zum Umsetzen von Files ohne Linefeedͨ"%#X!͢"- in CP/M-Files (mit WordStar-Opti*S~ ͐Zɯ2X"X}2W2W*S8~W!WX:WMW:WMW*S<6!W!?Z*S8~yW ![\*S;6> *X!W>2W*S; ~MW!W*6?:WʳWW#:W<2W*S; ~ҕWMWy Wq:X<2X6 :W<2W:X<2XW#W!W#52 \y [F[x/Gy/O>=[D[)8[))[, 2[[33[)?[, [ Q[͟T DIV 0 $ɯ2 \m[[[x[{[Z}ʓ[{/oz/g#Z{/_z/W![ɯO>Gz[­[[Z{/_z/W}o|g#ɯo>gZo>gF[>2 \!.\[.\[ZY&}o&}o"S"6?"8?!K"6?!0K"8?ɯ2Z"Z"ZYPz}ZfZfZ>2Z}2ZqZ!Z*6?"Z"Z"Z#+n&*Z*ZZ*Z|Z}o|gZ#l\{Nb\#zZ: \!, !l!!0s!l!!l!^#s* * * * ! !!;#* !"Ҁ * @!s* }/o|/g#" Î * @!s* <!s* ;!s* 8!s!* s#r* 6!s#r* 9* s#r* =* s#r* 4! "!! ͫ!"N*^!"N!! ͫ!"!!ͫ!"Ö!^#V8^!"Җ*!!ͫ!s*^!g"n!^#VA~һ!^#V<!s!!^#V9^#V+"#͆"*#"*+"|!^#V"*"**^~"}G!*+**^s*#"*#"*!!;#*!:&o!@{ozgs!*!!#!*! !#*8!s+":"<1*:!}/r*v ?!s*v A!s*v 8!s*v 9*t s#r*v 4*t s#r*v =*v s#r*v ^!"*v *}/o}Ҏ !~!s#rø *v 'ҟ k ø !~!*v ͫ!s#r!~^#V!g"O !~!s#r*v <!s*v ;!s*v 4*t s+" ""1!*"s#r%-+"1!}2*JCON:ͼi*8!s!}2*uLST:ͼҔ*8!s!}2*͠KBD:ͼ*ͯTRM:ͼ}*8!s!}2:&o+"1!}2!! !~O*^1:&o!a6":&o!z~"}::&o!}o|g}2:&o}2:&o+"""1!~!s#r*^!g"*!^! "}ҥ*!!Aj**!"*^!g"Ҽ!@}2! #!͆#! #!͆#** s#r* ?!s* *}/3 !~!s#rà * 'A à * * !~!* ͫ!s#r!~^#V!g"҃ !~!s#rÖ +"t "v 1ͮ!*v 8^!"e *v *t !x } *x !"e !͢"X!͢" Unable to automa+"<">1ͮ!!~!*>ͫ!s#r!~!s#rF!^#V8^!R"Ҕ!^#V!^#V4^#V!^#V!^}2!^#V!^}2!^#V!^#V4^#V:&o+""1*;!s!*s#o|/g#"!<^}26.*<<^}26:6&oD+"""1******^**!{ozg{ozg#*!*^*{ozgsü+}21!^#V!:&os!^#V!^#V4^#V#r*t !g"L *v 6!s#r*v @~I !^#V!^#V4^#VL ͳk *v <!s*v ;!sà +"""1ͮ!!*s#r*8^!"*9*6^#Vs#r%*?^!g"*@^}ҙ*4!R"*^!͇"}!x!*^+"#͆"*#"*+"|q**^!8$}/nx;!}2:&oö!^#V=!!#!^#V8^!"T*!!ͫ!s*^!^!:"0!"*!^}26!"*"!"**^!.͎!:͎o$}/o**͇"}o**^~"}!*+**^s*#"*#"F**^!."**^~"}G*#"!"*!tically close: ͨ"%#*v ͨ"%#, in RESETͨ"%#X!͢"X!͢"Y Program abortedͨ"%#X(*v ! !!;#*v 8!s*t !"Ҹ *t }/o|/g#"t *v @!s *v @!s*v <!s*v ;!s*v ! !s!*v s#r*<~*;!sͳ*@~*<*!^!"*<^}os*!^! "}2:&o*<^}ҡ*;!s:&o*8^!"}ͳ*<^*;^}*!! ss#r%~*8^!"*8^!"}a!~!*ͫ!s#r*ps#rm*!s#r*8!sͮ!+"""1*8^!R"Ҫ**!~!s#r*!s#r*8!sL+}2^#V!͇"i*!!s*9!s#r!!+"#͆"*#"*+"|f%MÖ**4^#V!;#*9!s#r%*?^!"*!!s*9!s#r% *8^!R" *9*6^#V?^!"*?!s*A^}/!*Bͫ!"!~!*ͫ!s#r!~^#V!g"*A!s*A~Ҽ*!s*<!s*6!s#rͮ!**B*?^^s*?*?^#s*#"! Writeln; Writeln('Programm zum Umsetzen von Files ohne Linefeed'); Writeln(' in CP/M-Files (mit WordStar-Option)'); Writeln; Write('Eingabefile: '); Readln(Inname); Write('Ausgabefile: '); Readln(Outname); "d"O"ʄ"3"{"͍"},"|t"!`i͍"zH"}|t","t","͍"zH"{zt","͍"}t"|,"!`i͍"9"͍"U"&}o&}o""h"j!C"h!"jɯ2#"#"#YPz#"">2#} *!! >2 *; ~!' *h: < M #: <2 *; ~ y \ q:!<2!6 : <2 :!<2!x #\ ! #5^#V6!s#rͮ!(+}2Y1!^#V"e*e?^!"ғ!~!*eBͫ!s#r!~!*eͫ!s#r*e?!s*eB*e?^:Y&os*e?*e?^#s!~!s#r!^#V=!]!#!^#V8^!Ë#xʚ#~# x#è#xʼ# + +~+ x²#{q#{##Y#}-- #-#*j=w*#6#s>2#"!!#*h"H#"J#"L##+n&*L#*J#N#*H#|g#}o|gg###{N##zn#Ë#xʚ#~# x#è#xʼ# + +~+ x²#{q#{##Y#}-- #-#*jN2%GAy #:%"6*6"!9 ͆#*"! 9^#V!9p"!9^#V!9 ͆#!"9* 6#†""!9̈́*|©ͭ*:_!9:_!~Gw @"""!9̈́*|©"*|©eichen,Ein: Char; Result: Integer; WS: boolean; Procedure Writefile(Zeichen: Char); Begin Outfile^ := Zeichen; Put(Outfile) End; Procedure Einlesen; Begin Writeln; Writeln(' Transfer-Utility'); Ê!+"!1! *!ͫ!"!ñ!!+"!"!1*!M*!o&"!*!"!*!!!ͫ!"!~#R"!^#V"g!*g9^#V+"c#͆"i*c#"c*i+"i|*]^}2_:_&o! "fV*g8^!"Ҳ!:_&oͫ!"a:_&o! "ү!! ͫ!"a!:_&oͫ!"a*g8^!":_&o! "!! ͫ!"a*]#"Program Transfer; (********************************************************) (* Das Programm Transfer ermoeglicht das Umsetzen von *) (* APPLE DOS Textfiles nach CP/M Files *) (* Das Programm ist auf MTPLUS Pascal geschrieben "1*F*@*DR"1*F*D{_zW*B^#V*@#)*B^#V"V#q*V # #*;~x#e6*8~#*~ #ɯ2!"!}2 2 *8~ ! ͇!: : *<6! !"*8~  !#*;}کͭ*#"*{zͭ*"!9DM! 9^#V"|i}_F:_!~i!"9*_"!9! 9 w#~! 9*"!9! 9 /w#Ÿ! 9*"!9! 9 w#! 9*"F^#V#"D^#V#"B"@*F*D Write('W)ordStar oder nur CP/M Version: '); WS := False; Readln(Ein); If Ein = 'W' then WS := True; Assign(Infile,Inname); Assign(Outfile,Outname) End; Procedure Kopieren; Begin Rewrite(Outfile); If IOReHR=0 DO 10 ISX=1,7 ISN=(X'E0E0'+X'0100'*ISX) DO 20 IJ=0,2 I2(IJ+1)=PEEK(ISN+IJ) 20 CONTINUE IF(I1(1).EQ.I2(1) .AND. I1(2).EQ.I2(2) .AND. I1(3).EQ.I2(3)) 1 INUHR=ISX 10 CONTINUE END  Writefile('.'); Writefile('P'); Writefile('A'); Writefile(CHR(CR)); Writefile(CHR(LF)) End else Writefile(Zeichen); Ǖ  &2xQR渀 80" EX\.\ȋ @aHGDXtUb2af|a*`1 *>'T|Ub*{JI9s֍` |e@X4*`3@W1hXUb"{JI9s֍` |CBb0(apՀ |Jsult=255 then reset(Outfile); Reset(Infile); If IOResult=255 then begin Writeln('Eingabedatei nicht vorhanden!'); Writeln('Programm wird abgebrochen'); Exit End; While not EOF(Infile) do begin Zeicheelse begin Writefile(Zeichen); Write(Zeichen) End End End; Close(Outfile,Result); Close(Infile,Result) End; Begin Einlesen; Kopieren End.  FUNCTION INUHR(I) C DIENT ZUM BESTIMMEN DER SLOTNR., IN DEM UHR STECKT C MUSS EINMAL BEI UHRBENUTZUNG AUFGERUFEN WERDEN C INUHR=0 => KEINE UHR, SONST INUHR=SLOTNR. DIMENSION I1(3),I2(3) DATA I1(1),I1(2),I1(3)/85,72,82/ C STRING 'UHR' NACH I1 INUn := Infile^; Get(Infile); Case ORD(Zeichen) of CR: begin Writefile(Zeichen); Writefile(CHR(LF)); Writeln End; FF: If WS then begin RSRTT(y=I1%E@%`P40" EX\.\ȋ @aHGDXtUb2af|a*`1 *>'T|Ub*{JI9s֍` |e@X4*`3@W1hXUb"{JI9s֍` |CBb0(apՀ |J A.U.G.E.- Uhr unter CP/M -------------------------------------- H. M. Ihme M 3055 Di dre Programmteile i Fortra unte CP/ geschrieben solle zeigen wi ma di A.U.G.E.-Uh bedient Di Functio UHRIΠ dR => JAHR 0..99 C ISTD => STUNDE 0..23 C IMIN => MINUTE 0..59 C WENN ISLOT=0, KEINE UHR VORHANDEN! IF (ISLOT.EQ.0) RETURN IO=(X'E080'+16*ISLOT) ICRA=IO+1 ICRB=IO+3 IREGA=IO IREGB=IO+2 IN=0 CALL POKE(ICRB,IN) CALL POKE(ICRA,IN)ORMAT('+' is au unerfindliche Gr}nde n|tig wei da IPEE vo For tra sons falsch Wert liefert We will kan e weglasse un wir sei blaue Wunde erleben jedenfall au de Basis Di Programm werde mi F8 =Progra10*MOD(IPEEK(IREGA),16) GO TO 10 END EK(IREGA),16) GO TO 10 90 IMON=IMON+10*MOD(IPEEK(IREGA),2) GO TO 10 91 IJAR=MOD(IPEEK(IREGA),16) GO TO 10 92 IJAR=IJAR+ien zu Bestimmun de Slotnumme un brauch nu einma i Hauptprogram verwende z werden Si liefer al Intege di Slotnum mer wen dies = ist dan gib e kein Uhr. Di Subroutin UHRLEӠ wir jedesma aufgerufen wen 9,90,91,92),IZ 10 CONTINUE CALL POKE(IREGB,IN) RETURN 82 IMIN=MOD(IPEEK(IREGA),16) GO TO 10 83 IMIN=IMIN+10*MOD(IPEEK(IREGA),16) GO TO 10 84 ISTD=MOD(IPEEK(IREGA),16) GO TO 10 85 ISTD=ISTD+10*MOD(IPEEK(IREGA),4) GO TO 10 86 IWTG=MOD(IPEEK CALL POKE(IREGA,IN) IB=255 CALL POKE(IREGB,IB) IB=4 CALL POKE(ICRA,IB) CALL POKE(ICRB,IB) DO 10 IB=82,92 IZ=IB-81 CALL POKE(IREGB,IB) C DUMMY-LESEN FUER FEHLERHAFTES IPEEK WRITE(3,200) 200 FORMAT('+') GOTO (82,83,84,85,86,87,88,8mmnam compilier un mi L8 UHRTST,UHRLES,UHRIN,UHRTST/N/ zu sammengelinkt Si laufe auc unte CP/ 3.0. Demn{chs folg noc ei Beispiel wi ma di A.U.G.E.-Uh i Z80-Assembler- Programm einbindet.  SUBROUTINE UHRLES(ISLOT,IWTG,ITAG,IMON,IJAR,ISTD,IMIN) C ISLOT MUSS VORHER MIT FUNCTION INUHR BESTIMMT WERDEN C RUECKGABE: C IWTG => WOCHENTAG 0..6 C REIHENFOLGE: SONNT.,MONT.,DIENST... C ITAG => TAG 1..31 C IMON => MONAT 1..12 C IJAma Datu un aktuel l Uhrzei habe will Di Slotnumme mu mi }bergebe werden. Da Hauptprogram UHRTSԠ zeigt wi ma di au UHRLE erhaltene Date verwendet dami ma ein vern}nftig Anzeig bekommt WRITE(3,2000 mi F(IREGA),16) GO TO 10 87 ITAG=MOD(IPEEK(IREGA),16) GO TO 10 88 ITAG=ITAG+10*MOD(IPEEK(IREGA),4) GO TO 10 89 IMON=MOD(IPEEK(IREGA),16) GO TO 10 90 IMON=IMON+10*MOD(IPEEK(IREGA),2) GO TO 10 91 IJAR=MOD(IPEEK(IREGA),16) GO TO 10 92 IJAR=IJAR+兕RTeT$U8y=I1%E@b,>p(4`o>֮cѬOxݔ2f$~HR@8", #a Vb,(*,,*1 @f4!@ @,ͭ@E8pCBGp6p 3laVf٠!4Lm% 2Y !T w:W /7 *s "q !"s ͪ!W 4' *q "s ͪ7 :u  ͩ:W > !V /<> Fw!_ ~w2o ! ~w<2p 2 2_ 2V 2p >2o  Ê *m *c DM*  +|Ÿ " "m Ï*m *c F*m #"m * +" |# Ï*> DM!o 5 *< +}| *: ~2 ~#fo*s#r!1"$!$͘*s#r!1"$!$͘! *~#fo*s#r!1"$!$͘*s#r!1"$!$͘! *~#fo*s#r2%*%3/UHR2,2%2%2%2%2%2"!"!"*e."!"*)"(Fq(6: 6:X$#3.V 9L;('TTTMODd4 LUcr 1$W2߀2DH($CG2DәHt*)&"#90`CE@ 3o B 3n U312`pûfА!%0%fP'Xg&p6z !w  w#  : C *> DM*< " *: *3 b `i"> "3 *< DM*2*: f >2*< " *: f w#=e *7 +"7 |b < >G!@ 60#͡!W 4:~ 0w͟ "s ~: wT('*Donnerstag') 1105 FORMAT('('+')ta"">!*~#fo}2M*~#fo))))"#"*###"*"*##"!"!8!8!8!"!8!"!8!8!R"*"!8!͕*Ͱ 7c+@V'p@Xxa+>@0Ͷ` @ 3@%Jbswxc! "Ġ!Ġ  *uhFra ` 3hh3i Ub3Ls8XP@DX"q(6 6X,#3.V 9L;1`W! ~/woG}_}W}O||DM!>)), =$^#Vo`'s~#fo"*wn&!o!o!o!o!"u ~#fo"] "3 *] "7 : ʚ ÀlÀ>2 2 <2a >2 2 <>2 2 2a ~#fo" ! ": ~#+!"c !9##"M: go"e**"!1og*s#r*#>>**{ozg}2**{ozg}2**{ozg}!!2ʇ*"*#>>*'z|||)+~#foo&)#zzB|G||ͪZO_y  (1X,'Keine Uhr vorhanden!')(1X,'Heute ist ')('*Sonntag')('*Montag')('*Dienstag')('*Mittwoch')('*Donnerstag')('*Freitag')('*Sonnabend')('*, der ',I2,'. ',I2,'. 19')(1X,'Es ist ',I2,':')('* Uhr')('*0')('*',I1)('*',I2) !+ w!@ | } !W 4#"Z |/W}/_*s "s >2U :u  ͩ:V G: K x2T : Z 2Y : { 0!T 5ʌ \>!8!1"$!$͘* s#r!1"$!$͘! * ~#fo* s#r!1"$!$͘* s#r!1"$!$͘! * ~#fo* s#r!1"$!$͘*s#r!1"$!$͘*s#r!1"$!$͘! *m]bPGPmiuFra 3lHlx3l U@b3Lu8Xi@DX#XD8l@]bP\]b ~Xg&p6(FՀq(6怺X#90`CE@ 3o B 3n U312`pûfА!%0%fP'Xg&p6 "g "i 8 !e >*e ~# go"e *g ~#. go"g *i ~#fo"i 2 2 2 2 2p 2U go"m "7 *c |p *m " (7Z2> 2? 2< 2= <2 : >2͕ š > zwÍ :W /< ʳ z=¬ 2W :u ~:v / ~z= ͕:W  = 2W :u  >z= :w G}2!͕*}2J!!>O͕*}?2x!!>O͕!͕I!͕MU!͕M`!͕Mm!͕Mz!͕M!͕M!͕MMA"}!͕!&8!͕*#"Ͱ! !>O͕* }2ʉ!͕* }2ʶ! !>O͕* }?2! !>O͕!!>O͕*`i"> > >  !o 4 :b Iu :u =< ==< =< C :V G Z!{ X Z] #M : ~:u o ~>29 :u ҆ Z!V :X › :` › :\ w~/ :g*h> !g~4*K}|"h"K͙:< *: =_~*~+1͔̓~0̔#{~#͙*< *: >CJS\E! /T>Fw> #w#w#w>2u 2v > ,> ,>O}2 O!: TT=_^#V ^#VXh*g |tZ*e |tZ*M! w w#ƒ!w  Á: !9 w: >2!T 5»:q *!s 50*Z F#"Z !_ ~! !T 2q 2T / : -!Y 5. 0#w> #w#>wr*K|.}1""Kͼy Oa<ʠͰyw<ʤͰ@uͰs6ͼ!G~{2 u:’0*: *< &w#ý7*: >2< ? 2:< :< *m "s !"o Z}2_ 2\ y >: .H*w }2\ *m +"m PZXH(AILEFGDY S  S / = , :v G*3 w :u “{ w#“"3 * |ʏP!~ ~Ax29 w:u ====+>2 >w:z .>2 7ԁ!9 ~w"} ~! Á:u =$==d=1Z:w og"w d*y }d#}dgo"{ 2} >2~ ͩ:W :W 2T 2Y !x ~/W+~/_>2 2W ! ͪ}0o!W 4{|!@ :W G2T 2Y 2s s# !@ "Z V+^x >00:02 >ɯ2V 2X 2` ->2 +~22 :2 ! _-:/ *0 2_~#fo:2 <22 W:/ En>:=!6=>|GDG>gG>}GoG:!(x:~>!FORTDAT-kTuZZZZ!G: _~: _!Z^#V!Q: _~!n: _^#V!!*i !Hw#22g j ~#fo~#foXs#r#q#pjbMj" `i" * * DM^#V#N#F#xyy: : 7^{^ {m ’^^^!W 4|/G}/O!> 7>{_zW}o|g=»|g}o`iN#F#q#p#=2/ " " `i"0 ͪZ !q 5*< *> {z>#"> *: +p!o 5BZ:p : ʏP! ~4`Z *s " * " Ï!"o *m *c : ʦ~'ʗ w#Ä#~'ʊ"m Ï~'ʽG*m #"m #æ*m #"m #~'ʬÏ: =! 4!"m ]2 * +" |ʏ* "m ! 4 Z>s*: ~Ͳ#=> ͲͰw:72< 2s̓hq*< &*: w"< h}<Z:?ɷͰʁ6̞5!Z/Ɓ_#>Wͼ2>w74!Z_#>Wɇ>Ͳ6o&6#<+ͼ2Ͱ&! w ́͡!w  ́!W 4/GK!w ~#429 !w w#I!W 4>2* *> "> *:!DMyxҏZ *< "> Ï * +" |€Ï:v G:_ 2W !9 >w!W 5K{K !w ~/G#~/ +"> !o 4͖: .%>2X 2W ͖: ! E5D:+I-N>29 y2` *> +"> !o 4ͶOx tZ> G_:9 xʉ/<2W G!V ~w! ͼ:~ –{͎͎ ͎: ! w#w» !V :W wÖ :_ <2o  FT >2w  ~!! p# w#: ҨͰ@zF^#VͰw^ͰͰws#r#6:{zG{O! ~ʱ! 6*Ͱ ʘ! p<¯a! q*!9}|ڬ!Z: O s#r!r+s!$"6#: G 1wx9 "m 2 G0+ +*w T])))_*w |6#x:9 Go>g"w |x!~ ~w+ QK!~ ~w+d! aox !w w#ƒ6 " ¬,ʏ/)'oPº:w 2 Ï|Z!" 2b G!L# y xZyO!j: !V ^#V" yÏ!9 6: ,:a ,*> z%*: 6 "< T:9 2> 2? : D*:!"< !"> Ï! ~]wl*7 +"7 |l: * |ʏ+" :\ 2V 2 2W 29 go"w "y "{ "} :_ !o w: ʰ4* :v G:u *3 w { ~#"3 ì:a 2*:!"< ɯ29 go"w *m *c ~# -  _+WTSSS)UTSSS>2 _2= *:  8w# {2< 8Zɯ>2 :< *: =_~*ʉͮ~+ʉ1€Éͩ~0̩#{NͰ#Ì>2 *< *: Ì ð : y¼~_~: : > ü>~!o~:R,ISTD,IMIN) C DATUM UND UHRZEIT HOLEN WRITE(3,1010) IWTG=IWTG+1 GOTO (100,101,102,103,104,105,106),IWTG 20 WRITE(3,1020),ITAG,IMON IF (IJAR.LT.10) WRITE(3,1050) IF (IJAR.LT.10) WRITE(3,1060)IJAR IF (IJAR.GE.10) WRITE(3,1070)IJAR WRITE(3,10~  #~" c!d^#6 #> wE?E>G*i gX2K6:f*!F!$$">222Y>2e*"]]>E?!d>22Y>E?*c|͖T:%2F:*"]]ÖT:bJFͩSFVâ%:RcF*g"zA>G*:eFFͩ>fo-%:]lc_{_~66. ** at address ** Z!=ͪ~"~l>#O! ~#~!?ͪ:<2җҧ!BͪʹͧM!O~#ê|}> Ɛ':'IDF0MPIRFWITEXDOMLDZLGSQIBTLOBDEISBEINOVCNG104 WRITE(3,1104) GOTO 20 105 WRITE(3,1105) GOTO 20 106 WRITE(3,1106) GOTO 20 1000 FORMAT(1X,'Keine Uhr vorhanden!') 1010 FORMAT(1X,'Heute ist ') 1100 FORMAT('*Sonntag') 1101 FORMAT('*Montag') 1102 FORMAT('*Dienstag') 1103 FORMAT('*Mittwoch')30)ISTD IF (IMIN.LT.10) WRITE(3,1050) IF (IMIN.LT.10) WRITE(3,1060)IMIN IF (IMIN.GE.10) WRITE(3,1070)IMIN WRITE(3,1040) GOTO 500 100 WRITE(3,1100) GOTO 20 101 WRITE(3,1101) GOTO 20 102 WRITE(3,1102) GOTO 20 103 WRITE(3,1103) GOTO 20 }>2]>d^*"]!e6]:!m"eͧ*"*]"*e"ÖT:bJFͩSFVâ%:RcF*g"zA>G*:eFFͩE?!d>22Y>E?*c|͖T:%2F:*"]]ÖT:bJFͩSFVâ%:RcF*g"zA>G*:eFFͩ PROGRAM UHRTST C VERWENDET FUNCTION INUHR, SUBROUTINE UHRLES C INUHR SUCHT SLOT DER UHR, NUR EINMAL ZUM INITIALISIEREN ISLOT=INUHR(0) IF (ISLOT) GO TO 10 C UHR IST DA WRITE(3,1000) C KEINE UHR GO TO 500 10 CALL UHRLES(ISLOT,IWTG,ITAG,IMON,IJALGSSNA2IODTBIRCEFFNDFUNOM??(:e22!J"K*+ 2!G!!""b!U*K> > P ^ex1E<*ͱd:(G:ux E:l>9:u'E2>2e]6*ͱd2E*++r+s^e*:KʂE=TE@ÂE=E={C*I͖T:erE>e_* 1104 FORMAT('*Donnerstag') 1105 FORMAT('*Freitag') 1106 FORMAT('*Sonnabend') 1020 FORMAT('*, der ',I2,'. ',I2,'. 19') 1030 FORMAT(1X,'Es ist ',I2,':') 1040 FORMAT('* Uhr') 1050 FORMAT('*0') 1060 FORMAT('*',I1) 1070 FORMAT('*',I2) 500 END 兕R#U!IQMRFORLIB`!@W1h f LE%ZN.p p K@0X\.@%` 3h6 E! t !6hͧ{?':Z,2eCW|\&0{?':@'~e0o P'qge`2  \(qge`2 \()t0o c-5 it;f8[.w~e8o7#ge`2` ] (#)a32߰tǴ[. E3ya1MA8[.K~e8X 2NB82 82 Z,2eCc<#@5|fm HE @W1hXdn 3mGmͷ ~1ͻ!63oh^sցt -@FĀo63h hU@/gdZ@|e@#j4HB84C&mf`^sցq|e@#v@5QN)˯@&>߰ubX ȧ1t ńN:e`2 ](SAN)˶߰vN* 2߰w[. Bqa$b)˺@&-2߰wHN* #!Lc (fHa1y 8FA)"JrJd(*)L|@`3̣>,92bRT( 3V&@S82 @B84CRG&mPf0PDmsf%@ fؠmaՀ `D`mfX@ fڀmaՀ D@mf۠X@ f`maՀ D mf݀X@ f@maՀ pd[. K9,i7DSA@v7qn2߰q[.5 K9 u:D