From 755aff64baf670489cf80710c2c25ddd5cbe0aa3 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Wed, 23 Sep 2020 15:49:26 +0200 Subject: [PATCH] fixes for hw initialization under hypervisor --- bin/mega65.rom | Bin 131072 -> 131072 bytes bin/mega65_pxlfont.rom | Bin 131072 -> 131072 bytes .../board_m65/mega65_hypervisor_reset.s | 32 ++++++++++++------ 3 files changed, 21 insertions(+), 11 deletions(-) diff --git a/bin/mega65.rom b/bin/mega65.rom index 133aeef71b6cab6505f7dc89ca468813b8c05ae4..5366bfa02483d4b9464fd344aa2a370fc0589c00 100644 GIT binary patch delta 2926 zcmYjTdsI_L8qd8UB%wTl@(6oG2kHZSP>|L`9~NzG#h$S~&=#nVyX)C*>|?v9Zaq}n zHBhfh(NJ{kDk|NaORmS8HZ+{n+SsySv1nMkdo8;ZsrI2l658C{5J^Ii+?^Y?r~M-{ z-%RFyGvD|7eZLu_QDZb}nzM+~j_idSvST5~KTc7#oPzGP0iHeuVj;T{+;UWHAc?#} z5gZf&x1kEUe6`?;k6TN-xn;D6dw}-hY4Dz7@5Wb2;sO#jZ6!7$xVZq^uWjB%)H}SJ zixaeG1aM)(=mBq_{F>eAAB8*fpEG6gojK2$N_g;o*um9gl0>DWYsKs=rPbl>`uqEK*PaG#6E(7j}ai(i!e?_{y zw(v}eHfKOIegO)iU?pqpl>0iL@vPh*K)X6#$D2BYjudrDosWWZ?6A^FCxJ|)aV|(0 z@`E}@sdG^xQHr*Ay`yybt~df+)_aLMbm~@b;(*B7!2mMcUYGV`blpaB)f3MYEiEp7 zaA_&(yIkShcMh9#3x0ohv&;jd1d%n zf;fvVjm*cbFp@iCqk!={x+jW1qil*B#gi1On=B$R{Cyg>%|-AD1@QNQf}t8v z=B@>2rksx zyVq&@_(-u5Cb=Q$K0PR^xD2>du=I=N-35GVPq61Iv%stXN)OD6g0lh=+>h_8kFe)K zg$UP4hG}DWggqC0QV0GS!{cqDeTY-wc*O`;1-hO6oc<7mL@*pr!Tod!Jvcfq zB^JUk1D6jM5y*7BIGU_P^}Y;r(pN~B&=q+UADHJZz)o#5cvn$#GVXloe4*NvXum_rp3!uhJ$w}KOAn_h> zM2OQ^3!p>9C9Alx{>e1VAh6YsNruUXNk)P4Ag46xzUCCBVqR8X1fGf47*0L~)U<3Aus1Swl6NT2SqdlXRg@-N%OuFiGVAVFy|f$X#?q zK*it}fCJWFUG zM*ZTUDDGhTdXv%qs$8^yt{oq z-V7W;C&w1g>Q#YzrRjPSI6|%`w_Hy*t{WVZ6HxlGh{=ws zLb=3Vv^(_D126bb4|uTDz=tN-!@2}c(om_)ngT`+qITYV?C~Ayq5L49^jRF z165|AP=5HaLR`&af(+%zQMf5=R$M$M&H&cP<%{R^JW+--{)!v!48s~P;=;3#6wZBi z|HT76xV&GknWeV0E!Hz_Hh3*BxI_2g4{kogrEYe5+xUW8Jpei`YWKx0pu&qf&_uJl4(F34h)Ii1Wfp3YS znp(^>`2xe`{AZC-bBc;->Mhho4KGxfb1)zabx93;7%Pzh-j4R^zQclKpe=i%tVLf% zRn&sEDJ+BXbD0!0i$CYil7D)RT<>KX>rm*r>X6`06juoaZLJOgpheVx1lj8x!TeF908kVgv3*-pK{& zqGc_lkIPjhxU_A zZ;=$+g2e#qW!V^eLY9ThAE^o~yWb)hD^093y+d-7h>k79INM|S)xAQT#z~mQ;4A4e z#0tr_>L!^q7KtR2E$6imH*$T8sV=pc#D0jg&bC9`d@frTWUE!@Vv6xHsFbkX$>f1v zv`ETHieIMyw};Ww(wsC#bm;ukG@l4LROk&!zbILN6CpS+2DN_p)g3rF4%__@hGE$l vt|Pcjgp3Hc3ef64t9R@aWQ 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 c{!UKTStg=XPmo7U}F+q8B2|NS`nzX`d@`~Uy| diff --git a/bin/mega65_pxlfont.rom b/bin/mega65_pxlfont.rom index a99abce62455cf1c59ff5d797bdff8e6b60a6ef1..4ba0dfa8ac9cc2d8910e4b4a189fc5d85a0aac69 100644 GIT binary patch delta 2926 zcmYjTdsI_L8qd8UB%wTl@(6oG2kHZSP>|L`9~NzG#h$S~&=#nVyX)C*>|?v9Zaq}n zHBhfh(NJ{kDk|NaORmS8HZ+{n+SsySv1nMkdo8;ZsrI2l658C{5J^Ii+?^Y?r~M-{ z-%RFyGvD|7eZLu_QDZb}nzM+~j_idSvST5~KTc7#oPzGP0iHeuVj;T{+;UWHAc?#} z5gZf&x1kEUe6`?;k6TN-xn;D6dw}-hY4Dz7@5Wb2;sO#jZ6!7$xVZq^uWjB%)H}SJ zixaeG1aM)(=mBq_{F>eAAB8*fpEG6gojK2$N_g;o*um9gl0>DWYsKs=rPbl>`uqEK*PaG#6E(7j}ai(i!e?_{y zw(v}eHfKOIegO)iU?pqpl>0iL@vPh*K)X6#$D2BYjudrDosWWZ?6A^FCxJ|)aV|(0 z@`E}@sdG^xQHr*Ay`yybt~df+)_aLMbm~@b;(*B7!2mMcUYGV`blpaB)f3MYEiEp7 zaA_&(yIkShcMh9#3x0ohv&;jd1d%n zf;fvVjm*cbFp@iCqk!={x+jW1qil*B#gi1On=B$R{Cyg>%|-AD1@QNQf}t8v z=B@>2rksx zyVq&@_(-u5Cb=Q$K0PR^xD2>du=I=N-35GVPq61Iv%stXN)OD6g0lh=+>h_8kFe)K zg$UP4hG}DWggqC0QV0GS!{cqDeTY-wc*O`;1-hO6oc<7mL@*pr!Tod!Jvcfq zB^JUk1D6jM5y*7BIGU_P^}Y;r(pN~B&=q+UADHJZz)o#5cvn$#GVXloe4*NvXum_rp3!uhJ$w}KOAn_h> zM2OQ^3!p>9C9Alx{>e1VAh6YsNruUXNk)P4Ag46xzUCCBVqR8X1fGf47*0L~)U<3Aus1Swl6NT2SqdlXRg@-N%OuFiGVAVFy|f$X#?q zK*it}fCJWFUG zM*ZTUDDGhTdXv%qs$8^yt{oq z-V7W;C&w1g>Q#YzrRjPSI6|%`w_Hy*t{WVZ6HxlGh{=ws zLb=3Vv^(_D126bb4|uTDz=tN-!@2}c(om_)ngT`+qITYV?C~Ayq5L49^jRF z165|AP=5HaLR`&af(+%zQMf5=R$M$M&H&cP<%{R^JW+--{)!v!48s~P;=;3#6wZBi z|HT76xV&GknWeV0E!Hz_Hh3*BxI_2g4{kogrEYe5+xUW8Jpei`YWKx0pu&qf&_uJl4(F34h)Ii1Wfp3YS znp(^>`2xe`{AZC-bBc;->Mhho4KGxfb1)zabx93;7%Pzh-j4R^zQclKpe=i%tVLf% zRn&sEDJ+BXbD0!0i$CYil7D)RT<>KX>rm*r>X6`06juoaZLJOgpheVx1lj8x!TeF908kVgv3*-pK{& zqGc_lkIPjhxU_A zZ;=$+g2e#qW!V^eLY9ThAE^o~yWb)hD^093y+d-7h>k79INM|S)xAQT#z~mQ;4A4e z#0tr_>L!^q7KtR2E$6imH*$T8sV=pc#D0jg&bC9`d@frTWUE!@Vv6xHsFbkX$>f1v zv`ETHieIMyw};Ww(wsC#bm;ukG@l4LROk&!zbILN6CpS+2DN_p)g3rF4%__@hGE$l vt|Pcjgp3Hc3ef64t9R@aWQ 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 c{!UKTStg=XPmo7U}F+q8B2|NS`nzX`d@`~Uy| diff --git a/src/kernal/board_m65/mega65_hypervisor_reset.s b/src/kernal/board_m65/mega65_hypervisor_reset.s index 433240dd..64bc98eb 100644 --- a/src/kernal/board_m65/mega65_hypervisor_reset.s +++ b/src/kernal/board_m65/mega65_hypervisor_reset.s @@ -2,7 +2,8 @@ ;; #LAYOUT# * * #IGNORE ; Reset (hardware initialization) to be used when Open ROMs is used under hypervisor -; XXX for now this is just a proposal + +; XXX size-optimize this; share code with regular reset m65_hypervisor_reset: @@ -12,23 +13,32 @@ m65_hypervisor_reset: sei ; disable the interrupts, as fast as possible cld ; Kernal is not designed to operate in decimal mode - see ; disable extended stack - ldx #$FF ; initial stack size - txs - - ; XXX size-optimize this; share code with regular reset + ; Do not reset the stack (see, ldx #$FF, txs) - we need to know where to return - jsr m65_reset_part ; initialize MEGA65 specific hardware - + jsr m65_reset_part ; init MEGA65 specific hardware, shutdown VIC-IV, clear native mode mark ldx #$28 ; 40 columns, screen disabled for now stx VIC_SCROLX - - jsr IOINIT_skip_DOS ; DOS needs to map memory over $8000 - not allowed under hypervisor + + jsr IOINIT_skip_DOS ; better not to initialize DOS under hypervisor, risk of incompatibility jsr JRAMTAS jsr JRESTOR jsr JCINT - ; Finished + ; Restore hypervisor memory mapping and quit + + lda #$00 ; lower memory - megabyte $00 + ldx #$0F ; lower memory - request to set the megabyte + ldy #$FF ; higher memory - megabyte $FF + ldz #$0F ; higher memory - request to set the megabyte + + map + + tax ; lower memory - keep unmapped (.A is already 0) + tay ; higher memory - lower 16 bits of the offset are also 0's + ldz #$3F ; higher memory - map is %0011 = $3, offset is $FF0 + + map + eom cli rts