;****************** ;* PORTVIEW * ;* 1987 by M.A. * ;****************** ; .z80 aseg org 100h ; ; spalte equ 80d ; Position d. Anzeige reihe equ 00d port equ 0fdh ; Port (Druckerstatus) ; vektor equ 0fea7h neuint equ 0f500h ; Start der neuen I-R ; ; .phase neuint ; ; -- Verbiegen des Vektors -- ; di ; einschalten ld hl,(vektor) ld (oldint),hl ld hl,routine ld (vektor),hl ei ret ; ; _OFF: ; di ; ausschalten ld hl,(oldint) ld (vektor),hl ei ret ; ; -- Neue Routine -- ; routine: di push af ; Register retten push bc push de push hl ; ld hl,count ; (nicht zu oft...) inc (hl) jp nz,exit ; in a,(0f1h) ; Memory Map retten ld h,a in a,(0f2h) ld l,a push hl ; ld a,81h ; Screen Environment out (0f1h),a ld a,82h out (0f2h),a ; call display ; Anzeige aufrufen ; pop hl ; restore Memory Map ld a,l out (0f2h),a ld a,h out (0f1h),a ; exit: pop hl ; restore Register pop de pop bc pop af ; jp 1e40h ; Standard-ISR ; ; ; ; -- Displayroutine -- ; display: ld b,08h ; 8 Zeichen ld e,spalte ; Startpositionen ld d,reihe in a,(port) ; anzuzeigender Wert ; loop: push bc push de ld hl,offmat rla jr nc,noton ; Bit gesetzt? ld hl,onmat noton: push af push hl ; ld a,d ; calc & copy ld d,0 ; frei nach M. Uphoff rlca ; PCI 6/87... rla rla rla ld l,a ld a,d adc a,0b6h ld h,a ld a,(hl) inc hl ld h,(hl) ld l,a ex de,hl add hl,hl add hl,hl add hl,de add hl,hl ex de,hl pop hl ld bc,8 ldir ; pop af pop de pop bc inc e djnz loop ; 8 Zeichen ret ; oldint: ds 8 ; alter IR-Vektor count: ds 1 ; Z{hler ; ; Zeichenmatrix (Sonderzeichen) ; offmat: db 38h,6ch,0c6h,0c6h,6ch,38h,0,0ffh onmat: db 18h,38h,18h,18h,18h,7eh,0,0ffh ; prgend: ; end