@program prog_code,prog_name ;**************************************************************************** ; Hex editor by Noah Stein ; Version 1.1 ; Released October 29, 1997 ;**************************************************************************** prog_code: move.w #1,-(a7) jsr romlib[set_font] lea 2(a7),a7 bsr clrscr 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 #15,d7 scrollv2: lea position(PC),a0 move.l (a0),d0 move.l d7,d5 moveq #15,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 romlib[puttext] 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 #$80,(a0) bra vupcheck vbup: lea position(PC),a0 add.l #$1000,(a0) bra vupcheck vupcheck: lea position(PC),a0 cmp.l #$1FF80,(a0) bls scrollv1 lea position(PC),a0 move.l #$1FF80,(a0) bra scrollv1 vdown: lea position(PC),a0 sub.l #$80,(a0) bra vdowncheck vbdown: lea position(PC),a0 sub.l #$1000,(a0) bra vdowncheck vdowncheck: lea position(PC),a0 cmp.l #$20000,(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 prog_code 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 #15,(a0) bls findc1 move.w #15,(a0) bra findc1 cdown: bsr highlight lea y(PC),a0 move.w (a0),d0 add.w #1,(a0) cmp.w #15,(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 clrscr: movem d0/a0,-(a7) move.l #$3BF,d0 move.l #LCD_MEM,a0 clrscr2: move.l #0,(a0)+ dbra d0,clrscr2 movem (a7)+,d0/a0 rts 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 prog_name: dc.b "Hex Editor by Noah Stein",0 reloc_open add_library flib add_library romlib add_library hexlib reloc_close end