;**************************************************************************** ; Hex editor by Noah Stein ; Version 1.3 ; Released October 29, 1997 ; Ported to the 92 Plus by Art Hendrickson III. ; Ported to PlusShell by Rusty Wagner ;**************************************************************************** include "92plus.h" include "util.h" include "hexlib.h" xdef _main xdef _comment _main: move.w #1,-(a7) jsr tios::FontSetSys lea 2(a7),a7 jsr flib::clr_scr bra scrollv1 scrollv: jsr flib::idle_loop cmp.w #344,d0 beq vup cmp.w #338,d0 beq vdown cmp.w #4440,d0 beq vbup cmp.w #4434,d0 beq vbdown cmp.w #268,d0 beq storebookmark cmp.w #269,d0 beq jumpbookmark cmp.w #13,d0 beq findc cmp.w #264,d0 beq end scrollv1: bsr scrollvp bra scrollv scrollvp: movem d0/d1/d2/d4/a0,-(a7) moveq #14,d7 scrollv2: lea position(PC),a0 move.l (a0),d0 move.l d7,d5 moveq #14,d1 sub.l d5,d1 move.l d1,d6 mulu #8,d6 add.l d6,d0 moveq #0,d2 moveq #4,d4 jsr hexlib::put_hex move.l d0,a0 move.l (a0),d0 moveq #6,d2 moveq #7,d4 jsr hexlib::put_hex move.l 4(a0),d0 moveq #14,d2 jsr hexlib::put_hex bsr asciiview dbra d7,scrollv2 movem (a7)+,d0/d1/d2/d4/a0 rts asciiview: movem d0-d7/a0-a1,-(a7) moveq #3,d7 lea ascii(PC),a1 mulu #8,d1 asciiview2: moveq #3,d6 sub.b d7,d6 mulu #2,d6 move.w 0(a0,d6.w),d0 ror.w #8,d0 cmp.b #$0,d0 beq dot1 asciiview3: rol.w #8,d0 cmp.b #$0,d0 beq dot2 asciiview4: move.w d0,0(a1,d6.w) dbra d7,asciiview2 move.w #4,-(a7) pea ascii(PC) move.w d1,-(a7) move.w #184,-(a7) jsr tios::DrawStrXY lea 10(a7),a7 movem (a7)+,d0-d7/a0-a1 rts dot1: move.b #46,d0 bra asciiview3 dot2: move.b #46,d0 bra asciiview4 vup: lea position(PC),a0 add.l #$78,(a0) bra vupcheck vbup: lea position(PC),a0 add.l #$F00,(a0) bra vupcheck vupcheck: lea position(PC),a0 cmp.l #$3FF88,(a0) bls scrollv1 lea position(PC),a0 move.l #$3FF88,(a0) bra scrollv1 vdown: lea position(PC),a0 sub.l #$78,(a0) bra vdowncheck vbdown: lea position(PC),a0 sub.l #$F00,(a0) bra vdowncheck vdowncheck: lea position(PC),a0 cmp.l #$40000,(a0) bls scrollv1 lea position(PC),a0 move.l #0,(a0) bra scrollv1 storebookmark: lea position(PC),a0 lea bookmark(PC),a1 move.l (a0),(a1) bra scrollv1 jumpbookmark: lea position(PC),a0 lea bookmark(PC),a1 move.l (a1),(a0) bra scrollv1 findc: bsr scrollvp findc1: bsr highlight findc2: jsr flib::idle_loop cmp.w #338,d0 beq cup cmp.w #340,d0 beq cright cmp.w #344,d0 beq cdown cmp.w #337,d0 beq cleft cmp.w #13,d0 beq edit cmp.w #264,d0 beq _main bra findc2 highlight: movem d0/a0,-(a7) move.w x(PC),a0 move.w y(PC),d0 add.l #6,a0 add.l #LCD_MEM,a0 mulu #240,d0 add.l d0,a0 moveq #7,d0 highlight1: not.w (a0) add.l #30,a0 dbra d0,highlight1 movem (a7)+,d0/a0 rts cup: bsr highlight lea y(PC),a0 move.w (a0),d0 sub.w #1,(a0) cmp.w #14,(a0) bls findc1 move.w #14,(a0) bra findc1 cdown: bsr highlight lea y(PC),a0 move.w (a0),d0 add.w #1,(a0) cmp.w #14,(a0) bls findc1 move.w #0,(a0) bra findc1 cleft: bsr highlight lea x(PC),a0 move.w (a0),d0 sub.w #2,(a0) cmp.w #14,(a0) bls findc1 move.w #14,(a0) bra findc1 cright: bsr highlight lea x(PC),a0 move.w (a0),d0 add.w #2,(a0) cmp.w #14,(a0) bls findc1 move.w #0,(a0) bra findc1 edit: clr.l d6 clr.l d1 move.w x(PC),d6 move.w y(PC),d1 divu #2,d6 mulu #8,d1 move.l d6,d2 andi.w #$FFFE,d2 move.l position(PC),a0 add.l d2,a0 add.l d1,a0 clr.l d3 move.w (a0),d3 cmp.w d2,d6 bhi editodd asr.w #8,d3 edit2: clr.l d6 move.b d3,d6 moveq #1,d4 move.l a0,-(a7) edit3: moveq #6,d2 add.w x(PC),d2 move.w y(PC),d1 move.l d6,d0 jsr hexlib::put_hex bsr highlight jsr flib::idle_loop cmp.w #338,d0 beq editup cmp.w #344,d0 beq editdown cmp.l #4434,d0 beq editbup cmp.l #4440,d0 beq editbdown cmp.w #13,d0 beq editenter cmp.w #264,d0 beq editesc bra edit3 editesc: lea 4(a7),a7 editup: add.b #1,d6 bra edit3 editdown: sub.b #1,d6 bra edit3 editbup: add.b #16,d6 bra edit3 editbdown: sub.b #16,d6 bra edit3 editenter: move.l (a7)+,a0 clr.l d1 clr.l d2 clr.l d5 add.l #$40000,a0 move.w x(PC),d1 divu #2,d1 move.w (a0),d5 move.w d1,d2 andi #$FFFE,d2 cmp.w d2,d1 bhi enterodd asl.w #8,d6 andi #$00FF,d5 add.w d6,d5 move.w d5,(a0) bra findc enterodd: andi #$FF00,d5 add.w d6,d5 move.w d5,(a0) bra findc editodd: andi.w #$00FF,d3 bra edit2 end: rts position ds.l 1 bookmark ds.l 1 x dc.w 0 y dc.w 0 ascii ds.b 10 _comment: dc.b "Hex Editor by Noah Stein",0 end