GRZEI ASM; ; GRZEI.KCC - Gro~schrift mit Shift-CLR ; ; ------------------------------------- ; ;Arbeitszellen: ; FACT EQU 01DEH ;hor./vert. Faktor CNT EQU 01E0H ;hor./vert. Z{hler CSR EQU 01E2H ;int. Cursor OTB EQU 01E3H ;OUTAB-Zeiger 0/2 SIX EQU 01F0H ;IX-Belegung ; BUFFER EQU 0B760H ;Zeichenmuster HCADR EQU 0B799H CURSO EQU 0B7A0H CCTL0 EQU 0B7A6H OUTAB EQU 0B7B9H UOUT1 EQU 0B7BDH PV1 EQU 0F003H CRT EQU 00H TCIF EQU 33H ; ORG 0BC00H ; AUTO LD DE,14 ;??? ADD HL,DE JR GRZ1 DW 7F7FH DB 'GRZEI' DB 1 GRZ0 DI DEC SP DEC SP POP HL EI GRZ1 LD DE,GRZEI-GRZ0 ADD HL,DE LD (UOUT1+1),HL LD DE,HCOPY-GRZEI ADD HL,DE LD (HCADR),HL LD HL,0201H LD (FACT),HL LD (IX+OTB-SIX),0 LD HL,OTB LD (OUTAB),HL RET GRZEI LD C,A XOR A LD HL,(FACT) CP L RET Z ;L=0 CP H RET Z ;H=0 LD DE,(CURSO) LD A,C CP 20H JR NC,CHAR ;Zeichen CP 0DH JR Z,CRLF ;Enter CP 8 JR Z,LEFT ;links CP 9 JR Z,RIGHT ;rechts CP 0AH JR Z,NOT ;runter CALL PV1 DB CRT ;Steuerzeichen NOT RET HCOPY LD A,(IX+OTB-SIX) XOR 2 ;GRZEI ein/aus LD (IX+OTB-SIX),A RET ;nach rechts RIGHT LD A,L ADD A DEC A ADD E LD E,A CALL PV1 DB TCIF JR C,CRLF LD A,E SUB L INC A LD E,A CURSDE LD (CURSO),DE RET ;nach links LEFT LD A,E LD C,L SUB C LD E,A JR NC,CURSDE LD A,D SUB H NOP LD D,A LD E,-1 LFT1 LD A,E ADD C LD E,A CALL PV1 DB TCIF JR NC,LFT1 LD A,E SUB C SUB C INC A LD E,A JR CURSDE ;Zeichen anzeigen: CHAR LD A,E ADD L DEC A LD E,A CALL PV1 DB TCIF JR NC,CHAR1 CRLF LD B,H SLA B DEC B LD A,0DH CALL PV1 DB CRT LF1 LD A,0AH CALL PV1 DB CRT ;CUD DJNZ LF1 LD B,H DEC B NOP LF2 LD A,0BH CALL PV1 DB CRT ;CUU DJNZ LF2 CHAR1 LD A,(CURSO+1) LD (IX+CSR-SIX),A LD A,C LD DE,CCTL0 BIT 7,A JR Z,UBCCD INC E INC E INC E INC E ;CCTL2 RES 7,A UBCCD SUB 20H RET C ;Steuerzeichen LD HL,(CCTL0) PUSH HL ;CCTL merken CP 40H JR C,UBCDC INC E ;CCTL1/3 INC E SUB 20H UBCDC LD L,A LD H,0 ADD HL,HL ADD HL,HL ADD HL,HL EX DE,HL LD A,M INC HL LD H,M LD L,A ADD HL,DE ;HL=Zeichenadr. LD A,11H CALL PV1 ;PAGE-Modus DB CRT LD DE,BUFFER NOP PUSH DE LD BC,8 LDIR ;Copy Muster LD C,16 POP HL PUSH HL ADD HL,BC LD (CCTL0),HL POP HL LD C,(IX+FACT+1-SIX) LD (IX+CNT+1-SIX),C LD B,(IX+FACT-SIX) LD (IX+CNT-SIX),B LOOP1 PUSH HL PUSH DE PUSH BC LD B,8 LOOP2 PUSH BC LD C,8 XOR A LD B,(IX+CNT-SIX) LOOP3 RLC M RRC M RLA DEC C JR Z,LOOP4 DJNZ LOOP3 RLC M LD B,(IX+FACT-SIX) JR LOOP3 LOOP4 LD (DE),A DJNZ LOOP5 LD B,(IX+FACT-SIX) RLC M LOOP5 LD A,B INC HL INC DE POP BC DJNZ LOOP2 LD (IX+CNT-SIX),A NOP NOP NOP LD B,C LD C,8 LOOP6 PUSH BC LD B,(IX+CNT+1-SIX) PUSH DE LOOP7 LD A,M LOOP8 LD (DE),A DEC C JR Z,LOOP9 INC DE DJNZ LOOP8 INC HL LD B,(IX+FACT+1-SIX) JR LOOP7 LOOP9 DJNZ LOOP10 INC HL LD B,(IX+FACT+1-SIX) LOOP10 LD (IX+CNT+1-SIX),B PUSH HL LD HL,(CURSO) LD A,20H CALL PV1 DB CRT INC H LD (CURSO),HL POP HL POP DE POP BC DJNZ LOOP6 LD HL,CURSO INC M INC HL LD A,(IX+CSR-SIX) LD M,A POP BC POP DE POP HL DJNZ LOOP1 POP HL LD (CCTL0),HL LD A,12H ;Scroll CALL UOUT1 RET  À@Àt(Àp6ÀnTop of Text: End of Text: Start of MC: ASM-Offset : õÛˆö$ÓˆñÉõÛˆæÛÓˆñÉÍM LD A,12H ;Scroll CALL UOUT1 RET  À@Àt(Àp6ÀnTop of Text: End of Text: Start of MC: ASM-Offset : õÛˆö$ÓˆñÉõÛˆæÛÓˆñÉÍM