Its done !!
With many many help ...
... today my A1000 booted from a KickWork3.1 disk.
Kickstart3.1 inside a 256KB WOM.
scsi / card / carddisk overwritten with $FF
(useless on an A1000)
trackdisk enhanced with kickwork
crunched with lzma = 251KB
dc.w $1111 ; ROM-Header
jmp $00fc00d2
dc.l $0000ffff
dc.w $0028 ; OS-Version
dc.w $003f ; OS-Revision
dc.w $ffff ; there is no exec.lib
dc.w $ffff ; version/revision
dc.l $ffffffff
dc.b 0 ; ROM-Text
dc.b "AMIGA WOM Operating System ",0
dc.b " ",0
dc.b " ",0
dc.b " ",0
dc.b " ",0
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffffffff
dc.l $ffff4e70 ; RESET command
code:
lea.l $400,a7 ; temp.stack
clr.b $00bfe001 ; against trashed register
move.b #$03,$00bfe201 ; overlay and power-led
lea.l $00dff000,a4 ; chipset base address
move.w #$7fff,d0 ; clear all pattern
move.w d0,(a4,$009a) ; disable all interrupts
move.w d0,(a4,$009c) ; clear all interrupts
move.w d0,(a4,$0096) ; disable all dma
move.w #$0174,(a4,$0032) ; init ser-port 9600 baud
move.w #$0200,(a4,$0100) ; init display
move.w #$0000,(a4,$0110) ; init display
move.w #$0111,(a4,$0180) ; init display
memtest:
lea.l $00200000,a0 ; expansionmem-base
move.l (a0),d1 ; store memory
move.l #"KICK",(a0)
cmp.l #"KICK",(a0)
bne autoconfig
move.l #"WORK",(a0)
cmp.l #"WORK",(a0)
bne autoconfig
move.l d1,(a0) ; restore memory
bra good_hardware
autoconfig:
move.b #$20,$00e80048 ; activate the
move.b #$00,$00e8004a ; first expansion
move.l (a0),d1 ; store memory
move.l #"KICK",(a0)
cmp.l #"KICK",(a0)
bne bad_hardware
move.l #"WORK",(a0)
cmp.l #"WORK",(a0)
bne bad_hardware
move.l d1,(a0) ; restore memory
good_hardware:
bsr checksum
not.l d5
beq ready_to_go
bsr decrunch
lea.l $00200000,a0
bsr checksum
not.l d5
beq ready_to_go
bad_hardware:
move.w #$0f00,(a4,$0180) ; red screen
moveq #10,d1
moveq #-1,d0
pled_on:
bset.b #$0001,$00bfe001 ; power-led on
dbf d0,pled_on
lsr #2,d0
pled_off:
bclr.b #$0001,$00bfe001 ; power-led off
dbf d0,pled_off
dbf d1,pled_on
move.l #$00015000,d0
reset:
move.w #$0000,(a4,0$180) ; black screen
subq.l #1,d0
bgt.b reset
move.w #$4000,(a4,$009a)
lea.l $00f80002,a0
reset
jmp (a0) ; restart
ready_to_go:
jmp $00200002
checksum:
move.l #524288/4,d1 ; checksumtest for
moveq #0,d5 ; $200000-$27ffff
checksum_loop:
add.l (a0)+,d5
bcc checksum_test
addq.l #1,d5
checksum_test:
subq.l #1,d1
bne checksum_loop
rts
decrunch:
.
.
.