.nolist #include "ion.inc" ;altered so I don't have to redefine equates #include "ti83plus.inc" ;altered to be compatible with tasm not zilog .list .org progstart-2 .db $BB,$6D xor a jr nc,Start string: .db "physics",0 Start: di ld hl,map_data ld (savesscreen),hl ld b,(190-64)/2 outer: push bc ld a,96 ld b,0 loop: cp 96-64 jp z,done dec a push af push bc ld d,0 ld e,b sra b add a,b ld h,d ld l,e add hl,hl add hl,de add hl,hl add hl,hl ld de,plotsscreen ex de,hl add hl,de ld ix,(savesscreen) add ix,de push af sra a\ sra a ld b,a add a,a add a,b add a,a add a,a neg ld e,a ld d,-1 add ix,de pop af push af ld b,a ld a,96 sub b sra a ld c,a pop af call scale pop bc inc b pop af jr loop done: call ionfastcopy ld hl,(savesscreen) ld de,24 add hl,de ld (savesscreen),hl pop bc djnz outer ret #macro repeatcode( num ) rlc c rrc c rl d add a,e jp nc,++_ rlc c ex af,af' rlca jp nc,+_ inc ix ld c,(ix) _: ex af,af' _: #if num>1 repeatcode( eval(num-1) ) #endif #endmacro ;---------------------- ;A = the line width of the original image to scale into 96 pixels ;C = the x origin to scale from ;B = the y origin to scale from ;HL = target ;IX = source Scale: push af push hl ld a,c srl c srl c srl c ld l,b ld b,0 add ix,bc and 7 ld e,a pop hl pop af ld b,96 call FractionToFix8 ld a,e ld e,c donewline: ex af,af' ld a,1 ex af,af' ld c,(ix) ld d,0 or a jp z,skipintial intialskip: rlc c push af ld a,d add a,e ld d,a pop af ex af,af' rlca ex af,af' dec a jp nz,intialskip skipintial: ld b,12 ld a,d pixelloop: repeatcode(8) ld (hl),d inc hl dec b jp nz,pixelloop ret FractionToFix8: Frac: sla c add a,a jr c,$+5 cp b jr c,$+4 sub b inc c sla c add a,a jr c,$+5 cp b jr c,$+4 sub b inc c sla c add a,a jr c,$+5 cp b jr c,$+4 sub b inc c sla c add a,a jr c,$+5 cp b jr c,$+4 sub b inc c sla c add a,a jr c,$+5 cp b jr c,$+4 sub b inc c sla c add a,a jr c,$+5 cp b jr c,$+4 sub b inc c sla c add a,a jr c,$+5 cp b jr c,$+4 sub b inc c sla c add a,a ret c cp b ret c sub b inc c ret .echo $-scale map_data: #include map.bmp