Falcon TOS EPROM?

Hardware, coding, music, graphic and various applications

Moderators: Mug UK, [ProToS], lp, moondog/.tSCc., Moderator Team

ThorstenOtto
Captain Atari
Captain Atari
Posts: 449
Joined: Sun Aug 03, 2014 5:54 pm

Re: Falcon TOS EPROM?

Postby ThorstenOtto » Wed Oct 10, 2018 8:33 am

joska wrote:Compilable sources for 4.04 are floating around on the net


Do you know where by chance? lp has some archive on dev-docs, but that is incomplete at best.

Nova VDI sources are out there as well


Can't find that either.

I guess the CPLD's are "NOP-ing" the PMMU instructions.


Aranym does some patches on the fly. I recently formatted and disassembled them to make them readable again:

Code: Select all


/* 00005a */
static unsigned char const romdiff_0[10] = {
    0x4d, 0xfa, 0x00, 0x08,                         /* move.l #$00000808,d0         lea.l     $00E00064(pc),a6 */
    0x4e, 0xf9, 0x00, 0xe7, 0xb0, 0x00              /* movec d0,cacr                jmp       $00E7B000 */
};
/* 00006a */
static unsigned char const romdiff_1[24] = {
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l   $00E49430,tc       nops */
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l   $00E49430,tt0      nops */
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71  /* pmove.l   $00E49430,tt1      nops */
};
/* 0003c4: patch for cpu type detection  */
static unsigned char const romdiff_2[58] = {
    0x20, 0xfc, 0x00, 0x00, 0x00, 0x28,             /* moveq.l   #0,d1              move.l    #$00000028,(a0)+ */
                                                    /* movea.w   #$0010,a2 */
    0x4e, 0x71,                                     /* movea.l   (a2),a3            nop */
    0xf5, 0x18,                                     /* movea.l   a7,a1              pflusha */
    0x4e, 0x71,                                     /* move.l    #$00E003F8,(a2)    nop */
    0x20, 0xfc, 0x5f, 0x5f, 0x4e, 0x46,             /*                              move.l    #$5F5F4E46,(a0)+ */
                                                    /* move.w    ccr,d0 */
    0x20, 0xfc, 0x00, 0xe7, 0xb1, 0x90,             /* moveq.l   #10,d1             move.l    #$00E7B190,(a0)+ */
                                                    /* extb.l    d0 */
                                                    /* moveq.l   #20,d1 */
    0x4e, 0x71, 0x4e, 0x71,                         /* movec     cacr,d0 */
    0x4e, 0x71, 0x4e, 0x71,                         /* bset      #9,d0 */
    0x4e, 0x71, 0x4e, 0x71,                         /* movec     d0,cacr */
    0x4e, 0x71, 0x4e, 0x71,                         /* movec     cacr,d0 */
    0x4e, 0x71, 0x4e, 0x71,                         /* bclr      #9,d0 */
    0x4e, 0x71,                                     /* beq.s     $00E003F8 */
    0x4e, 0x71,                                     /* moveq.l   #30,d1 */
    0x4e, 0x71, 0x4e, 0x71,                         /* movec     d0,cacr */
    0x4e, 0x71,                                     /* movea.l   a1,a7 */
    0x4e, 0x71,                                     /* move.l    a3,(a2) */
    0x4e, 0x71                                      /* move.l    d1,(a0)+ */
};
/* 00063e */
static unsigned char const romdiff_3[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nops */
};
/* 000756 */
static unsigned char const romdiff_5[10] = {
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71,             /* move.l #$00000808,d0         nops */
    0xf4, 0xf8, 0x4e, 0x71                          /* movec  d0,cacr               cpusha bc; nop */
};
/* 000860 */
static unsigned char const romdiff_6[14] = {
    0x4e, 0x71, 0xf4, 0xf8,                         /* movec     cacr,d0            nop; cpusha bc */
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71,             /* or.l      #$00000808,d0      nops */
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nops */
};
/* 000974 */
static unsigned char const romdiff_7[4] = {
    0xa0, 0x00, 0x71, 0x04                          /* movea.l   ($0000047A).w,a0   aline #0; dc.w $7104 EmulOp(M68K_EMUL_INIT) */
};
/* 0014e6 */
static unsigned char const romdiff_8[32] = {
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.q   $00E4995A,crp      nops */
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l   $00E49962,tc       nops */
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l   $00E49966,tt0      nops */
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71  /* pmove.l   $00E4996A,tt1      nops */
};
/* 0018d0 */
static unsigned char const romdiff_9[12] = {
    0x4e, 0x71, 0xf4, 0xf8,                         /* movec     cacr,d1            nop; cpusha    bc */
    0x4e, 0x71, 0x4e, 0x71,                         /* ori.w     #$0808,d1          nops */
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d1,cacr            nops */
};
/* 001952 */
static unsigned char const romdiff_10[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nops */
};
/* 00398c */
static unsigned char const romdiff_11[6] = {
    0x4e, 0xf9, 0x00, 0xe7, 0xb0, 0xf4              /* move.w    #$2700,sr          jmp       $00E7B0F4 */
};
/* 003996 */
static unsigned char const romdiff_12[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nop; nop */
};
/* 0039a0 */
static unsigned char const romdiff_13[24] = {
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l   $00E49B92,tc       nops */
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, /* pmove.l   $00E49B92,tt0      nops */
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71  /* pmove.l   $00E49B92,tt1      nops */
};
/* 00990c */
static unsigned char const romdiff_14[12] = {
    0x4e, 0x71, 0xf4, 0x98,                         /* movec     cacr,d2            nop; cinva     ic */
    0x4e, 0x71, 0x4e, 0x71,                         /* bset      #3,d2              nops */
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d2,cacr            nops */
};
/* 011bd6 */
static unsigned char const romdiff_15[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nops */
};
/* 011c5e */
static unsigned char const romdiff_16[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d7,cacr            nops */
};
/* 011d5a */
static unsigned char const romdiff_17[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nops */
};
/* 0125c0 */
static unsigned char const romdiff_18[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d5,cacr            nops */
};
/* 012936 */
static unsigned char const romdiff_19[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d6,cacr            nops */
};
/* 012982 */
static unsigned char const romdiff_20[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d6,cacr            nops */
};
/* 0129e6 */
static unsigned char const romdiff_21[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d6,cacr            nops */
};
/* 012bfe */
static unsigned char const romdiff_22[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d5,cacr            nops */
};
/* 012c7e */
static unsigned char const romdiff_23[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d5,cacr            nops */
};
/* 012cf6 */
static unsigned char const romdiff_24[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d2,cacr            nops */
};
/* 012d74 */
static unsigned char const romdiff_25[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nops */
};
/* 012ddc */
static unsigned char const romdiff_26[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nops */
};
/* 012e9e */
static unsigned char const romdiff_27[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nops */
};
/* 017b54 */
static unsigned char const romdiff_28[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nops */
};
/* 017bec */
static unsigned char const romdiff_29[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d0,cacr            nops */
};
/* 0250d8 */
static unsigned char const romdiff_30[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d7,cacr            nops */
};
/* 044510 */
static unsigned char const romdiff_31[4] = {
    0x4e, 0x71, 0x4e, 0x71                          /* movec     d7,cacr            nops */
};
/* 07b000 */
static unsigned char const romdiff_32[420] = {
    0x40, 0xc7,                                     /* move.w    sr,d7 */
    0x00, 0x7c, 0x07, 0x00,                         /* ori.w     #$0700,sr */
    0x4e, 0x7a, 0x10, 0x06,                         /* movec     dtt0,d1 */
    0x70, 0x00,                                     /* moveq.l   #0,d0 */
    0x4e, 0x7b, 0x00, 0x02,                         /* movec     d0,cacr */
    0x4e, 0x71,                                     /* nop */
    0xf4, 0xd8,                                     /* cinva     bc */
    0x4e, 0x71,                                     /* nop */
    0x20, 0x3c, 0x00, 0xff, 0xe0, 0x40,             /* move.l    #$00FFE040,d0 */
    0x4e, 0x7b, 0x00, 0x06,                         /* movec     d0,dtt0 */
    0x4e, 0x71,                                     /* nop */
    0xf5, 0x18,                                     /* pflusha */
    0x4e, 0x71,                                     /* nop */
    0x7c, 0x00,                                     /* moveq.l   #0,d6 */
    0x4e, 0x7a, 0x08, 0x07,                         /* movec     srp,d0 */
    0x4a, 0x80,                                     /* tst.l     d0 */
    0x67, 0x32,                                     /* beq.s     $00E7B062 */
    0xb0, 0xbc, 0x05, 0x00, 0x00, 0x00,             /* cmp.l     #$05000000,d0 */
    0x64, 0x2a,                                     /* bcc.s     $00E7B062 */
    0xb0, 0xbc, 0x00, 0xe0, 0x00, 0x00,             /* cmp.l     #$00E00000,d0 */
    0x65, 0x08,                                     /* bcs.s     $00E7B048 */
    0xb0, 0xbc, 0x01, 0x00, 0x00, 0x00,             /* cmp.l     #$01000000,d0 */
    0x65, 0x1a,                                     /* bcs.s     $00E7B062 */
                                          /* e7b048 : */
    0x20, 0x40,                                     /* movea.l   d0,a0 */
    0x0c, 0xa8, 0x54, 0x52, 0x45, 0x45, 0xff, 0xe8, /* cmpi.l    #$54524545,-24(a0) */
    0x66, 0x00, 0x00, 0x0e,                         /* bne.w     $00E7B062 */
    0x0c, 0xa8, 0x4b, 0x45, 0x45, 0x50, 0xff, 0xec, /* cmpi.l    #$4B454550,-20(a0) */
    0x66, 0x02,                                     /* bne.s     $00E7B062 */
    0x7c, 0x01,                                     /* moveq.l   #1,d6 */
                                          /* e7b062 : */
    0x4e, 0x71,                                     /* nop */
    0x4e, 0x7b, 0x10, 0x06,                         /* movec     d1,dtt0 */
    0x4e, 0x71,                                     /* nop */
    0xf5, 0x18,                                     /* pflusha */
    0x4e, 0x71,                                     /* nop */
    0x4a, 0x86,                                     /* tst.l     d6 */
    0x67, 0x2e,                                     /* beq.s     $00E7B0A0 */
    0x20, 0x08,                                     /* move.l    a0,d0 */
    0x4e, 0x7b, 0x08, 0x07,                         /* movec     d0,srp */
    0x4e, 0x7b, 0x08, 0x06,                         /* movec     d0,urp */
    0x20, 0x3c, 0x00, 0x00, 0xc0, 0x00,             /* move.l    #$0000C000,d0 */
    0x4e, 0x7b, 0x00, 0x03,                         /* movec     d0,tc */
    0x70, 0x00,                                     /* moveq.l   #0,d0 */
    0x4e, 0x7b, 0x00, 0x04,                         /* movec     d0,itt0 */
    0x4e, 0x7b, 0x00, 0x05,                         /* movec     d0,itt1 */
    0x4e, 0x7b, 0x00, 0x06,                         /* movec     d0,dtt0 */
    0x4e, 0x7b, 0x00, 0x07,                         /* movec     d0,dtt1 */
    0x4e, 0x71,                                     /* nop */
    0xf5, 0x18,                                     /* pflusha */
    0x4e, 0x71,                                     /* nop */
    0x60, 0x32,                                     /* bra.s     $00E7B0D2 */
                                          /* e7b0a0 : */
    0x20, 0x3c, 0x00, 0xff, 0xe0, 0x00,             /* move.l    #$00FFE000,d0 */
    0x4e, 0x7b, 0x00, 0x04,                         /* movec     d0,itt0 */
    0x20, 0x3c, 0x00, 0xff, 0xe0, 0x40,             /* move.l    #$00FFE040,d0 */
    0x4e, 0x7b, 0x00, 0x06,                         /* movec     d0,dtt0 */
    0x70, 0x00,                                     /* moveq.l   #0,d0 */
    0x4e, 0x7b, 0x00, 0x05,                         /* movec     d0,itt1 */
    0x4e, 0x7b, 0x00, 0x07,                         /* movec     d0,dtt1 */
    0x70, 0x00,                                     /* moveq.l   #0,d0 */
    0x4e, 0x7b, 0x00, 0x03,                         /* movec     d0,tc */
    0x4e, 0x7b, 0x08, 0x07,                         /* movec     d0,srp */
    0x4e, 0x7b, 0x08, 0x06,                         /* movec     d0,urp */
    0x4e, 0x71,                                     /* nop */
    0xf5, 0x18,                                     /* pflusha */
    0x4e, 0x71,                                     /* nop */
                                          /* e7b0d2 : */
    0x20, 0x3c, 0x00, 0x00, 0x80, 0x00,             /* move.l    #$00008000,d0 */
    0x4e, 0x7b, 0x00, 0x02,                         /* movec     d0,cacr */
    0x46, 0xc7,                                     /* move.w    d7,sr */
    0x4e, 0xd6,                                     /* jmp       (a6) */
                                          /* e7b0e0 : */
    0x08, 0xb8, 0x00, 0x05, 0x82, 0x66,             /* bclr      #5,($FFFF8266).w */
    0x08, 0xb8, 0x00, 0x06, 0x82, 0x66,             /* bclr      #6,($FFFF8266).w */
    0x08, 0xb8, 0x00, 0x00, 0x82, 0x0a,             /* bclr      #0,($FFFF820A).w */
    0x4e, 0xd0,                                     /* jmp       (a0) */
                                          /* e7b0f4 : */
    0x00, 0x7c, 0x07, 0x00,                         /* ori.w     #$0700,sr */
    0x72, 0x00,                                     /* moveq.l   #0,d1 */
    0x41, 0xf8, 0x98, 0x00,                         /* lea.l     ($FFFF9800).w,a0 */
    0x30, 0x3c, 0x00, 0xff,                         /* move.w    #$00FF,d0 */
    0x20, 0xc1,                                     /* move.l    d1,(a0)+ */
    0x51, 0xc8, 0xff, 0xfc,                         /* dbf       d0,$00E7B102 */
    0x41, 0xf8, 0x82, 0x40,                         /* lea.l     ($FFFF8240).w,a0 */
    0x70, 0x07,                                     /* moveq.l   #7,d0 */
    0x20, 0xc1,                                     /* move.l    d1,(a0)+ */
    0x51, 0xc8, 0xff, 0xfc,                         /* dbf       d0,$00E7B10E */
    0x70, 0x00,                                     /* moveq.l   #0,d0 */
    0x4e, 0x7b, 0x00, 0x02,                         /* movec     d0,cacr */
    0x4e, 0x71,                                     /* nop */
    0x4e, 0x71,                                     /* nop */
    0xf4, 0xd8,                                     /* cinva     bc */
    0x4e, 0x71,                                     /* nop */
    0x41, 0xf8, 0x00, 0x08,                         /* lea.l     ($00000008).w,a0 */
    0x20, 0x3c, 0x00, 0x00, 0x06, 0x00,             /* move.l    #$00000600,d0 */
    0x90, 0x88,                                     /* sub.l     a0,d0 */
    0xe4, 0x88,                                     /* lsr.l     #2,d0 */
    0x42, 0x81,                                     /* clr.l     d1 */
                                          /* e7b132 : */
    0x20, 0xc1,                                     /* move.l    d1,(a0)+ */
    0x53, 0x80,                                     /* subq.l    #1,d0 */
    0x66, 0xfa,                                     /* bne.s     $00E7B132 */
    0x4e, 0x71,                                     /* nop */
    0xf5, 0x18,                                     /* pflusha */
    0x4e, 0x71,                                     /* nop */
    0x20, 0x3c, 0x00, 0xff, 0xe0, 0x00,             /* move.l    #$00FFE000,d0 */
    0x4e, 0x7b, 0x00, 0x04,                         /* movec     d0,itt0 */
    0x20, 0x3c, 0x00, 0xff, 0xe0, 0x40,             /* move.l    #$00FFE040,d0 */
    0x4e, 0x7b, 0x00, 0x06,                         /* movec     d0,dtt0 */
    0x70, 0x00,                                     /* moveq.l   #0,d0 */
    0x4e, 0x7b, 0x00, 0x05,                         /* movec     d0,itt1 */
    0x4e, 0x7b, 0x00, 0x07,                         /* movec     d0,dtt1 */
    0x4e, 0x71,                                     /* nop */
    0x70, 0x00,                                     /* moveq.l   #0,d0 */
    0x4e, 0x7b, 0x00, 0x03,                         /* movec     d0,tc */
    0x4e, 0x71,                                     /* nop */
    0x4e, 0x7b, 0x08, 0x07,                         /* movec     d0,srp */
    0x4e, 0x7b, 0x08, 0x06,                         /* movec     d0,urp */
    0x4e, 0x71,                                     /* nop */
    0x4e, 0xf9, 0x00, 0xe0, 0x00, 0x30,             /* jmp       $00E00030 */
                                          /* e7b176 : */
    0x4e, 0x7a, 0x00, 0x02,                         /* movec     cacr,d0 */
    0x08, 0x80, 0x00, 0x0f,                         /* bclr      #15,d0 */
    0x67, 0x0a,                                     /* beq.s     $00E7B18A */
    0x4e, 0x7b, 0x00, 0x02,                         /* movec     d0,cacr */
    0x4e, 0x71,                                     /* nop */
    0xf4, 0x98,                                     /* cinva     ic */
    0x4e, 0x71,                                     /* nop */
    0x4e, 0xf9, 0xde, 0xad, 0xfa, 0xce,             /* jmp       $DEADFACE */
                                          /* e7b190 : */
    0x20, 0x02, 0x10, 0x21,                         /* dc.l 0x20021021 */
    0x00, 0xe7, 0xb1, 0x9c,                         /* dc.l 0x00e7b19c */
    0x00, 0xe7, 0xb1, 0xa0,                         /* dc.l 0x00e7b1a0 */
                                          /* e7b19c : */
    0x73, 0x00,                                     /* dc.w 0x7300 (nf_id) */
    0x4e, 0x75,                                     /* rts */
                                          /* e7b1a0 : */
    0x73, 0x01,                                     /* dc.w 0x7301 (nf_call) */
    0x4e, 0x75                                      /* rts */
};
/* 001F24 */
static unsigned char const romdiff_33[6] = {
    0x4e, 0x71, 0x4e, 0x71, 0x4e, 0x71
};

