, :ͷ:'h': ************************** Z80 Assembler **************************q'5$',:"Z 8 0 A s s e m b l e r".',:"Gert:Programmname ";NA$̀8' ,:"j";B' ,:"Listing (j/n) ";A$L'((A$) )n LF:t' : LF%V' ,:"n";E`' ,:"Drucker (j/n) ";A$jj'((A$) )j 7: , pt'~'NZDK(BP):BPBP'ZNDK(BP)' ZN BPNZ:~'́'ZN' ڑ"END fehlt":^)ف'BPBP,'(DK(BP) :)((BP) ) ڑ"Der ' fehlt in Zeile";ZN:BPNZ:FZFZ:~'8'BPBPH'VP,NZBPd'VP,BP(BP)'VP,(BP)(BP)'ZA$Z$:BPNZ'I :A$(I)"":'PO(Z$,";")Ԃ'PO BE$"":((BE$(Z$,(Z$)PO) (VP,PO(J:Z$(Z$)9((Z$,)" " Z$(Z$,(Z$)):(J((PO(Z$," ")a2(Z$"" JJ:x(p<(PO n(F(A$(J)((Z$,PO)):Z$(Z$,(Z$)PO)P(Z$"" JJ:x(Z(J ڦ<Ѓd(JJ:(߃n(A$(J)(Z$)x(J ڦ<(&*D(:****************************** Ausgabe *******************************Q(FI )}(LF ,:ZN:( :() ڑ" ";:(("000"(MP),);" ";(LP (ڄ(I LP:("0"(PW(I)(PW(I))),);(MPI,PW(I)(PW(I)):I();"####";ZN;=( LB$"" BF$" " );: (o();LB$;);BF$;!);OA$;:BE$"" ڑ-);x(BE$(MPMPLPDS: (MP)"df9f" ڑ:"Speicher voll":: "3ą(LP:DS)LB$"":LA$"":BF$"":OA$"":OP$"":BE$"")~' )JLP   ")PW(J)PW(J):5,)PW()WI:LPLPC6)DF T)Z@)LP PW()PW()oJ)PW()DW:LPLPT)FI:DF:(҆^):************************* Programmende *********************************h)LF ,r)(O,"_"):UP ) |)I UPc)"undefiniertes Label ";UL$(I);" in";UD(I,);" / Adresse &H";("000"(UD(I,)),)q)FZFZ:):"Programm :";NA$Ӈ)"Start : &H";("000"(MS),);" Ende : &H";("000"(MP),))"Laenge : &H";(MPMS);"=";MPMS;"Bytes")"Fehler :";FZ$)LT )>)"Variablentabelle :"M)I LT)(LT$(I)" ",);("0000"(WL(I)),),:): ( ) , : ( )) ,:"n";) ,:"Aufzeichnung (j/n) ";A$*((A$) )j **"bsave";( ");NA$;".mc";( ");",&h";(MS);",&h";(MP): NA$".mc",MS,MP:Gertename !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*:̕:,,,O: ,:!*:************************* Interpretation *******************************&*J0*BF$(A$(J)" ",)&:*PO(T1$,BF$)+UPUP:II:*H+:------------------------------------------- Einbyte-Befehle ohne Operand%R+A$(J)"" ڦ>>\+PW()W2((PO)):f+:------------------------------------------ Zweibyte-Befehle ohne Operandp+A$(J)"" ڦ>z+PW()W3((PO)): +:--------------------------------------------------------- Pseudo Befehle)+JJ:OP$A$(J):OA$OP$P+(PO) +,+,,,,,.,,`,+: +++ EQU ++++LA$"" ڦ?+A$OP$:&4ӎ+WL(LT)WE:#+: +++ ORG +++4+OP$"" ڦ@D+A$OP$:&4[+LP:MPWE:MSMP:+: +++ END ++++^),: +++ DB +++,A$OP$:*5:f,: +++ DW +++x$,A$OP$:l4:Ȑ.,: +++ DM +++8,(OP$,)(") (OP$,)(") ڦBB,ZW$(OP$,,(OP$))1L,LP(ZW$): LP CXV,I LP:PW(I)((ZW$,I,))::`,: +++ DS +++j,A$OP$:l4ɑt,DSWE:LP:~,:----------------------------------------- Befehlsauswertung Sonstige ----,JJ:OP$A$(J)E,OA$OP$:ZW(PO)c,OP$"" BF$"RET " ڦ@l,"3,PI(OP$,"IX"),PI WI :IR$"IX":-,PI(OP$,"IY")Ԓ,PI WI :IR$"IY":-,ZW L1,.,.,/,/,D/,/,/,*0,0,R0,0,0,0,1),ZW n-9,ZW .B,J.-:------------------------------------------------- indizierte Befehle --- -FI˓-(QF) (PIPA) (OP$,PI,)"HL":P--(QI$,)IR$"+" ڋBF$"JP " F- :<(-A$(QI$,(QI$))$2-DI$A$:*54<-DF:DWWEaF-OP$(OP$,PA)"HL"(OP$,(OP$)PZ)P-((OP$,"IX"))((OP$,"IY")) d-”Z-(OP$("HL,"IR$))(BF$"ADD ") OP$"HL,HL" :=Дd-"3:, n-:----------------------------------- arithmetische / logische Befehle ---6x-KF A$O1$:-R-O1$"A" - :A$O2$d-LP:COZWm-3-RF PW() (CO) RR:-PW() (CO)-*5:•-O1$"HL" ڦ=ҕ-A$O2$:3-RF ڦ=-BF$"ADD " CO:LP:.-PW() :LP0-BF$"ADC " CO J:.N-BF$"SBC " CO B :<g.PW(LP)CO (DD):.:---------------------------------------- Rotations- / Schiebebefehle ---ʖ.LP:PW() ז".KF ڦ=,.A$OP$:36.RF ڦ=@.PW()((ZW)) RR:aJ.:-------------------------------------------- Bitmanipulationsbefehle ---tT.LP:PW() ^.A$O2$:3h.RF ڦ=r.BB(O1$)0˗|.(BB) (BB) ((O1$)) ڦ=.PW()(@(ZW))(BB)RR:>.:--------------------------------------------------- relative Sprnge ---].LP:PW() :A$OP$:.f.LP.KF CC:A$OP$:..A$O1$:4.(CF) (CC) ڦ=.CCCC .A$O2$И.PW()CC .(A$,)"$" ڍl4:LPLP:ILT WEMP:.::.'.WEMP((A$,(A$)))?.LPLP:ADMP:ZIWEH/\5W/PW()OS:/:------------------------------------------------------------ Sprnge ---&/ZW:LP֙0/BF$"RET " CO :CO&B100ߙ:/b/D/OP$"(HL)" LP:PW() : N/COX/ZW:LP?b/BF$"RET " ڋOP$"" v/ :/ :Ll/KF /iv/PW() CO  (ZW)y/A$OP$://A$O1$:4/CF ڦ=/PW() CO (CC):A$O2$˚/BF$"RET " ڎ֚/l4:&/:-------------------------------------------------------- Zhlbefehle ---4/ZW:/=/ZWJ/KF ڦ=_/LP:A$OP$:3~/RF PW() (RR) ZW:/30RF ڦ= 0PW() (DD) (ZWI):0:------------------------------------------------------ Stapelbefehle --- 0CO :40 *0CO H40A$OP$:DR$()"AF":3:DR$()"SP"V>0RF ڦ=sH0LP:PW()CO (DD):ÜR0:------------------------------------------------------------ Restart ---Ӝ\0A$OP$:*5ߜf0ZWWOp0ZW(ZW) ZW ڦAz0LP:PW() (ZW):g0:-------------------------------------------------------- I/O Befehle ---{0(KF QF) ڦ=0BF$"IN " ZW :ZW:O2$,O1$0QI$"C" 0ĝ0A$O1$:30(RF) (QI$"C") ڦ= 0LP:PW() :PW()@ (RR) ZW:0LP:A$QI$:*570PW() (ZW):0:----------------------------------------------------- Interrupt Modi ---0OP$"0" OP$"1" OP$"2" ڦA0LP:PW() 0PW() F (((OP$)(OP$"0"))):;1:--------------------------------------------------- Austauschbefehle ---D1LPd1OP$"(SP),HL" PW() :$1OP$"DE,HL" PW() :B1.1OP$"AF,AF'" PW() :81=B1FI ڦ= : L1:-------------------------------------------------------- Ladebefehle ---V1KF ڦ=+`1A$O1$:38j1RF 22At13N~1RF 1^1A$O2$:3k1RF 1x1O1$,O2$1A:21NF ڦ= :1QF ڦ=1ZW$O2$:ZF:1ݠ1OP$"SP,HL" LP:PW() :1QF ZW$O1$:ZF:11A$O2$1LP:CO:2!1A$QI$A2ZW$"HL" LP:CO :2[ 2LP:PW() :CO Kn2COCO (ZF)2PW(LP)CO (DD)(2l4:22ZZRR:A$O2$:3<2RF Z2ѡF2LP:PW()@ (ZZ)RRP2PW() v ڦ= :Z2A:2d2NF ڎn2LP:PW() (RR)-x2A$O2$:*5:}2:------------------------------------------------- 8 bit Lade Spezial ---2NF2O1$"A" NF:2QF 2¢2O2$"I" ZW:2ڢ2O2$"R" ZW:2梾2NF:2CO G:LP:PW() 2PP(A) ZW:3/2QI$"BC" ZW:3H2QI$"DE" ZW:3b2LP:PW() 2 (A)t2A$QI$:l4:3CO:LP:PP(ZW) A3PW(LP)CO (PP):3:**************************** Unterprogramme ****************************G"3:--------------------------------------------------- Operand zerlegen ---Y,3PO(OP$,",")w63PO O1$OP$:KF: T3@3KFJ3O1$(OP$,PO):O2$(OP$,(OP$)PO)ͤT3PA(OP$,"("):PZ(OP$,")")^3PA QF:QI$"":3h3PAPZ ڦ=r3QF |3QI$(OP$,PA,PZPA)&3v3:--------------------------------------------------------- Label Test ---3LC(A$)3LCA LCZ NO:˥3(A$) ڑ"Label zu lang":A$(A$,)ۥ3LA$A$:NO313:------------------------------------------------------ Register Test ---Z3I :RG$(I)A$ RF:RRI: :e3RF:3:------------------------------------------------ Doppelregister Test ---ަ3I :DR$(I)A$ RF:DDI: :3RF:94:----------------------------------------------------- Condition Test ---b4I :CD$(I)A$ CF:CCI: :m4CF:&4:----------------------------------------------------------- Zahltest ---˧04WE(A$)٧:4LC(A$)D4WE LC& (LC9 LC0) ڦBN4WE ڎ'X4(A$,)"&H" ڦA-b4}l4:------------------------------------------------ Auswertung Ausdruck ---v434NO ڍ&4:44I LT:LT$(I)LA$ ڃŨ4ILT 4Ҩ4WEWL(I)䨨4WH(WE)4WOWEWH4LPLP4PW(LP)WO4PW(LP)WH%444LF ڑ"?";O4UL$(UP)A$:UD(UP,)ZNh4UD(UP,)MPLPFIDF5UD(UP,)(BF$"DJNZ" BF$"JR ") 5UPUP5WE 54*5:------------------------------------------ Auswertung Ausdruck < 256 ---45l4>5LPLP'H5WH ڑWH:A-R5}\5:--------------------------------------------------- Offset berechnen ---f5OSZIADp5OSOSz5OS OS~ ڦAê5OS OSOSɪ55:**************************** Initialisierung ***************************25AZ:Z$";":PO:J?5VP(Z$)j5DK(I)("&H"((I)(I)))5: :,,,O:5T1$"LD JR DJNZCALLRET JP INC DEC PUSHPOP RST IN OUT IM EX ADD ADC SUB SBC AND XOR OR CP RLC RRC RL RR SLA SRA *** SRL BIT RES SET "t5T3$"CPD CPDRCPI CPIRIND INDRINI INIRLDD LDDRLDI LDIRNEG OTDROTIROUTDOUTIRETIRETNRLD RRD "5A9,B9,A1,B1,AA,BA,A2,B2,A8,B8,A0,B0,44,BB,B3,AB,A3,4D,45,6F,675T2$"CCF CPL DAA DI EI EXX HALTNOP RLA RLCARRA RRCASCF "#53F,2F,27,F3,FB,D9,76,00,17,07,1F,0F,37J5T4$"EQU ORG END DB DW DM DS "u6A$(),LT$(2),WL(2),UL$(2),UD(2,)6W2( ),W3()6I :A$:W3(I)("&H"A$):ҭ$6I  :A$:W2(I)("&H"A$):.6BP( ):MP :MSMP86RG$(),CD$(),DR$()B6I :RG$(I):2L6I :CD$(I):HV6I :DR$(I):a`6 B,C,D,E,H,L,(HL),A{j6 NZ,Z,NC,C,PO,PE,P,Mt6 BC,DE,HL,SP~6*:67ˮ6I :A$:I,("&H"A$):鮜6 F5,3A,27,F5,32,DC,F2,F16 CD,4d,01,C96 , : , ?6I :A$:I,("&H"A$):: ]6 FE,03,C2,6D,40,1A,FE,00{6 C8,47,62,6B,23,7E,23,666 6F,7E,FE,7B,30,06,FE,616 38,02,E6,DF,77,23,10,F1ů6 3E,3,C9˯67:*************************** Fehlerbehamndlung **************************9 7< ژ <, :̕:G7:FZFZ\7LF ,:ZN:y(7< ڑ"Syntax-Fehler";27= ڑ"Syntax-Fehler im Operanden";<7> ڑ"Operand zuviel";ܰF7? ڑ"Label fehlt";P7@ ڑ"Operand fehlt";Z7A ڑ"unzulssiger Wert";>d7B ڑ"unzulssiges Zeichen";\i7C ڑ"String zu lang";sn7" in Zeile :";ZN;x7-);"+";ZA$7(߱7:********************* Druckerinitialisierung ****************************'7();(@);::---------- Drucker initialisieren ---o7();(9);::---------- Papierende-Fhler aktivieren ---7();(M);::---------- Elite-Zeichenbreite ---7();();::---------- Schmalschrift EIN ---D7();(l);();:: Linken Rand auf 15 Zeichen setzen ---7();(R);();::-- Deutscher Zeichensatz ---7();:: Linken Rand auf 15 Zeichen setzen ---7();(R);();::-- Deutscher Zeiche