;Picture converter ;One of my worst coded progs!!! ;20/2/96 font: equ 33280-256 map: equ 35000 org 32768 jp intro ld hl,16384 ld bc,6144 init1: ld a,(hl) cpl ld (hl),a inc hl dec bc ld a,b or c jr nz,init1 ;Okay, now map out each char intro: ld hl,map ld (mapadd),hl ld b,0 ld c,0 ld (chrloc),bc ld ix,table mloop: ld (ix+4),c ld (ix+5),b call xypos1 call getck ret nc call getck1 ret nc ld b,(ix+5) ld c,(ix+4) inc c ld (ix+4),c ld a,c and 31 jr nz,mloop ld c,0 ld b,(ix+5) inc b ld a,b cp 23 jr nz,mloop ret getck: ld de,worksp ld b,8 getck0: ld a,(hl) ld (de),a inc h inc de djnz getck0 getck1: ld (ix+1),0 ld (ix+2),0 ld b,32 check0: push bc push de ld (ix+0),0 ld (ix+3),b ld hl,worksp ld de,works2 ld bc,8 ldir ld a,(ix+3) ld l,a ld h,0 add hl,hl add hl,hl add hl,hl ld bc,font add hl,bc ld de,works2 ex de,hl ;Check a character... ld c,8 check1: ld b,4 ld a,(de) check2: sla (hl) jr c,carry ;No carry sla a jr c,next inc (ix) jr next carry: sla a jr nc,next inc (ix) next: djnz check2 inc hl inc de dec c jr nz,check1 ;Finished checking our current ;character..is it a better match ld a,(ix+0) cp (ix+1) jr c,next1 ;Yes it is!!!! ld a,(ix+0) ld (ix+1),a ld a,(ix+3) ld (ix+2),a ;Loop back, pick up the next ;bugger.. next1: call 1F54h pop de pop bc ret nc inc b ld a,b cp 127 jr nz,check0 ld hl,(mapadd) ld a,(ix+2) ld (hl),a inc hl ld (mapadd),hl call print ld hl,works2 ld de,worksp ld bc,8 ldir scf ret chrloc: dw 0 mapadd: dw 0 worksp: ds 8,0 works2: ds 8,0 table: db 0 ;in work db 0 ;max db 0 ;char db 0 ;in work char db 0 ;c db 0 ;b ;Print routine print: ld l,a ld h,0 add hl,hl add hl,hl add hl,hl ld de,font add hl,de exx ld bc,(chrloc) call xypos ld a,240 jr c,gotpos ld a,15 gotpos: ld c,a exx cpl ld c,a ;c=char mask, hl=char addr ;c'=scr mask, hl'=scr addr ld b,8 char1: ld a,(hl) and c inc hl exx ; screen ld b,a ld a,(hl) and c or b ld (hl),a inc h exx djnz char1 exx cbak: ld bc,(chrloc) inc c bit 6,c jr z,char3 ld c,0 inc b ld a,b cp 24 jr nz,char3 ld b,23 push bc call 3582 pop bc char3: ld (chrloc),bc ld hl,10072 exx ret ;XY POS Calculator, ;Entry:bc=xy-pos ;Exit: hl=screen addr ; c if left col xypos: srl c xypos1: ex af,af' ld a,b and 248 add 64 ld h,a ld a,b and 7 rrca rrca rrca add c ld l,a ex af,af' ret db 'BITMAP > ASCII ' db 'CONVERTER (C) 20' db '.2.96 D.J.MORRIS' END