typedef struct {
    uint32_t start;
    uint32_t value;
    int len;
    const unsigned char *patch;
} ROMdiff;


ROMdiff const tosdiff[] = {
    { 0x00005a, 0x203c0000,  10, romdiff_0 },
    { 0x00006a, 0xf0394000,  24, romdiff_1 },
    { 0x0003c4, 0x7200347c,  58, romdiff_2 },
    { 0x00063e, 0x4e7b0002,   4, romdiff_3 },
    { 0x000756, 0x203c0000,  10, romdiff_5 },
    { 0x000860, 0x4e7a0002,  14, romdiff_6 },
    { 0x000974, 0x2078047a,   4, romdiff_7 },
    { 0x0014e6, 0xf0394c00,  32, romdiff_8 },
    { 0x0018d0, 0x4e7a1002,  12, romdiff_9 },
    { 0x001952, 0x4e7b0002,   4, romdiff_10 },
    { 0x00398c, 0x46fc2700,   6, romdiff_11 },
    { 0x003996, 0x4e7b0002,   4, romdiff_12 },
    { 0x0039a0, 0xf0394000,  24, romdiff_13 },
    { 0x00990c, 0x4e7a2002,  12, romdiff_14 },
    { 0x011bd6, 0x4e7b0002,   4, romdiff_15 },
    { 0x011c5e, 0x4e7b7002,   4, romdiff_16 },
    { 0x011d5a, 0x4e7b0002,   4, romdiff_17 },
    { 0x0125c0, 0x4e7b5002,   4, romdiff_18 },
    { 0x012936, 0x4e7b6002,   4, romdiff_19 },
    { 0x012982, 0x4e7b6002,   4, romdiff_20 },
    { 0x0129e6, 0x4e7b6002,   4, romdiff_21 },
    { 0x012bfe, 0x4e7b5002,   4, romdiff_22 },
    { 0x012c7e, 0x4e7b5002,   4, romdiff_23 },
    { 0x012cf6, 0x4e7b2002,   4, romdiff_24 },
    { 0x012d74, 0x4e7b0002,   4, romdiff_25 },
    { 0x012ddc, 0x4e7b0002,   4, romdiff_26 },
    { 0x012e9e, 0x4e7b0002,   4, romdiff_27 },
    { 0x017b54, 0x4e7b0002,   4, romdiff_28 },
    { 0x017bec, 0x4e7b0002,   4, romdiff_29 },
    { 0x0250d8, 0x4e7b7002,   4, romdiff_30 },
    { 0x044510, 0x4e7b7002,   4, romdiff_31 },
    { 0x07b000, 0xffffffff, 420, romdiff_32 },
    { 0x001f24, 0xb0b804ba,   6, romdiff_33 },
    { 0, 0, 0, 0 }
};




