LPGRAF ASM;*************************************** ; ; LEITERKARTENENTWURF ; ;*************************************** ; ; ;ZENTRALKLINIK FUER HERZ- UND LUNGEN- ;KRANKHEITEN DES MINISTERIUMS FUER ;GESUNDHEITSWESEN ; ;5303 BAD BERKA ; ;ABTEILUNG BIOMEDIZINISCHE TECHNIK ;UND INFORMATIONSVERARBEITUNG ; ;ERARBEITET VON DIPL.-ING. Roland Sieder ; ;BAD BERKA, DEN 18.02.1986 ; ;Terminal: KC85/3! ;*************************************** ; ORG 200H ; ;*************************************** ;f}r Edas bearbeitet von Mario Leubner ; ;LPGRAF.ASM ` 16.08.93 ;*************************************** ; ; MARKEN ; ;*************************************** ; WINON EQU 0B79CH WINLG EQU 0B79EH CURSO EQU 0B7A0H COLOR EQU 0B7A3H PV1 EQU 0F003H CRT EQU 00H KBD EQU 04H KBDZ EQU 0EH INLINE EQU 17H ERRM EQU 19H HLHX EQU 1AH ZSUCH EQU 1DH OSTR EQU 23H SPACE EQU 2BH CRLF EQU 2CH LF EQU 0AH CR EQU 0DH FARB1 EQU 39H FARB2 EQU 46H FENSTA EQU 20H FENSTE EQU 2008H PIX EQU 8000H COL EQU 0A800H AHIL1 EQU COL+0800H/256 AHIL2 EQU COL+0A00H/256 AHIL3 EQU PIX+2800H/256 AHIL4 EQU PIX+2000H/256 RAM1 EQU 2000H RAM2 EQU 4000H SCOL EQU 12H PAGE EQU 11H ; ; ;*************************************** ; ; KURSORTASTENCODES ; ;*************************************** ; LIH EQU 'O' REH EQU '^' UNV EQU '+' OBV EQU ':' LUS EQU 'L' LOS EQU '0' ROS EQU '-' RUS EQU '_' SLIH EQU 'o' SREH EQU ']' SUNV EQU ';' SOBV EQU '*' SLUS EQU 'l' SLOS EQU '@' SROS EQU '=' SRUS EQU '\' ; ; ;*************************************** ; ; BUCHSTABENCODES ; ;*************************************** ; ; ; A - LOETAUGE BEI PUNKT P1 ; (NUR SICHTEBENE) ; B - EINLESEN VON MAGNETBAND ; C - RUECKSPRUNG IN CAOS ; D - QUASIDECKUNG VON SICHT- UND ; HINTERGRUNDEBENE ; E - KONTAKTIERUNGSLEISTE VON ; PUNKT P1 ZU PUNKT P2 ; (ALLE EBENEN) ; F - RUECKSETZEN DER KONTAK- ; TIERUNGSLEISTE VON PUNKT P1 ; ZU PUNKT P2 (ALLE EBENEN) ; G - LOETAUGE BEI PUNKT P1 DER ; SICHTEBENE RUECKSETZEN ; H - AUSTAUSCHEN DER 3.EBENE MIT ; DER HINTERGRUNDEBENE ; I - SPIEGELN DER SICHTEBENE UM ; DIE VERTIKALE BEI X=128 ; J - NICHT BELEGT ; K - LOETAUGE BEI PUNKT P1 ; (ALLE EBENEN) ; L - LINIE VON PUNKT P1 ZU PUNKT ; P2 ; M - MAGNETBANDAUSGABE DER ; HINTERGRUNDEBENE ; N - NICHT BELEGT ; O - NICHT BELEGT ; P - NICHT BELEGT ; Q - KURSOR SETZEN BEI PUNKT P1 ; R - RUECKSETZEN DES LOETAUGES ; BEI PUNKT P1 ; S - RUECKSETZEN DER LINIE VON ; PUNKT P1 ZU PUNKT P2 ; T - TEXTEINGABE ; U - SICHTEBENE LOESCHEN ; V - NICHT BELEGT ; W - AUSTAUSCHEN VON SICHT- UND ; HINTERGRUNDEBENE ; X - KOORDINATENAUSGABE ALLER ; HORIZONTALEN LINIEN, DEREN ; LAENGE GROESZER 2 IST ; Y - WIE 'X', NUR VERTIKALE LINIE ; Z - KOORDINATENAUSGABE DER LOET- ; AUGEN ; ; ;*************************************** ; ; UNTERPROGRAMME ; ;*************************************** ; ; XXXX: DB -1 KURSO: LD E,2 CALL AUSH PUSH AF MM56: LD E,1 CALL PKT DEC E CALL PKT CALL PV1 DB KBDZ JR NC,MM56 LD B,A POP AF LD E,A LD A,B PUSH AF LD B,0 CALL PKT POP AF RET ; BUCH: CALL PV1 DB KBD PUSH AF CALL PV1 DB CRT CALL PV1 DB CRLF POP AF RET ; XEP1: CALL PV1 DB OSTR DB 'P1',LF,CR,0 MM47: LD A,'X' CALL PV1 DB CRT CALL HEXA LD B,A LD A,'Y' CALL PV1 DB CRT CALL HEXA LD C,A RET ; XEP2: CALL PV1 DB OSTR DB 'P2',LF,CR,0 PUSH BC CALL MM47 PUSH BC POP HL POP BC RET ; AUSH: PUSH AF LD A,C LD HL,(CURSO) PUSH HL LD HL,100H CALL AUSXN LD A,D CALL AUSYN POP HL LD (CURSO),HL POP AF ; PKT: PUSH HL CALL POSI JR NC,MP6 POP HL RET MP6: PUSH DE PUSH BC LD A,C AND 7 INC A LD B,8 LD C,A LD A,(HL) MP8: RLCA DEC C JR Z,MP7 DJNZ MP8 MP7: RL C LD D,A LD A,E OR A JR Z,MP9 CP 02H JR NC,MP10 SET 0,D JR MP10 MP9: RES 0,D MP10: LD A,D DEC B JR Z,MP11 MP12: RLCA DJNZ MP12 MP11: LD (HL),A LD A,C AND A POP BC POP DE POP HL RET ; POSI: LD HL,013FH XOR A SBC HL,BC RET C LD A,D CPL PUSH DE LD D,A LD L,C SRL L SRL L SRL L BIT 0,B JR Z,MP1 AND 030H RRCA OR L LD L,A MP1: LD A,D RLA RLA RLA AND 060H OR L LD L,A LD A,D RRCA AND 80H OR L LD L,A LD A,D AND 0F0H SRL A SRL A SRL A BIT 0,B JR Z,MP2 AND 018H SRL A SRL A MP2: SRL D LD H,A LD A,D AND 1 OR H OR 080H BIT 0,B JR Z,MP3 OR 020H MP3: LD H,A POP DE AND A RET ; KONTD: CALL KONT CALL WECH1 CALL KONT CALL DREB1 CALL WECH1 CALL KONT CALL WECH1 CALL DREB1 WECH1: PUSH BC PUSH DE CALL WECHS POP DE POP BC RET ; KONT: CALL PKT INC C CALL PKT INC D CALL PKT DEC C CALL PKT DEC D RET ; SAVE: DB 'SAVE',0 ;f}r Men}wort- LOAD: DB 'LOAD',0 ;suche! ; MMS: CALL PV1 DB OSTR DB LF,CR,'-',0 CALL HEXA LD L,A LD A,'*' CALL PV1 DB CRT CALL HEXA LD H,A LD D,0 LD BC,0 PUSH HL CALL MM61 POP HL RET ; PLATZ: CALL XEP1 MM61: CALL PV1 DB OSTR DB CR DS 8,LF DB 0 LD HL,(CURSO) LD A,H SUB 7 LD H,A LD (CURSO),HL RET ; AUSG: DEC SP DEC SP EX (SP),HL LD HL,(CURSO) EX (SP),HL CALL AUSXN LD A,E CALL AUSYN LD A,C CALL AUSGX LD A,D AUSG1: CALL AUSYN CALL PV1 DB KBD EX (SP),HL LD (CURSO),HL POP HL CP 'E' RET ; MM66: DEC SP DEC SP EX (SP),HL LD HL,(CURSO) EX (SP),HL CALL AUSXN LD A,E JR AUSG1 ; AUSXN: PUSH AF CALL PV1 DB CRLF POP AF AUSGX: PUSH AF LD A,'X' JR MX1 AUSYN: PUSH AF LD A,'Y' MX1: CALL PV1 DB CRT LD A,20H CALL PV1 DB CRT POP AF PUSH HL PUSH BC SUB L LD L,A LD B,H XOR A LD H,A MX3: ADD L JR NC,MX2 INC H MX2: DJNZ MX3 LD L,A PUSH DE LD DE,1 PUSH HL POP BC LD HL,0 LD A,010H MX8: PUSH AF RR B RR C JR NC,MX7 LD A,L ADD E DAA LD L,A LD A,H ADC D DAA LD H,A MX7: LD A,E ADD E DAA LD E,A LD A,D ADC D DAA LD D,A POP AF DEC A JR NZ,MX8 CALL PV1 DB HLHX POP DE CALL PV1 DB CRLF POP BC POP HL RET ; HEXA: PUSH DE PUSH HL HH23: CALL PV1 DB SPACE CALL PV1 DB INLINE EX DE,HL HH3: LD A,(HL) CP ' ' INC HL JR NZ,HH3 PUSH BC LD C,0 CALL ZIFF JR C,HH20 CALL ZIFF JR C,HH21 CALL ZIFF JR C,HH21 CALL ZIFF JR C,HH21 HH26: POP BC CALL PV1 DB ERRM JR HH23 HH20: XOR A HH19: POP BC POP HL POP DE RET HH21: DEC C DEC HL DEC HL LD A,(HL) SUB '0' LD E,A DEC HL DEC C JR Z,HH19 LD A,(HL) SUB '0' LD B,A LD D,0AH LD A,E JR Z,HH22 HH25: ADD D DJNZ HH25 HH22: LD E,A DEC HL DEC C JR Z,HH19 LD A,(HL) SUB '0' LD B,A LD D,064H LD A,E JR Z,HH19 HH24: ADD D DJNZ HH24 JR HH19 ; KONTH: PUSH HL CALL KONTD POP HL RET ; ZIFF: LD A,(HL) INC HL INC C CP '0' RET C CP 03AH CCF RET NC POP BC JR HH26 ; WECHS: LD HL,PIX LD DE,RAM1 JR MM54 ; DREBN: LD HL,RAM1 LD A,(XXXX) OR A RET NZ LD DE,RAM2 MM54: LD BC,2000H TAUSCH: LD A,(DE) PUSH BC LD B,(HL) LD (HL),A LD A,B LD (DE),A INC HL INC DE POP BC DEC BC XOR A CP B JR NZ,TAUSCH CP C JR NZ,TAUSCH RET ; DREB1: PUSH BC PUSH DE CALL DREBN POP DE POP BC RET ; ; ;*************************************** ; ; CODEROUTINEN ; ;*************************************** ; ; DW 7F7FH DB 'LPGRAF' DB 1 START: PUSH HL PUSH BC PUSH DE PUSH AF LD HL,RAM2 LD (HL),-1 LD A,-1 CP (HL) JR NZ,XXXX1 INC A LD (HL),A LD A,(HL) XXXX1: LD (XXXX),A LD HL,COL LD B,FARB1 LD A,AHIL1 MM1: LD (HL),B INC HL CP H JR NZ,MM1 LD A,AHIL2 LD B,FARB2 MM2: LD (HL),B INC HL CP H JR NZ,MM2 LD HL,FENSTA LD (WINON),HL LD HL,FENSTE LD (WINLG),HL LD HL,0 LD (CURSO),HL LD A,FARB2 LD (COLOR),A LD HL,PIX+2000H LD A,AHIL3 MM3: LD (HL),0 INC HL CP H JR NZ,MM3 CALL PV1 DB OSTR DB 'LPGRAF' NOP ; ANF: CALL PV1 DB CRLF CALL BUCH CP 041H JR NC,MM4 ; ERROR: CALL PV1 DB ERRM JR ANF ; MM4: CP 05BH JR NC,ERROR LD HL,TAB SUB 'A' RLA ADD L LD L,A LD A,H ADC 0 LD H,A LD E,(HL) INC HL LD D,(HL) EX DE,HL JP (HL) ; BUCHL: LD E,1 ;** L ** JR MM5 ; END: POP AF ;** C ** POP DE POP BC POP HL RET ; BUCHS: LD E,0 ;** S ** MM5: CALL XEP1 CALL XEP2 LD A,H CP B JR NZ,MM6 LD D,C LD B,0 LD C,H MM7: CALL PKT INC D JR Z,ANF LD A,L CP D JR NC,MM7 JR ANF MM6: LD C,B LD B,0 LD D,L MM8: CALL PKT INC C JR Z,ANF LD A,H CP C JR NC,MM8 JR ANF ; BUCHW: CALL WECHS ;** W ** JR ANF ; BUCHH: CALL DREBN ;** H ** JR ANF ; BUCHD: CALL WECHS ;** D ** CALL PV1 DB KBDZ JR NC,BUCHD JR ANF ; BUCHT: LD HL,(WINON) ;** T ** PUSH HL LD HL,(WINLG) PUSH HL LD HL,(CURSO) PUSH HL LD HL,0 LD (WINON),HL LD (CURSO),HL LD HL,02020H LD (WINLG),HL LD A,FARB1 LD (COLOR),A LD A,PAGE CALL PV1 DB CRT MM11: CALL PV1 DB KBD CP '@' JR Z,MM10 CALL PV1 DB CRT JR MM11 MM10: POP HL LD (CURSO),HL POP HL LD (WINLG),HL POP HL LD (WINON),HL LD A,FARB2 LD (COLOR),A LD A,SCOL CALL PV1 DB CRT MM53: JP ANF ; BUCHK: LD E,1 ;** K ** JR MM12 ; BUCHR: LD E,0 ;** R ** MM12: CALL XEP1 LD D,C LD C,B LD B,0 CALL KONTD JR MM53 ; BUCHA: LD E,1 ;** A ** JR MM13 ; BUCHG: LD E,0 ;** G ** MM13: CALL XEP1 LD D,C LD C,B LD B,0 CALL KONT JR MM53 ; BUCHM: CALL PV1 ;** M ** DB OSTR DB LF,'NAME:',LF,CR,' ',0 CALL PV1 DB INLINE MM15: LD A,(DE) INC DE CP ' ' JR NZ,MM15 LD HL,0B700H LD BC,6 EX DE,HL LDIR LD HL,TEXTEN LD BC,6 LDIR LD A,2 LD (0B781H),A LD HL,RAM1 LD (0B782H),HL LD HL,RAM1+2000H LD (0B784H),HL LD A,7FH LD BC,0FFFFH LD DE,SAVE LD HL,0E000H CALL PV1 DB ZSUCH ;Men}wort LD A,L ;'SAVE' suchen ADD 0DH LD L,A LD A,H ADC 0 LD H,A LD DE,0B6FAH MM16: LD BC,ANF PUSH BC INC HL ;Nach Eingabe? JP (HL) ;anspringen! ; TEXTEN: DB ' DUM' NOP ;Dateityp ; BUCHB: XOR A ;** B ** LD (0B781H),A LD A,07FH LD BC,0FFFFH LD DE,LOAD LD HL,0E000H CALL PV1 DB ZSUCH JR MM16 ; BUCHE: LD E,1 ;** E ** JR MM17 ; BUCHF: LD E,0 ;** F ** MM17: CALL XEP1 CALL XEP2 LD A,H CP B JR NZ,MM18 LD B,0 LD D,C LD C,H MM19: CALL KONTH LD A,D ADD 5 LD D,A CP L JR C,MM19 JR Z,MM19 MM21: JP ANF MM18: LD C,B LD B,0 LD D,L MM20: CALL KONTH LD A,C ADD 5 LD C,A CP H JR C,MM20 JR Z,MM20 JR MM21 ; BUCHX: CALL MMS ;** X ** MM23: LD E,2 CALL PKT OR A JR NZ,MM22 DEC E CALL PKT MM29: INC C JR NZ,MM23 INC D JR NZ,MM23 DEC D DEC C MM24: LD E,2 CALL PKT LD E,0 OR A JR NZ,MM25 INC E MM25: CALL PKT DEC C LD A,-1 CP C JR NZ,MM24 DEC D CP D JR NZ,MM24 MM58: CALL PV1 DB OSTR DB CR DS 7,LF DB 0 JP ANF MM22: PUSH HL LD H,C LD L,D MM28: LD E,0 CALL PKT INC C JR Z,MM27 LD E,2 CALL PKT OR A JR NZ,MM28 MM27: DEC C LD A,C CP H JR Z,MM37 DEC A CP H JR Z,MM37 LD A,H LD E,L POP HL CALL AUSG JR NZ,MM29 JR MM24 MM37: POP HL JR MM29 ; BUCHY: CALL MMS ;** Y ** MM26: LD E,2 CALL PKT OR A JR NZ,MM30 DEC E CALL PKT MM35: INC D JR NZ,MM26 INC C JR NZ,MM26 MM42: DEC D DEC C MM32: LD E,2 CALL PKT LD E,0 OR A JR NZ,MM31 INC E MM31: CALL PKT DEC D LD A,-1 CP D JR NZ,MM32 DEC C CP C JR NZ,MM32 MM39: JR MM58 MM30: PUSH HL LD H,C LD L,D MM34: LD E,0 CALL PKT INC D JR Z,MM33 LD E,2 CALL PKT OR A JR NZ,MM34 MM33: DEC D LD A,D CP L JR Z,MM36 DEC A CP L JR Z,MM36 LD A,H LD E,L POP HL CALL AUSG JR NZ,MM35 JR MM32 MM36: POP HL JR MM35 ; BUCHI: LD D,0 ;** I ** LD BC,0 MM38: LD E,2 CALL PKT LD H,A LD A,-1 SUB C LD C,A CALL PKT LD L,A LD E,H CALL PKT LD A,-1 SUB C LD C,A LD E,L CALL PKT INC C LD A,080H CP C JR NZ,MM38 INC D LD C,0 JR NZ,MM38 JR MM39 ; BUCHZ: CALL MMS ;** Z ** MM41: LD E,2 CALL PKT OR A JR NZ,MM40 LD E,1 CALL PKT MM45: INC D JR NZ,MM41 INC C JR NZ,MM41 MM44: JP MM42 MM40: PUSH HL LD H,C LD L,D LD E,0 CALL PKT INC D JR Z,MM43 LD E,2 CALL PKT OR A JR Z,MM43 INC C CALL PKT OR A JR Z,MM43 DEC D CALL PKT OR A JR Z,MM43 LD C,H LD D,L LD A,H LD E,L POP HL CALL MM66 JR NZ,MM45 JP MM32 MM43: LD C,H LD D,L POP HL JR MM45 ; BUCHU: LD HL,PIX ;** U ** LD A,AHIL4 MM46: LD (HL),0 INC HL CP H JR NZ,MM46 JP ANF ; BUCHQ: CALL PLATZ ;** Q ** LD D,C LD C,B LD B,0 M555: CALL KURSO LD E,1 CP LIH JR Z,LLG CP REH JR Z,RRG CP UNV JR Z,UUG CP OBV JR Z,OOG CP LUS JR Z,LLU CP LOS JR Z,LLO CP ROS JR Z,RRO CP RUS JR Z,RRU DEC E CP SLIH JR Z,LLG CP SREH JR Z,RRG CP SUNV JR Z,UUG CP SOBV JR Z,OOG CP SLUS JR Z,LLU CP SLOS JR Z,LLO CP SROS JR Z,RRO CP SRUS JR Z,RRU CP 'E' JP Z,MM58 JR M555 LLG: CALL PKT DEC C JR M555 RRG: CALL PKT INC C JR M555 UUG: CALL PKT DEC D JR M555 OOG: CALL PKT INC D JR M555 LLU: CALL PKT DEC C DEC D JR M555 LLO: CALL PKT INC D DEC C JR M555 RRO: CALL PKT INC D INC C JR M555 RRU: CALL PKT INC C DEC D JP M555 ; BUCHP: CALL PV1 ;** P ** DB KBD CP 0DH JR Z,MBP1 CALL PV1 DB CRT JR BUCHP MBP1: LD BC,020CH LD HL,INTAB OTIR LD BC,060AH OTIR EI LD B,7 MBP2: LD A,(HL) INC HL CALL AUSDR DJNZ MBP2 LD DE,0FF02H LD B,8 LD HL,TAB1 MBP3: LD A,(HL) CALL AUSDR INC HL DJNZ MBP3 LD HL,TAB4 LD B,4 MBP4: LD A,(HL) CALL AUSDR INC HL DJNZ MBP4 MBP10: LD BC,0 MBP8: LD H,0 CALL PKT OR A JR Z,MBP5 LD A,H ADD 060H LD H,A MBP5: DEC D CALL PKT OR A JR Z,MBP6 LD A,H ADD 018H LD H,A MBP6: DEC D CALL PKT OR A JR Z,MBP7 LD A,H ADD 6 LD H,A MBP7: LD A,H CALL AUSDR LD A,B OR A JR NZ,MBP12 LD A,H CALL AUSDR MBP12: INC D INC D INC BC LD HL,013FH XOR A SBC HL,BC JR NC,MBP8 LD B,0EH LD HL,TAB2 MBP11 LD A,(HL) CALL AUSDR INC HL DJNZ MBP11 LD A,-1 DEC D CP D JR Z,MBP9 DEC D CP D JR Z,MBP9 DEC D CP D JR NZ,MBP10 MBP9: JP ANF ; AUSDR: PUSH AF DR2: IN A,(0AH) BIT 2,A JR NZ,DR1 CALL PV1 DB 0CH JR NC,DR2 POP AF POP HL JP ERROR DR1: POP AF OUT (8),A RET ;----------------------- INTAB: DB 7 DB 92 DB 4 DB 7 DB 3 DB 61H DB 5 DB 2AH DB 1BH DB 5BH DB 30H DB 20H DB 4BH TAB1: DB 0DH DB 0AH DB 7FH DB 1BH DB 5BH DB 30H DB 31H DB 61H TAB2: DB 1BH DB 5BH DB 30H DB 31H DB 65H DB 1BH DB 5BH DB 37H DB 38H DB 71H TAB4: DB 1BH DB 4BH DB 40H DB 2 ; ; ;*************************************** ; ; ZEIGERTABELLE ; ;*************************************** ; ; TAB: DW BUCHA DW BUCHB DW END DW BUCHD DW BUCHE DW BUCHF DW BUCHG DW BUCHH DW BUCHI DW ERROR DW BUCHK DW BUCHL DW BUCHM DW ERROR DW ERROR DW BUCHP DW BUCHQ DW BUCHR DW BUCHS DW BUCHT DW BUCHU DW ERROR DW BUCHW DW BUCHX DW BUCHY DW BUCHZ * TAB:& TAB4: TAB2: TAB1: INTAB: DUCHS DW BUCHT DW BUCHU DW ERROR DW BUCHW DW BUCHX DW BUCHY DW BUCHZ * TAB:& TAB4: TAB2: TAB1: INTAB: D