| Apple Profile/Widget reset-booter | SEE the NOTES file before you change anything | | There are two different rom read_block routines | one for the builtin parallel port the other | for the expansion slots. If its the built in | do a jsr to READ otherwise | on entry the stack has the address of the rom | routine that should be called | and in A0 is the logic base that needs to | remain there as one of the passed parameters | This code must be relocatable since it will | be loaded approximately 2k above its normal address READ = 0xFE0090 | rom read profile address BDEV = 0x1B3 | dev we were booted from USTART = 0x60000 | load address SSEC = 1 | starting disk sector LEN = 100 | sectors to load .globl _problk0 _problk0: start: movl sp@,a4 | where to call for rom read movw #0x2700,sr | spl7 movl #0x40000,sp | initialize stack pointer movl #USTART,a1 | where we want to load booter movl a1,a2 | addr to pass to rom (a1 and a2 are needed) subw #20,a1 | where rom will load header movl #LEN,d5 movl #SSEC,d1 | starting sector number cmpb #0x2,BDEV | boot device (setup by ROM) bgt .1$ | use expansion routines movl #READ,a4 | builtin parallel port read routine .1$: movl #0x1000,d2 | timeout count movl #10,d3 | retry count movl #3,d4 | threshold clrl d0 jsr a4@ | rom read routine tstb d0 | test results bne .2$ | print err message addl #512,a2 | update data pointer addql #1,d1 | next sector dbra d5,.1$ | read loop jmp USTART .2$: jmp 0xFE0084 | rom monitor