The CPU type detection that is used to set the _CPU cookie is completely removed in this patch, and hardcoded to 040 instead, because thats the only CPU type Aranym supports.
Last edited by ThorstenOtto on Wed Oct 10, 2018 8:38 am, edited 1 time in total.

ThorstenOtto
Captain Atari
Captain Atari
Posts: 449
Joined: Sun Aug 03, 2014 5:54 pm

Re: Falcon TOS EPROM?

Postby ThorstenOtto » Wed Oct 10, 2018 8:36 am

Oops. deleted, qouted myself instead of editing.

joska
Hardware Guru
Hardware Guru
Posts: 4186
Joined: Tue Oct 30, 2007 2:55 pm
Location: Florø, Norway
Contact:

Re: Falcon TOS EPROM?

Postby joska » Wed Oct 10, 2018 9:17 am

Cyprian wrote:
joska wrote:. Oh, the Nova VDI sources are out there as well.

I wasn't able find them? Do you have any link? thx


I meant that the sources exist, not that they are publicly available. "Idek Tramielski" on this forum is updating the Nova drivers, you could ask him about the status.

https://silicon-heaven.org/atari/nova/

ThorstenOtto wrote:Do you know where by chance? lp has some archive on dev-docs, but that is incomplete at best.


There were some talks about this on the dhs.nu forum a couple of years ago, someone had managed to compile a complete TOS with gcc. Also, a TOS 2.06 with 4.04 AES had been produced and was shown running on an STE. Search is non-existing on that forum so I could not find it now.

