Ben non, tu as tout faux. Voilà quelques gemmes de la source de
PlusShell 1.0 alpha:
KernelNew:
clr.l ($40030)
SET_REL_RAM_DWORD #$3fff4,$2f,$104+$a
move.l $c8,d0
and.l #$600000,d0
move.l #$120e8,a0
add.l d0,a0
move.l #$40060,a1
move.l #7,d0
KernelNewLoop:
move.l (a0)+,(a1)+
dbra d0,KernelNewLoop
lea.l UninstallStringTag(pc),a0
rts
KernelCopyLoop:
move.b (a1)+,(a0)+
dbra d0,KernelCopyLoop
move.w #KERNEL_VER,($40030)
move.w #KERNEL_IDENT,($40032)
lea.l exec-_KernelStart(a2),a0
move.l a0,($40034)
lea.l Reloc-_KernelStart(a2),a0
move.l a0,($40038)
lea.l RelocFromPtr-_KernelStart(a2),a0
move.l a0,($4003c)
lea.l Unreloc-_KernelStart(a2),a0
move.l a0,($40040)
_main:
movem.l d1-d7/a0-a6,-(a7)
tst.w ($30)
beq KernelNotInstalled
clr.l ($40030)
installCrashRecover:
move.l ($40008),oldVect+0
move.l ($4000c),oldVect+4
move.l ($40010),oldVect+8
move.l ($40014),oldVect+$c
move.l ($4002c),oldVect+$10
move.l ($400ac),oldVect+$14
move.l ($400b0),oldVect+$18
move.l ($400b4),oldVect+$1c
move.l ($400b8),oldVect+$20
move.l ($400bc),oldVect+$24
move.l ($40064),oldVect+$28
move.l ($40068),oldVect+$2c
move.l ($4006c),oldVect+$30
move.l ($40070),oldVect+$34
move.l ($40074),oldVect+$38
move.l ($40078),oldVect+$3c
move.l ($4007c),oldVect+$40
move.l ($40028),oldVect+$44
move.l ($40084),oldVect+$48
move.l #crashBusError,($40008)
move.l #crashAddrError,($4000c)
move.l #crashIllegalError,($40010)
move.l #crashDivideError,($40014)
move.l #crashThrowError,($40028)
move.l #crashLine1111Error,($4002c)
move.l #crashTrap11Error,($400ac)
move.l #crashTrap12Error,($400b0)
move.l #crashTrap13Error,($400b4)
move.l #crashTrap14Error,($400b8)
move.l #crashTrap15Error,($400bc)
cmp.b #CALC_TI92PLUS,CALCULATOR
bne noCheckTerminate
move.l #checkTerminate,($40078)
noCheckTerminate:
move.l #crashMemoryError,($4007c)
move.l #newTrap1,($40084)
move.l #683,d7
move.l #newROMTable,a0
move.l $c8,a1
move.l a1,oldROMTable
romTableInstLoop:
move.l (a1)+,(a0)+
dbra d7,romTableInstLoop
move.l #newHeapAlloc,newROMTable+$240
move.l #newHeapAllocThrow,newROMTable+$24c
move.l #newHeapFree,newROMTable+$25c
move.l #newHeapFreeIndir,newROMTable+$260
move.l #newERThrow,newROMTable+$54c
move.l #newROMTable,($400c8)
move.l #0,handlecount
rts
(Voilà la perle, il utilise le hack même pour lire!)
deinstallCrashRecover:
move.l oldROMTable,($400c8)
move.l oldVect+0,a0
move.l a0,($40008)
move.l oldVect+4,a0
move.l a0,($4000c)
move.l oldVect+8,a0
move.l a0,($40010)
move.l oldVect+$c,a0
move.l a0,($40014)
move.l oldVect+$10,a0
move.l a0,($4002c)
move.l oldVect+$14,a0
move.l a0,($400ac)
move.l oldVect+$18,a0
move.l a0,($400b0)
move.l oldVect+$1c,a0
move.l a0,($400b4)
move.l oldVect+$20,a0
move.l a0,($400b8)
move.l oldVect+$24,a0
move.l a0,($400bc)
move.l oldVect+$3c,a0
move.l a0,($40078)
move.l oldVect+$40,a0
move.l a0,($4007c)
move.l oldVect+$44,a0
move.l a0,($40028)
move.l oldVect+$48,a0
move.l a0,($40084)
move.w #$980,$600010
rts
CrashRecover:
move.l oldVect+$28,a0
move.l a0,($40064)
move.l oldVect+$2c,a0
move.l a0,($40068)
move.l oldVect+$30,a0
move.l a0,($4006c)
move.l oldVect+$34,a0
move.l a0,($40070)
move.l oldVect+$38,a0
move.l a0,($40074)
move.l oldVect+$3c,a0
move.l a0,($40078)
C'était en octobre 1998, ça. TIGCC a été créé en juillet 1999. Donc voilà, c'est bien des kernels que vient ce hack, pas de nous!