title Reassembler name ('REASS') ; The loader part of the disassembler REASS ; This part moves the kernel into high memory ; DASMed by W.Cirsovius BDOS equ 0005h TPATOP equ BDOS+1 .string equ 9 ff equ 0ch eot equ '$' ld bc,BitMap-Kernel; Set length of code to be moved ld hl,(TPATOP) ; Get top of memory ld a,h sub 3 ; Let some space ld h,a push bc xor a sbc hl,bc ; Calculate start push hl push hl pop iy ; Get start address ld de,Kernel ; Init pointer to code ex de,hl ldir ; Unpack code push hl pop ix ; Get relocation map ld e,0 ; Init bit count pop hl pop bc NxtReloc: ld a,b or c ; Test done jr z,MoveRdy ; Yeap dec bc ld a,e and 00000111b ; Test byte boundary jr nz,SkpReloc ; Nope ld d,(ix+0) ; Get relocation bits inc ix SkpReloc: rl d ; Get bit jr nc,NoReloc ; Not to be relocated ld a,(iy-1) add a,l ; Relocate word ld (iy-1),a ld a,(iy+0) adc a,h ld (iy+0),a NoReloc: inc iy ; Advance address inc e ; Update bit count jr NxtReloc ; Try next MoveRdy: push hl ; Save start address ld de,$INISCR ld c,.string call BDOS ; Give control message pop hl jp (hl) ; $INISCR: db ff,eot ; ds 174 ; Filler for page boundary ; ; Start of code to be moved into high memory ; Kernel: ds 4480 ; The real disassembler code ; ; Relocation table ; BitMap: db 00100000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00010000b,00001000b,00000000b,00000100b,00000010b db 00000000b,10000000b,00000000b,00100000b,10000000b,00001000b,00000010b db 00000001b,00000001b,00001000b,10001000b,00000100b,00000000b,00000000b db 00000000b,10000000b,10000000b,01000000b,00000000b,00000000b,00000100b db 10000001b,00000000b,00000000b,00000000b,00000000b,00000100b,00000010b db 00010001b,00001000b,00000010b,00000000b,00000000b,00000000b,00010000b db 00000100b,00000000b,10000000b,00001000b,01000010b,00010000b,00100100b db 10000000b,00000000b,00000100b,10000010b,00000100b,00000000b,00000010b db 00000000b,00100000b,00001000b,01000000b,00000000b,00000000b,00010000b db 00001000b,00000000b,00000000b,00010000b,00000000b,00000000b,00000000b db 00000000b,00000000b,01000000b,00000000b,00001000b,10000000b,00000000b db 00000000b,00000010b,00000000b,00100000b,00000000b,01000000b,01000100b db 10010000b,00000000b,00100000b,01000000b,01000000b,00000000b,00000000b db 00000000b,00100000b,00000000b,10000000b,00000100b,00000100b,10000001b db 00100100b,10000010b,01000100b,10000000b,00010000b,00001000b,01001001b db 00100100b,10010010b,00100100b,00000010b,00000000b,00000000b,00001000b db 00010000b,00000000b,10000010b,00010001b,00000001b,00100000b,00000000b db 00100000b,01000010b,00000010b,01000100b,10010001b,00001000b,00100001b db 00000010b,00000000b,01000000b,10010001b,00001000b,01000100b,01001000b db 01001000b,00100000b,00100001b,00001001b,00100000b,01001001b,00000000b db 00100000b,00000100b,00000100b,00010000b,10010010b,00000000b,00000000b db 00000000b,00100000b,01000000b,01000010b,01000000b,01000100b,00001000b db 00001000b,00000000b,00000000b,10001000b,01000000b,00100100b,01000100b db 00000001b,00010010b,01000000b,00000000b,00000000b,00001001b,00100000b db 01000000b,00100000b,10010000b,00001000b,00000100b,10000100b,00000001b db 00100000b,01000100b,00000100b,10000001b,00100001b,00010010b,01001001b db 00000000b,00001000b,00000000b,00000000b,00000000b,00100100b,10000100b db 10000010b,01000000b,00000000b,00000000b,00000001b,00000010b,00000001b db 00100000b,10000000b,00000010b,00000000b,00001001b,00100010b,00001000b db 00000100b,10000000b,00000000b,00000001b,00100100b,10001001b,00100001b db 00000000b,00000000b,00100000b,00100010b,01001000b,00000000b,00100000b db 00100000b,00100100b,00100100b,00000100b,10001001b,00000100b,10010000b db 00000000b,00000000b,00010010b,00010000b,00001000b,10000000b,00000100b db 10010010b,00100000b,01000010b,00100000b,00001000b,01000000b,00000000b db 01001001b,00100100b,10000100b,00000010b,00010010b,00000000b,00000100b db 00100000b,00000000b,00000000b,00000010b,00000001b,00100000b,00000000b db 10000010b,01000100b,00010010b,00000001b,00100001b,00100000b,10010010b db 00100100b,00000100b,00000100b,01000000b,00000000b,00000000b,00100001b db 00000001b,00000001b,00010010b,01001001b,00100001b,00000010b,00010000b db 01000100b,00000100b,00010010b,00000010b,01000100b,00000100b,00000000b db 01000000b,00000000b,00000000b,10010010b,01000000b,00010000b,10000100b db 00100100b,10000100b,10000000b,10000000b,10010000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000001b,00100000b,01000000b db 10000100b,10000000b,00000010b,00000000b,00000100b,00000100b,10001000b db 01000000b,00100010b,01000010b,00100000b,01001000b,01000000b,01000010b db 01000010b,00000100b,00100100b,10001000b,01000000b,10010001b,00100001b db 00001000b,00010000b,01000000b,10010000b,10000001b,00100010b,00010000b db 10000000b,00100100b,00010000b,00100100b,10000000b,01000010b,00000001b db 00000010b,00000100b,00100100b,10000000b,00010010b,01001000b,00000000b db 00100010b,00001000b,00001000b,00010000b,01001001b,00001000b,00100100b db 10010010b,00000001b,00100100b,10000000b,10010010b,00000000b,10000100b db 00000010b,00000000b,10000100b,10010000b,10000010b,00000100b,00100000b db 01001001b,00100000b,00000100b,00001001b,00000000b,00100100b,00100100b db 00010000b,10000000b,10010000b,10000001b,00100001b,00000000b,10000001b db 00100100b,10000100b,00001001b,00001000b,01000000b,10010000b,00000001b db 00001000b,00010000b,00100000b,00100001b,00100000b,01001001b,00100100b db 00100000b,10010010b,01001000b,00001000b,00010000b,00100100b,00100010b db 00000010b,01001000b,00000100b,10010000b,00000000b,00000000b,00000000b db 10010001b,00001001b,00100100b,01000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000100b,00000000b,00000000b,00000010b,00010001b,00001001b,00010010b db 01001000b,00000000b,00000000b,00000000b,00000100b,01000000b,00100001b db 00001000b,00100100b,10010010b,00010000b,00000100b,10000000b,00000000b db 00000000b,00000000b,00000000b,00010000b,00010000b,10000000b,00010001b db 00001001b,00100100b,00000000b,10000000b,00000010b,00000000b,00000000b db 01001000b,00010000b,01000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b,00000000b,00000000b,00000000b,00000000b db 00000000b,00000000b,00000000b end