I do have some 4.04 sources (AES, VDI, GEMDOS, BIOS) on my harddrive but I don't know if they are complete.
Jo Even

VanillaMiNT - Firebee - Falcon060 - Milan060 - Falcon040 - MIST - Mega ST - STM - STE - Amiga 600 - Sharp MZ700 - MSX - Amstrad CPC - C64

Rustynutt
Atari Super Hero
Atari Super Hero
Posts: 593
Joined: Wed Mar 21, 2012 7:38 am
Location: Oregon
Contact:

Re: Falcon TOS EPROM?

Postby Rustynutt » Wed Oct 10, 2018 6:32 pm

Can I be so ignorant to ask is it possibe to use BSS debug to take everything from memory to create a file?

joska
Hardware Guru
Hardware Guru
Posts: 4186
Joined: Tue Oct 30, 2007 2:55 pm
Location: Florø, Norway
Contact:

Re: Falcon TOS EPROM?

Postby joska » Wed Oct 10, 2018 8:41 pm

Rustynutt wrote:Can I be so ignorant to ask is it possibe to use BSS debug to take everything from memory to create a file?


You mean to dump the patched 4.04 to a file and then burn it to ROM? If so - no you can't. The most important thing about the AB patches is not the TOS image, but to set up the 040 PMMU, and you need to run this setup-code before starting TOS itself.

