2H ; ;*__*__*__*Z_û*__*__*__*__*__*__ ; .;Ende @û; ; ; ************************* ; * * ; * EDAS-Erweiterung * ; * Version 29.5.88 * ; * * ; ************************* ; ; (C) F.Klemm Gera ; ; ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ; ; Zusatzfunktionen: ; ORG 0DA82H ; DEFW KOPF DEFM 'MTB' DEFB 1 LD C,L AND A JR NZ,ZL1 LD C,3 ZL1 LD B,C EXX LD A,'A' ; ; A: Anfangs-ASCII ; ZL2 LD DE,(LBLANF);Anfang LD HL,(LBLEND);Ende AND A SBC HL,DE RET Z LD B,H LD C,L ADD HL,DE MK3 CPDR JR NZ,ZL3 PUSH AF CALL BRKT JR C,EXIT LD A,' '-1 CP M JR C,EXIT1 PUSH HL INC HL INC HL CP M JR Z,EXIT2 PUSH BC DEC HL DEC HL DEC HL DEC HL LD E,M INC HL LD D,M INC HL INC HL LD B,8 LD A,M INC HL MTB2 CALL ROUT CALL PR2 LD A,M INC HL DEC B CP ':' JR NZ,MTB2 MTB3 CALL SPAC DJNZ MTB3 EX DE,HL CALL HLHX EXX DEC B CALL Z,ZEIL EXX POP BC EXIT2 POP HL EXIT1 POP AF JR MK3 ; ZL3 INC A CP 'Z'+1 JR NZ,ZL2 ZEIL LD B,C PUSH AF EXIT POP AF CALL CRLF RET ; ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ; DEFW KOPF DEFM 'msg' DEFB 1 AND A JR Z,MSG2 LD C,A LD DE,ARG1 MSG1 LD A,(DE) INC DE INC DE CALL MSGP DEC C JR NZ,MSG1 RET ; MSG2 INC A PUSH AF CALL MSGP POP AF CP 11 JR NZ,MSG2 RET ; MSGP LD B,A CALL TETR CALL PRS DEFM ': ' DEFB 0 LD HL,MSGTAB MSG3 LD A,M INC HL AND A JR NZ,MSG3 DJNZ MSG3 MSG4 CALL ZKOUT JP CRLF ; MSGTAB DEFB 0 DEFM 'kein Befehl erkennbar' DEFB 0 DEFM 'Marke mehrfach' DEFB 0 DEFM 'Marke nicht definiert' DEFB 0 DEFM 'falsche Mnemonik' DEFB 0 DEFM 'falsches Zahlenformat' DEFB 0 DEFM 'Differenz nicht in ' DEFM '-128...127' DEFB 0 DEFM 'keine Marke vor EQU' DEFB 0 DEFM 'kein Apostroph' DEFB 0 DEFM 'Division durch Null' DEFB 0 DEFM 'falsche Flagbedingung' DEFB 0 DEFM 'Plus, Minus oder Komma' DEFM ' fehlt' DEFB 0 ; DEFW KOPF DEFM ',' DEFB 1FH CALL PRS DEFM '0 PE NV =0' DEFB CR,CUD DEFM '1 PO OV #0' DEFB CR,CUD,0 RET ; ;------------------------- ; DEFW KOPF DEFM 'IN' DEFB 13H JP XIN ; DEFW KOPF DEFM 'OUT' DEFB 5 JP XOUT ; DEFW KOPF ;Aufruf mit DEFM 'CALL' ;max. 9 Argum. DEFB 3 ;ARG1..4->HL..A SHIFT PUSH HL ;Startadr.->Stck LD HL,ARGN DEC M ;DEC(ARGN) LD HL,ARG2 LD DE,ARG1 LD BC,18 LDIR ;Arg. versch. CALL ARGS LD A,(ARG4) ; "" laden RET ; DEFW KOPF DEFM 'SYSTEM' DEFB 3 LD A,L LD (ARGC),A ;Nr. in ARGC LD HL,0F006H ;Start=SYSE JR SHIFT ; DEFW KOPF DEFM 'MODIFY' DEFB 1 JP MOD0 ; DEFW KOPF DEFM 'DISPLAY' DEFB 1 JP DISPL ; DEFW KOPF DEFM 'FILL' DEFB 17H JP XFILL ; DEFW KOPF DEFM 'MOVE' DEFB 17H JP XMOVE ; DEFW KOPF DEFM 'EXCH' DEFB 17H JP XEXCH ; DEFW KOPF DEFM 'HELP' DEFB 3 JP XHELP ; DEFW KOPF DEFM 'LIST' DEFB 1 JP LIST ; ;======================================= ; CODES CALL PRS DEFB ESC DEFM 'CODES :' DEFB 0 CALL INLN LD HL,7 ADD HL,DE EX DE,HL ;DE=Anfang ZK LD BC,IOPUF COD3 CALL NUM JR C,KOMMA LD A,M AND A JR Z,SEAR INC HL LD A,M COD4 LD (BC),A INC BC JR COD3 ; KOMMA LD A,(DE) CP ',' JP NZ,ERR2 ;2 Werte aus dem INC DE ;Stack !!! LD A,(DE) INC DE JR COD4 ; DEFW KOPF ;Text suchen DEFM 'TFIND' DEFB 1 SET 0,B JR FIND ; DEFW KOPF ;Bytes suchen DEFM 'CFIND' DEFB 1 RES 0,B FIND AND A JR NZ,FIND1 LD H,A LD L,A INC A FIND1 DEC A JR NZ,FIND3 FIND2 LD D,A LD E,A FIND3 CALL FORM PUSH BC PUSH HL ;Args ausgew. ; BIT 0,D JR Z,CODES CALL PRS DEFB ESC DEFM 'TEXT :' DEFB 0 FTEXT CALL ICHR CP CR JR Z,FIND4 CP CLR CALL Z,ROUT CALL NZ,PCTRL JR FTEXT ; FIND4 CALL INL0 LD HL,6 ADD HL,DE LD BC,IOPUF-1 FIND5 LD A,M INC BC LD (BC),A ;Text }bertragen INC HL AND A JR NZ,FIND5 SEAR LD A,C LD (ARGN),A POP HL POP BC ; ; Suche der Bytes ; SU5 LD A,(IOPUF) CPIR ;SUCHE NACH 1.BY JP PO,CRLF PUSH BC ;BC,HL=>STACK PUSH HL LD DE,IOPUF+1 LD A,(ARGN) LD B,A SU6 DEC B ;VERGLEICH ENDE JR Z,SUCONT ;AUSDRUCKEN LD A,(DE) CP M JR NZ,SUEND ;STIMMT DOCH INC HL ;NICHT INC DE JR SU6 SUCONT POP HL ;ANFANG+1=>HL PUSH HL DEC HL ;ANFANG=HL CALL HLHX ;Ausdrucken SUEND POP HL POP BC ;HL,BC aus Stack SUX LD A,(IX+13) CP BRK JP Z,CRLF ;BRK CP CLR JR NZ,SU5 ;nicht Stop CALL ICHR ;Warten bis Tast JR SUX ; ;======================================= ; DEFW KOPF DEFM 'ASC' DEFB 1 ASC1 CALL HLHX ;ADR. DRUCKEN PUSH HL LD B,8 ;8 BYTES DRUCKEN ASC2 LD A,M INC HL CALL AHSP DJNZ ASC2 LD A,CUR CALL ROUT ; LEERE STELLE POP HL LD B,8 ; 8 ASCII'S ASC3 LD A,M ;DRUCKEN AND 7FH CALL PCTRL BIT 7,M CALL NZ,INV INC HL DJNZ ASC3 CALL CRLF CALL ICHR CP BRK ;BRK-> ENDE RET Z CP STOP JR NZ,ASC1 ;WEITER LD C,8 JP MOD1 ;STOP->MODIFY ; INV CALL PRS DEFB CUL DEFB CCPL DEFB CUR DEFB 0 RET ; DEFW KOPF DEFM 'READ' DEFB 3 CALL INITI CALL ARGS CP 3 JR NC,RD1 LD C,L CP 2 JR NC,RD1 LD DE,IOPUF RD1 PUSH HL PUSH BC LD (IX+3),L CALL RD0 ;Systemunterpr. LD HL,IOPUF LD BC,80H LDIR POP BC POP HL JR C,RD3 INC L LD A,(IX+2) CP C JR C,RD1 RD3 JP RINIT ; DEFW KOPF DEFM 'up' DEFB 13H LD A,L ADD A LD HL,(STAB) LD D,0 LD E,A ADD HL,DE LD A,M INC HL LD H,M LD L,A HPRINT CALL HLHX CRLF1 JP CRLF ; DEFW KOPF DEFM 'nr' DEFB 13H EX DE,HL LD HL,(STAB) LD BC,102H DEC HL NR1 CPI NR2 LD A,E CPI RET PO JR NZ,NR1 LD A,D CPI JR NZ,NR2 LD A,C CPL RRA JP AHCR ; DEFW KOPF DEFM 'line' DEFB 1FH LD HL,(M44) LD DE,(M40) XOR A SBC HL,DE PUSH HL POP BC EX DE,HL LD D,A LD A,(M48+1) LD E,A JR Z,LINZ LD A,CR LINY INC DE CPIR JP PE,LINY LINZ EX DE,HL JR HPRINT ; DEFW KOPF DEFM 'BRK' DEFB 13H ;0 off LD A,L ;1 on AND A ;2 nur BRK SET0 LD HL,ITAST JR Z,SET DEC A SET2 LD HL,INT2 JR Z,SET LD L,INT1 ;H(INT1)=H(INT2) SET LD (PIOINT+2),HL RET ; INT1 PUSH AF LD A,1 JR INT3 ; INT2 PUSH AF XOR A INT3 CALL ITAST BIT 0,(IX+8) JR Z,INT11 DEC A LD A,(IX+13) JR Z,INT12 CP 0F4H JR Z,SLOW CP 0F5H JR Z,PAUSE CP 0F6H JR Z,PRINT INT12 CP CCPL JR Z,BREAK INT11 POP AF RET ; SLOW CALL WAIT0 POP AF RET ; PRINT RES 0,(I+8) LD A,HCOPY CALL CRT POP AF RET ; PAUSE RES 0,(IX+8) PAU CALL BLINK CP 0F5H JR Z,PAU POP AF RET ; BREAK RES 0,(IX+8) POP AF POP HL CALL PRS DEFB CR,CUD DEFM 'Break at ' DEFB 0 CALL HPRINT JP EDBRK ; ;********** CAOS-FUNKTIONEN ******** ; DEFW KOPF DEFM 'COLOR' DEFB 3 JP MCOLOR ; DEFW KOPF DEFM 'SWITCH' DEFB 3 JP SWITCH ; DEFW KOPF DEFM 'KEY' DEFB 1 AND A JP Z,KEYL JP KEY-1 ; DEFW KOPF DEFM 'BANK' ;mit Pr}fsumme?? DEFB 1 PUSH HL PUSH AF LD HL,M44 LD DE,8000H-4 CALL COPY2 ; LD C,80H ;Ausschalten LD HL,0B80CH;aller Banken XOR A OFF1 BIT 2,M JR Z,OFF2 LD B,L OUT (C),A LD M,A OFF2 INC L JR NZ,OFF1 ; POP AF POP DE AND A RET Z ; LD A,E CP 0CH JR C,ERR0 AND 0FCH LD B,A LD L,A LD D,47H IN A,(C) CP RAM16 JR Z,RAM1 CP RAM64 JR NZ,ERR0 LD A,E AND 3 RRCA RRCA OR 7 LD D,A RAM1 LD M,D OUT (C),D LD HL,8000H-5 LD A,M CP BRK JR NZ,CLR1 INC HL COPY1 LD DE,M44 CALL COPY2 LD HL,ETAB LD E,M40 CALL COPY2 LD E,OBJ COPY2 LD BC,4 LDIR RET ; CLR1 CALL PRS DEFM 'Delete Bank' DEFB 0 CALL YESNO RET C LD M,BRK LD HL,ETAB JR COPY1 ; ERR2 POP HL ERR1 POP HL ERR0 JP ERRM ; DEFW KOPF DEFM 'INSERT' DEFB 11H LD HL,(OBJ) INS1 LD A,M CP BRK RET Z CALL EDINS INC HL JR INS1 ; LOOK LD A,'[' LK1 CPIR RET NZ CPI JR NZ,LK1 RET ; DEFW KOPF DEFM 'HOLD' DEFB 11H CALL TOP LD HL,(M46) LD DE,(M42) CALL FORM CALL LOOK PUSH HL JR NZ,ERR1 CALL LOOK JR NZ,ERR1 PUSH HL CALL LOOK POP DE JR Z,ERR1 POP HL DEC DE DEC DE CALL FORM LD DE,(OBJ) LDIR LD A,BRK LD (DE),A RET ; ETAB DEFW 4000H DEFW 8000H-5 DEFW 400H DEFW 4000H ; ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ; ; Main-Menu ; DEFW HEAD DEFM 'normal' DEFB 11H LD HL,0FCFEH SCRT LD A,H LD (CCTL+1),A LD A,L LD (CCTL+3),A RET ; DEFW HEAD DEFM 'cursiv' DEFB 11H LD HL,0F8FAH JR SCRT ; .;Ende Zusatz ; ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ; ; Konstanten: ; RAM16 EQU 0F4H ;Modultypen RAM64 EQU 0F6H ; ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ; ; Marken im Testmonitor ; XIN EQU 0EBF2H XOUT EQU 0EBFFH XFILL EQU 0EC14H XEXCH EQU 0EC25H XMOVE EQU 0EC39H XHELP EQU 0EC54H FORM EQU 0EBCAH ; ; Marken des Disassemblers ; LIST EQU 0D8AEH ; ; Marken im Editor ; EDINS EQU 0C26CH EDBRK EQU 0C287H YESNO EQU 0C29EH TOP EQU 0C456H PR2 EQU 0C374H ; ORG 240H M40 DEFS 2 M42 DEFS 2 M44 DEFS 2 M46 DEFS 2 M48 DEFS 2 DEFS 4 OBJ DEFS 2 LBLEND DEFS 2 LBLANF DEFS 2 ; ;*__*__*__*__*__*__*__*__*__*__*__*__*__ ; @û