ARITHASM ;************************** ;*RADOR-ASSEMBLERLISTE * ;* * ;*V 31.03.88 * ;* * ;*SPALTENSUMMMEN * ;************************** ; ; ; ;\[[[[[[[[[[[[[[[[[[[[[[[[\ ;\[ANTON-HELMUT PRANKE[[[[\ ;\[LTN.-LUTZ-MEIER-STR.36[\ ;\[SUHL[[[[[[[[[[[[[[[[[[[\ ;\[6024[[[[[[[[[[[[[[[[[[[\ ;\[[[[[[[[[[[[[[[[[[[[[[[[\ ; ; ;_________________________ ; ;SUE SUMMENEINSTIEG ; NACH FIND ; NVX EQU 0B797H PV EQU 0F003H SL EQU 0 NS EQU 2 NF EQU 4 FP EQU 6 DA EQU 8 DNE EQU 0AH FEP EQU 0CH DNA EQU 0EH FK EQU 10H KOM EQU 12H ZZN EQU 14H HLR EQU 16H DER EQU 18H BCR EQU 1AH ZAN EQU 1CH ZEI EQU 1EH SL1 EQU 20H KOS EQU 72H NF1 EQU 24H FP1 EQU 26H DA1 EQU 28H SUM EQU 2AH VEB EQU 2CH VEE EQU 2EH LAM EQU 30H MOM EQU 32H FRE EQU 34H NMO EQU 36H DAM EQU 38H NFM EQU 3AH LH1 EQU 3CH SKM EQU 74H LH2 EQU 40H LB2 EQU 42H NK EQU 44H DK EQU 46H FP2 EQU 48H SCH EQU 76H SZ EQU 4CH ANF EQU 4EH VGB EQU 50H ANG EQU 52H VSU EQU 54H VGK EQU 76H GRU EQU 60H DRU EQU 66H PKT EQU 150H SPW EQU 78H SPP EQU 7AH AKE EQU 7CH ORG 1EEBH DEFW 0DEDEH DEFM 'ARITH' DEFB 1 LD A,0 LD ANF,A CALL LOE CALL PV DEFB 23H DEFM '*SPALTENSUMME' DEFW 0A19H DEFM '*WELCHE DATEI?' DEFW 0A19H DEFB 0 CALL ERO ;DATEISUCHE JP NC MERE ;NEIN->RETURN LD HL,(DNE) ;NAME ENDE LD A,0DDH LD BC,30H CPDR INC HL INC HL LD DNA,HL ;NAME ANFANG LD A,(MOM) ;AKTUELLES LD 5EH,A ;MODUL LD L,A LD A,1 CALL PV DEFB 26H LD A,E LD 62H,A ;STEUERBYTE SUE LD E,4 ;SUMME EINSTIEG LD L,7 CALL COL CALL SAN ;ANZAHLTEST JP C MERE ;NULL->RETURN LD HL,0 LD ANF,HL CALL LOE LD HL,0BFFFH LD SPW,HL ;ZWISCHENSPEICH. ;AUF BFFFH LD HL,3A00H ;MERKER LD VGB,HL ;MERKZEIGER LD LH1,HL CALL PV DEFB 23H DEFM '*DATEI:\' DEFB 0 LD E,2 LD L,7 CALL COL LD HL,(DNA) CALL HLA ;NAME AUSGABE LD E,4 LD L,7 CALL COL CALL PV DEFB 23H DEFM '\' DEFW 0A19H DEFM '*SUMME IM' DEFW 0A19H DEFB 0 P1 CALL OUT ;FELDEINGABE LD A,(ZAN) ;ALLE? CP 1 JR Z ALL ;JA->ALL LD E,4 LD L,7 CALL COL CALL PV DEFB 23H DEFW 0A19H DEFB 0 CALL NOF ;NOCH EIN FELD P2 CALL PV DEFB 4 CP 'J' JR Z P1 ;JA->P1 CP 'N' JR NZ P2 ;NEIN->ALL ALL LD A,(ANF) LD C,A LD B,0 ;FELDANZAHL LD HL,3A00H LD VGB,HL LD HL,3A04H LD VGK,HL ;FELDLAENGE P3 LD ZAN,BC ;ANZAHL LD HL,(VGK) ;AKKU LOESCHEN LD C,M INC HL LD B,M ;LANGE->BC INC HL LD E,M INC HL LD D,M ;VORSUMME->DE LD LAM,BC ;LAM=LAENGE LD VSU,DE ;VSU=VSU LD HL,0A0H ;LANGE>160? AND A SBC HL,BC JP C A2 ;JA->A2 LD HL,(LAM) ;LANGE+4 LD DE,4 AND A ADC HL,DE PUSH HL LD BC,(LAM) LD HL,0BFFFH LD A,0FFH CPDR ;SPP=PUNKT IM ZWISCHENSPEICHER ;PKT=PUNKT IM AKKUMULATOR LD SPP,HL POP BC LD HL,PKT DEC HL LD DE,(SPP) DEC DE LD A,0 L1 LD M,0 ;AKKU UND LD (DE),A ;ZWISCHENSPEICHR DEC DE ;LOESCHEN CPD JP PE L1 LD A,'+' LD M,A LD (DE),A INC HL INC DE LD VEB,HL ;VEB=AKKU ANFA. LD SPW,DE ;ZWISCH.ANFANG LD HL,PKT LD DE,(SPP) LD A,'.' LD M,A LD (DE),A INC HL INC DE LD BC,(LAM) LD A,0 L2 LD M,A ;LOESCHEN LD (DE),A INC DE CPI JP PE L2 LD HL,(LAM) AND A ADC HL,HL LD DE,5 AND A ADC HL,DE LD BCR,HL ;BCR=AKKU LAENGE LD BC,150H LD HL,(LAM) AND A ADC HL,BC LD AKE,HL ;AKKU ENDE LD HL,2A00H ;VEKTORANFANG LD ZEI,HL ;VEKTORZEIGER LD BC,(NS) ;SATZANZAHL F1 LD SUM,BC ;IN SUM LD HL,(ZEI) ;HL=ZEIGER LD C,M INC HL ;BC=SATZNUMMER LD B,M INC HL LD ZEI,HL LD DE,(SL) ;SATZLAENGE LD HL,(DA) ;DATENANFANG AND A SBC HL,DE LD DK,HL ;DK=DATENZEIGER ADWI PUSH BC PUSH DE AND A ADC HL,DE PUSH HL LD A,M ;DEH-BYTE? CP 0DEH JR NZ KSA ;NEIN->KSA POP HL ;JA->SCHALTEN CALL MOD LD HL,4000H PUSH HL KSA POP HL POP DE POP BC CPI ;FERTIG DEC HL JP PE ADWI ;NEIN->ADWI LD DK,HL ;ZEIGER MERKEN F2 LD BC,(LAM) LD DE,(VSU) ;VORSUMME + LD HL,(DK) ;DATENZEIGER AND A ADC HL,DE ;HL =SPALTENANF. LD HLR,HL ;HLR= -\\- DEC HL AND A ADC HL,BC LD DAM,HL ;DAM=SPALTENENDE LD A,'.' LD HL,150H ;'.'AUF PKT LD M,A LD HL,(SPP) ;'.'AUF SPP LD M,A JR X9 ;DATEN IN SPW EINTRAGEN DIS LD A,0 LD LH2,A LD HL,(DAM) ;NEIN LD BC,(LAM) ;WERT IN SPW Y1 PUSH BC PUSH HL PUSH DE LD A,M CP 20H JR Z Y5 ;LEERZEICHEN CP '+' JR Z Y2 ;PLUSZEICHEN CP '.' ;PUNKT JR Z YP ;JA->YP CP '-' ;MINUS JR Z Y2 ;JA->Y2 CP 30H JR C KNW ;KEINE ZIFFER LD A,39H CP M JR C KNW ;KEINE ZIFFER LD A,M PUSH HL LD L,30H ;30H SUBTRAHIER. SUB L POP HL Y3 LD (DE),A ;IN ZWISCHENSP. Y6 POP DE DEC DE Y4 POP HL POP BC CPD ;NOCH ZEICHEN? JP PE Y1 ;JA->Y1 RET Y5 LD A,(FP1) ;MIT DEZIMALP. OR A JR NZ Y6 ;JA->Y6 POP DE JR Y4 ;NEIN->Y4 Y2 POP DE PUSH HL LD HL,(SPW) ;VORZEICHEN DEC HL ;EINTRAGEN LD M,A POP HL JR Y4 KN1 POP AF KNW POP DE POP HL POP BC SCF RET YP PUSH AF ;PUNKT EINTRAGEN LD A,(LH2) OR A JR NZ KN1 ;ZUVIELE PUNKTE LD A,1 ;KEIN NUMERISCH. LD LH2,A ;WERT POP AF JR Y3 X9 LD A,0 LD FP1,A LD HL,(HLR) ;SPALTENENDE LD BC,(LAM) ;SPALTENLAENGE LD A,'.' ;'.' SUCHEN CPIR JP Z A1 ;GEFUNDEN? LD DE,(SPP) ;NEIN! DEC DE LD DER,DE ;DE=SPAL.ENDE CALL DIS ;DATEN IN SPW JP C SN JR MA1 A1 LD A,1 LD FP1,A LD HL,(SPP) AND A ADC HL,BC PUSH HL POP DE LD DER,DE CALL DIS ;DATEN IN SPW JP C SN MA1 LD HL,0 LD FP1,HL LD HL,(VEB) DEC HL LD A,M ;'-' IM AKKU CP '-' JR NZ X1 ;NEIN->X1 LD HL,(VEB) CALL KOMP ;KOMPLEMENT X1 LD HL,(SPW) DEC HL LD A,M CP '-' ;'-' IM ZWISCH. JR NZ SU ;NEIN->SU LD HL,(SPW) CALL KOMP ;KOMPLEMENT ;SUMMENBILDUNG SU LD HL,0BFFFH ;ZWISCHEN.ENDE LD DE,(AKE) ;AKKU ENDE LD BC,(BCR) ;AKKU LAENGE LD A,0 LD KOS,A ;UBERTRAG=KOS S1 PUSH BC PUSH HL PUSH DE LD A,M CP '.' JP Z PU ;PUNKT LD L,A S2 LD A,(DE) ADD L ;ZIFFER ADD. DAA ;DEZIMALKORR. LD L,A LD A,(KOS) ;UEBERTRAG ADD L ;ADDIEREN DAA ;DEZIMALKORR. PUSH AF LD A,0 ;ZWISCH.LOESCHEN LD (DE),A POP AF EX DE,HL RLD ;ERGEBNIS IN AKU EX DE,HL SRL A ;ZEHNER SRL A ;ALS SRL A ;UEBERTRAG SRL A ;NACH VORN LD KOS,A ;UN IN KOS NU POP DE DEC DE POP HL LD M,0 POP BC ;NOCH ZIFFERN CPD JP PE S1 ;JA->S1 LD A,(KOS) ;UEBERTRAG? CP 1 JR NZ NTE ;NEIN->NTE KOTE LD A,(KOM) ;WURDE KOMPL.? CP 'K' JR NZ NTE ;NEIN NEUNERTEST LD HL,(AKE) ;JA-UEBERTRAG LD BC,(BCR) ;NOCH ADDIEREN Q2 LD LH1,HL LD LH2,BC LD A,M CP '.' JR Z QQ LD E,A LD A,(KOS) ;UEBERTRAG ADD E ;ADDIEREN DAA ;DEZIMALKORREKT. PUSH AF LD A,0 LD M,A POP AF RLD ;IN AKKU SRL A ;ZEHNER SRL A ;NACH VORN UND SRL A ;IN KOS SRL A LD KOS,A QQ LD HL,(LH1) LD BC,(LH2) CPD ;NOCH ZIFFERN JP PE Q2 ;JA->Q2 NTE LD HL,(VEB) ;NEUNERTEST LD A,M ;NEUN NACH VORN CP 9 ;GELAUFEN? JR Z Q3 ;JA->Q3 DEC HL ;NEIN ERGEBNIS LD M,'+' ;POSITIV JR Q5 Q3 DEC HL ;ERGEBNIS LD M,'-' ;NEGATIV LD HL,(VEB) CALL KOMP ;KOMPLEMENT Q5 LD A,0 LD KOM,A F5 CALL MSA ;MODULSCHALTUNG LD HL,(SPW) DEC HL LD M,0 LD BC,(SUM) ;NOCH SAETZE CPI JP PE F1 ;JA->F1 CALL MSA ;MODULSCHALTUNG JP ER1 ;ERGEBNISAUSG. PU LD A,(DE) ;AUCH IM AKKU CP '.' ;EIN PUNKT? JP Z NU ;JA->NU POP DE ;NEIN POP HL ;KEINE NUMER. POP BC ;DATEN SN LD E,4 ;SN-ERROR LD L,7 CALL COL CALL PV DEFB 23H DEFB 2 DEFM ' IM FELD ' DEFB 0 LD E,1 LD L,7 CALL COL LD HL,(VGB) ;FELDNAME ANF. LD BC,4 ;LAENGE FEW LD A,M ;AUSGABE CALL PV DEFB 24H CPI JP PE FEW LD E,7 LD L,0 CALL COL CALL PV DEFB 23H DEFM ' KEINE NUMERISCHEN WERTE' DEFW 0A19H DEFB 0 LD E,4 LD L,7 CALL COL JP A2 ER1 LD E,4 LD L,7 CALL COL CALL PV DEFB 23H DEFB 2 DEFM '*SUMME IN ' DEFB 0 LD E,1 LD L,7 CALL COL LD BC,4 LD HL,(VGB) ;NAME AUSGABE ER2 LD A,M CALL PV DEFB 24H CPI JP PE ER2 LD E,4 LD L,7 CALL COL CALL PV DEFB 23H DEFM ' = ' DEFB 0 LD E,2 LD L,7 CALL COL ;AKKUMULATOR ;LAENGE IN ;BC RGISTER LD HL,0 ;KONTROLLE LD FP1,HL ;AUF FUEHRENDE ;UND AUF LD HL,(AKE) ;NACHNULLEN LD BC,(LAM) TES2 LD A,0 CP M ;NACHNULL? JR NZ TES1 ;NEIN->TES1 CPD JP PE TES2 ;JA->TES2 LD HL,PKT LD DE,(VEB) AND A SBC HL,DE PUSH HL POP BC JR TES3 TES1 LD DE,(VEB) ;KORRIGIEREN AND A SBC HL,DE ;AUSGABE ;NUR NACHNULLEN ;GESAMTLAENGE ;AUF VORKOMMA- ;STELLEN TES4 PUSH HL POP BC ;BC=LAENGE INC BC TES3 LD HL,(VEB) ;VORZEICHENTEST DEC HL LD A,M INC HL CP '-' JR NZ ER3 CALL PV ;WENN '-',DANN DEFB 24H ;UNTERSTREICHEN CALL PV DEFB 23H DEFW 080AH DEFM '=' DEFB 0BH DEFB 0 ER3 PUSH HL LD HL,0 LD FP1,HL POP HL ER7 PUSH HL PUSH BC LD A,M CP '.' JR Z ER5 CP 0H ;FUEHRENDE NULL JR NZ A3 ;NEIN->A3 LD HL,(FP1) ;JA->ER4 CP L JR Z ER4 A3 ADD 30H ER5 CALL PV DEFB 24H PUSH BC PUSH HL LD B,4 LD HL,UST ;UNTERSTREICHEN SS LD A,M CALL PV DEFB 0 INC HL DJNZ SS POP HL POP BC LD A,1 ;KEINE VORNULL LD FP1,A ;MEHR ZU ERWAR- ER4 POP BC ;TEN POP HL CPI JP PE ER7 CALL PV DEFB 23H DEFW 0A0DH DEFB 0 ER6 CALL PV ;NORMALAUSGABE DEFB 20H LD E,4 LD L,7 CALL COL CALL PV DEFB 23H DEFW 0A19H DEFM '*DRUCKEN (J/N)?' DEFB 0 F8 CALL PV DEFB 04H CP 'N' JP Z A2 CP 'J' JR NZ F8 LD HL,(DRU) ;OUTAB EINTRAGEN LD 0B7B9H,HL JP ER1 A2 LD HL,(VGB) LD DE,8 AND A ADC HL,DE LD VGB,HL LD HL,(VGK) AND A ADC HL,DE LD VGK,HL LD HL,(SPW) DEC HL LD M,0 CALL PV DEFB 20H ;NORMALAUSGABE LD BC,(ZAN) CPI ;NOCH FELDER? JP PE P3 ;JA->P3 JP MERE ;SPALTENKOMPLEMENT KOMP LD BC,(BCR) ;LAENGE W1 PUSH BC PUSH HL LD A,M CP '.' JR Z W2 ;PUNKT LD E,A LD A,9 ;DIFFERENZ SUB E ;ZUR 9 LD M,A ;EINTRAGEN W2 POP HL POP BC CPI JP PE W1 LD A,'K' ;'K'IN KOM LD KOM,A RET UST DEFW 0A08H DEFB '=' DEFB 0BH ;UPTABELLE LOE1 EQU 200H LOE EQU 20DH COL EQU 23DH ;COLOR MOD EQU 247H ;MODUL HOCHSCH. MOR EQU 2AAH ;MOD. RUNTERSCH. MOD0 EQU 30EH ;GRUNDMODUL AUS MOD8 EQU 31BH ;GRUNDMODUL EIN KALT EQU 33EH ;KALTSTART MOLO EQU 3BEH ;MODUL LOESCHEN MEN EQU 3DFH ;MENU VK EQU 42DH ;VERZEICHNIS MERE EQU 509H ;RETURN->MENU DS EQU 516H ;DATEISUCHE ERR EQU 53DH ;FEHLERAUSGABE DIH EQU 56FH ;DEZ IN HEX HID EQU 596H ;HEX IN DEZ OLB EQU 5AAH ;BLOCKAUSWAHL VET EQU 5E9H ;VEKTOR REFRESH PIN EQU 5FAH ;INPUT HOS EQU 66FH ;HOCHSCHALTEN RUS EQU 67DH ;RUNTERSCHALTEN PAGE EQU 68BH ;FENSTERREAKTION MSA EQU 69BH ;MODULUMSCHALTEN HLA EQU 6B9H ;(HL)AUSGABE KOR EQU 6C3H ;KORREKTUR DEL EQU 951H ;LOESCHEN ERO EQU 0A80H ;DATEISUCHE SAN EQU 0AABH ;SATZANZAHLTEST OUT EQU 0AD1H ;FELDNAME TEST KOZE EQU 0B9CH ;KOPFZEILE WEND EQU 0C06H ;FENSTERREAKTION NOF EQU 16A0H ;LISTENENDE ÿÿÿÿ