As you know, you have to boot twice (or three times in case of MagiC) on the Afterburner. First a coldboot with plain, unmodified 4.04. Then the AB-driver runs from the autofolder. It sets up the PMMU, copies TOS to fast-RAM, detects fast-RAM, does some magic (I have been studying the sources for Doug's AB driver but don't understand all parts of Doug's wizardry and voodoo) and jumps to the start of TOS to boot TOS again. I believe it will be possible to modify the AB driver to run from a diagnostic cartridge. In that case TOS will jump to the cartridge almost immediately when booting, before any hardware initialization is done. The driver can then do it's magic and continue booting TOS. So much quicker initialization and just one boot.

Of course, this will occupy the ROM-port, which is not good since lots of people use it for ethernet-cards. Better to patch a TOS image to do the same and put everything in a ROM. Not sure how much free space there is in 4.04, but by ditching some languages there should be enough free space for such a driver.

This is where a flash-ROM solution for the Falcon would be very handy :) It has been on my todo-list for years and will probably never happen.
Jo Even

VanillaMiNT - Firebee - Falcon060 - Milan060 - Falcon040 - MIST - Mega ST - STM - STE - Amiga 600 - Sharp MZ700 - MSX - Amstrad CPC - C64

User avatar
Greenious
Hardware Guru
Hardware Guru
Posts: 1278
Joined: Sat Apr 24, 2004 5:39 pm
Location: Sweden

