; OVERF\RER GRAFIKK FRA SKJERM TIL PR: ORG 65031 ; legger assemblerprogrammet i poke-arean RAD EQU 65024 ; her ligger radnr. i grafikk-minnet FRA EQU 65026 ; adressen til kopi av grafikkminnedel TIL EQU 65028 ; adressen til string som printer mottar TELLE EQU 65030 ; loop-teller fra 1-4 LD BC,256 LD HL,(RAD) CALL 32765 ; se ABC BLADET nr. 4-5,1981 side 29 ; takk til Per Ahlin : Vi trenger slike tips LD IX,(FRA) LD DE,(TIL) LD B,1 START LD A,0 LD (TELLE),A RUTINE LD C,128 PUSH IX LD H,0 ; H er radteller TEST BIT 7,(IX) ; tester om pixel er satt i grafikkminnet JR NZ,SATT ; hvis pixel er satt hoppes til SATT BIT 6,(IX) ; hver pixel best}r av to bit JR NZ,SATT ; s} neste bit m} ogs} testes NULL SRL C ; deler C med 4 (to right-shift) RETUR SRL C INC H SLA (IX) ; shifter IX slik at de to neste bit kan testes SLA (IX) PUSH BC LD BC,64 ADD IX,BC ; |ker IX med 64 POP BC LD A,4 CP H ; er vi ferdig med de fire radene? JR NZ,TEST LD A,(DE) CP 12 JR NZ,IKKE LD A,8 LD (DE),A INC DE LD (DE),A DEC DE IKKE POP IX INC DE ; ferdig med en byte som printeren mottar INC DE INC B LD A,241 CP B ; ferdig med en print-rad JR Z,SLUTT ; hvis ferdig tilbake til BASIC og print rad LD A,(TELLE) ; p} printeren og hent ny rad fra grafikkminne ADD A,1 LD (TELLE),A CP 4 JR NZ,RUTINE INC IX ; flytter peker til neste byte som skal testes JR START SATT LD A,(DE) ADD A,C ; se EPSON-manual side 3-75, m i manual er DE SRL C ; 2 dot-wire for hver pixel ADD A,C LD (DE),A INC DE ; 2 print-byte for hver pixel LD (DE),A DEC DE JR RETUR SLUTT RET ; ny rad skal printes p} EPSON