Re: Falcon TOS EPROM?

Postby Greenious » Wed Oct 10, 2018 9:19 pm

joska wrote:
Rustynutt wrote:As you know, you have to boot twice (or three times in case of MagiC) on the Afterburner. First a coldboot with plain, unmodified 4.04. Then the AB-driver runs from the autofolder. It sets up the PMMU, copies TOS to fast-RAM, detects fast-RAM, does some magic (I have been studying the sources for Doug's AB driver but don't understand all parts of Doug's wizardry and voodoo) and jumps to the start of TOS to boot TOS again.


Actually, if the copied TOS to fastram is altered, it could be that all you need to do is dump the ram-version and put that in rom? a rom version wouldn't need pmmu, even though you might want TOS in fastram anyway for speedreasons.

depending on the size of the driver in cartridgeform, it can very well co-exist with cartridge ethernet. it depends on adress space needed for ethernet to work, total cartridgespace is 128kb.
Updated my guides as of june 28th, 2016. Check'em out and feedback!
viewtopic.php?t=5040

ThorstenOtto
Captain Atari
Captain Atari
Posts: 449
Joined: Sun Aug 03, 2014 5:54 pm

Re: Falcon TOS EPROM?

Postby ThorstenOtto » Wed Oct 10, 2018 10:15 pm

joska wrote:[Not sure how much free space there is in 4.04, but by ditching some languages there should be enough free space for such a driver.


Only ~22k are free in original 4.04. All 6 language resource files together make up ~10k, + some keyboard tables, but it might be difficult to remove them. But 22k Might be enough for a driver that only does some PMMU initialization, then reboots TOS.

joska
Hardware Guru
Hardware Guru
Posts: 4186
Joined: Tue Oct 30, 2007 2:55 pm
Location: Florø, Norway
Contact:

Re: Falcon TOS EPROM?

Postby joska » Thu Oct 11, 2018 6:45 am

Greenious wrote:Actually, if the copied TOS to fastram is altered, it could be that all you need to do is dump the ram-version and put that in rom? a rom version wouldn't need pmmu, even though you might want TOS in fastram anyway for speedreasons.


It's not that simple. The MMU is not only used to remap the patched TOS to ROM address, it is also used to set up fast-RAM and the various cachemodes for the _FRB-buffer, the framebuffer etc. Also, the TOS copied to RAM is patched with various callbacks to the resident AB-driver (TT-RAM detection and setup, cookie setter/correction etc). So both the driver and the ROM has to be present.

Greenious wrote:depending on the size of the driver in cartridgeform, it can very well co-exist with cartridge ethernet. it depends on adress space needed for ethernet to work, total cartridgespace is 128kb.


Yes, it's possible. But I'd still prefer to put the AB-driver in the ROM (or rather EEPROM) and not on cartridge.

ThorstenOtto wrote:But 22k Might be enough for a driver that only does some PMMU initialization, then reboots TOS.


22Kb sounds a bit tight actually...
Jo Even

VanillaMiNT - Firebee - Falcon060 - Milan060 - Falcon040 - MIST - Mega ST - STM - STE - Amiga 600 - Sharp MZ700 - MSX - Amstrad CPC - C64

Rustynutt
Atari Super Hero
Atari Super Hero
Posts: 593
Joined: Wed Mar 21, 2012 7:38 am
Location: Oregon
Contact:

Re: Falcon TOS EPROM?

Postby Rustynutt » Fri Oct 12, 2018 5:41 am

I meant from top to bottom, not just TOS,9 even the auto folder AB.
Guess what I was asking, was to basically include everything in the autofolder execute in sequence with TOS installation from ROM, but have the AB drivers, NVDI, NOVA and basic HD Driver loaded from ROM as opposed from the hard disk.
Once my AB is set up, I never change it. If a serious bug, or an update (like an 060), easy enough to burn another ROM. Yes, flash on the Falcon would be bad.

Rustynutt
Atari Super Hero
Atari Super Hero
Posts: 593
Joined: Wed Mar 21, 2012 7:38 am
Location: Oregon
Contact:

Re: Falcon TOS EPROM?

Postby Rustynutt » Fri Oct 12, 2018 5:42 am

Of course with a much higher capacity ePROM

Rustynutt
Atari Super Hero
Atari Super Hero
Posts: 593
Joined: Wed Mar 21, 2012 7:38 am
Location: Oregon
Contact:

Re: Falcon TOS EPROM?

Postby Rustynutt » Fri Oct 12, 2018 7:23 am

Well, get you out of the socket.
You do not have the required permissions to view the files attached to this post.

joska
Hardware Guru
Hardware Guru
Posts: 4186
Joined: Tue Oct 30, 2007 2:55 pm
Location: Florø, Norway
Contact:

Re: Falcon TOS EPROM?

Postby joska » Fri Oct 12, 2018 8:13 am

Rustynutt wrote:Guess what I was asking, was to basically include everything in the autofolder execute in sequence with TOS installation from ROM, but have the AB drivers, NVDI, NOVA and basic HD Driver loaded from ROM as opposed from the hard disk.


Hmm... Not sure if you will gain much from that.Yes, it will boot a bit faster but not much. What slows down the AB boot today is that you have to boot twice. You won't get rid of that without modifying TOS itself.
Jo Even

VanillaMiNT - Firebee - Falcon060 - Milan060 - Falcon040 - MIST - Mega ST - STM - STE - Amiga 600 - Sharp MZ700 - MSX - Amstrad CPC - C64

Rustynutt
Atari Super Hero
Atari Super Hero
Posts: 593
Joined: Wed Mar 21, 2012 7:38 am
Location: Oregon
Contact:

Re: Falcon TOS EPROM?

Postby Rustynutt » Fri Oct 12, 2018 3:18 pm

Mainly for storage on chip as opposed to other media. Realize that is kind of a bit different query than the topic.

Rustynutt
Atari Super Hero
Atari Super Hero
Posts: 593
Joined: Wed Mar 21, 2012 7:38 am
Location: Oregon
Contact:

Re: Falcon TOS EPROM?

Postby Rustynutt » Fri Oct 12, 2018 3:24 pm

Now I dwell on that, forget if when the AB boots twice on a warm reset, is it booting from ram, or drivers directed to in the auto folder? It's been about 10 years ago since actually running it, other than playing with the Interconnect adapter.

joska
Hardware Guru
Hardware Guru
Posts: 4186
Joined: Tue Oct 30, 2007 2:55 pm
Location: Florø, Norway
Contact:

Re: Falcon TOS EPROM?

Postby joska » Fri Oct 12, 2018 3:33 pm

When cold booting an Afterburner, you are booting a completely unmodified TOS 4.04. CPU is running in "safe mode" (no caches), no fast-RAM etc. The AB driver then kick in. It detects fast-RAM, sets up a PMMU tree, copies TOS to fast-RAM, patches TOS and then performs a "soft" reboot by branching to the start of the patched TOS. This starts the boot process again, and when the AB driver is loaded for the second time it finishes it's setup and exits.
Jo Even

VanillaMiNT - Firebee - Falcon060 - Milan060 - Falcon040 - MIST - Mega ST - STM - STE - Amiga 600 - Sharp MZ700 - MSX - Amstrad CPC - C64


Social Media

     

Return to “Professionals”

Who is online

Users browsing this forum: No registered users and 6 guests