From 83c048b60340ba5d2bc54e12a90122d77fa7e5ac Mon Sep 17 00:00:00 2001 From: Bobbi Webber-Manners Date: Sat, 17 Jul 2021 16:03:48 -0400 Subject: [PATCH] Fixed warmstart - only relocate on cold start! --- applecorn.po | Bin 143360 -> 143360 bytes applecorn.s | 39 +++++++++++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 10 deletions(-) diff --git a/applecorn.po b/applecorn.po index 3812cb0ec0db18e698ffa5e0498fff4138a834d8..9496109608f870c0cff14e583f2f131c7f69a3c8 100644 GIT binary patch delta 2202 zcmZ8g4Nw%<9p8P&m!}ARfPjQ~+@q;D8EU7RU@Hg+aRcKF}E1ztBvuge0AKq)H(eU2{p3&&A7A2 zpMe)U9Co{%z|gkLN`}F}CFpeUSoT=l{Xx^#5COMBN4))U7}K#l88kFZ>OB;G0{R?rv*4&K56)`xFia z1D*3QJUth@<(r?T*fT+hvd#Gn~Q-T~p8S zkkjeXs=qF@|1)NdsBS@a)4FlAuUOju3q3w0^r)Z2TJLc=2gjBoMU8I-qMi}CqJ_~0 z)gXLmn1;85Fc5sw2=v|c-3wqr_4Es|oczP~!h~pH{FaW~pIz#(57N7z-gX?xDfFuj zq4T2m{xqan;e3!PaVz*>It+b*Z(t}Kyc_oUNhcNt2ZX1Gmx6S^)v-L!*ftC=Fjwad zp#SDId+WGCJ}-%<9G! zD0|I4tqd!+^wEnj*smip4(JM>`}v}2t;5{Ku;<0&ee|LgllpI!XD^8s0`C}X36d%F zBW^QcX#Q%NpRpE`8ohP9_!hF3iEksmZX}(5bu=YyE5a{nl|D%quccG@_eL{o>hX3I zjb5VlPaL=ukpx_Z#N!C>K;oYfE=PpL6-c!8;+;r5-HR)cc%~N{k;wPrDg+e+Rn1;n zC|Z%99=hNJ&$K0n$i)YSA$O{fy88DaO!LYH z|9&kmcZaZCwixT2050XJ!Po!+MooxVAOfl!iqzivb`LSOfAiyb=%(P64C^rvjqlRe-#PR|De4YXEr>uhmc*AiHq7hSmX6j59Qp z3FwQPrJ?nJt6dKeEsN=myg!{Ha}TUojy3L|L7|8T5VTzz5IZ@fvw}el%H!FRT}eC z;HYAj^tQx|S6+aDMe{40v?sY8No3x=r>4BT=BEV=S%?u8`zm%(J6>?pN~lBCuByG7 zLwby;sVFU{_Omg2XVosvem-VbmQ|Ngd#CXHlL%$iwRBP@ectZ_LsR6pH3(zg5FP{rJBRrq0rYFW^FIF>`@QZ35 zdxL*R-LmG~1owuNB*()|9`03X83m>MsA|ZoQyR{3MbZjN*c5KFlp`lJoTb!8sfkiq z9xfN&;8%Gv3O@HVoP%}Bu}6(&!WiM4r!h-fCqFPh9k})M%#1etGurU?d+Li?)YE5% zrQ}euv_7;(Y6`7_wI1#seGol;WS9%hCqh#co!~r1(jj;?5j71(4e}2?JK2MLvA49i zM3`98wrbx17C9tdj7Co>e0eX72XM&0Sy7gc=dtvh3 U?i0g*VE=xIJrVceuh{Yb0p7$_(f|Me delta 1887 zcmZ`(eM}Tb6yKdgIZhB11r$HV8zW#X#o`BAP(abMIRyo6{h(eAO|j(<+cb*S^w#1T zqmDUPXc|A7tx9#&C5M-&H7bW6DSJ@4yFE}zOlXXVR?fplV{8n4dsqBu(%Ida_xsJ8 zH*em1vqHCC=+--OBjRS4aF3^s9zB`6%W?fvhsTIT5s7i<4X;S7k!WAJj*-BAO4PacK_6f zoCkh3=q9#YZ)=mBk{V%bCSt`vWjL;bb z`;7Jk(1;~LeON(70PPxu=f=VkN=1jjYO+&4?|BRf&7ui!;}d z22SU}az+#Vh+wYi`YIyxy0qAnz56*Gdyn$E8(!?`uw2;B@rpc{`!=2;=E|BHNp2E|II7 zXdaPknrJ?e#U{FdB;ZyfM9GntC0j`!tWu1!K>CifAuB9)8^Mq*+cpm@*>Y_2d*FdH z77>Q%a?;R(ySZRYPYygV;THOZwX)l&Ajc$y^F+#u(Sw9FU>DX4#5NxYSPB}jmT|Ux zR%Ba{ghyP}VzZRs`$h*Ah6Gx$uqO*tt$jryZ`{Vd<(el#595V#uL8u75c?W%b_5~( zzo2m(Kxmu^=6Xn3s-6Y@{^Hiz~g1 zH*-SXrcD)}EiEj@n={fgrpFj^-fA%huD;fA^3oH(&3@@Gzxd3P%4dobz0<6Rz2#}K z_^{Wa80?Wr8)xIdfMsKb*0ZycX5CU)ykgikOc+rw&8rDm`u*JpsMfre}q*?zG`9&*BfJhxw$X{Hb;jBTNw_P#Y;{=P_QJvrXxD2JTra`E;=~=k_{g;?Q1UwQpl`diU8S-r zpHdaUGeJJ7dd3_&sUA9|%BR&Y91(22pp#`4H>iQrY5-<+0hr=kX+p3q%xl0(<6N*2 z2hH?mK5W(XbswIv>%jB!C?Rwd%YWy^A5_dYi09Oq@t=1J-za*|5RCl7mr4`}@#27L zv}StC>VzC68i);EVTLlnGqkK0sHut-s7IY6VmS1!NPou!Ez>1wMx)olBJb%W_K9 z>KaHxFh)rZ#w*s~2%O><9ze$o&?Q;2EW3kUAng|XCbn7X(DIZJJ=PFD2-4V_>RLTFcfxqz&kcMf% diff --git a/applecorn.s b/applecorn.s index df0816a..f34cb2c 100644 --- a/applecorn.s +++ b/applecorn.s @@ -190,12 +190,14 @@ SETPRFX LDA GPFXCMD :S1 RTS * Reset handler -* XFER to AUXMOS1 in aux, AuxZP on +* XFER to AUXMOS ($C000) in aux, AuxZP on, LC on RESET TSX STX $0100 - LDA #AUXMOS1 + LDA #>AUXMOS STA STRTH SEC BIT $FF58 @@ -518,6 +520,7 @@ ZP2 EQU $92 ROW EQU $94 ; Cursor row COL EQU $95 ; Cursor column +WARMSTRT EQU $9F ; Cold or warm start FAULT EQU $FD ; Error message pointer ESCFLAG EQU $FF ; Escape status BRKV EQU $202 ; BRK vector @@ -533,6 +536,8 @@ BPUTV EQU $218 ; OSBPUT vector GBPBV EQU $21A ; OSGBPB vector FINDV EQU $21C ; OSFIND vector +MAGIC EQU $BC ; Arbitrary value + MOSSHIM ORG AUXMOS ; MOS shim implementation @@ -550,6 +555,10 @@ MOSINIT LDA $C08B ; LC RAM Rd/Wt, 1st 4K bank LDA $C08B + LDA WARMSTRT ; Don't relocate on restart + CMP #MAGIC + BEQ :NORELOC + LDA #AUXMOS1 @@ -608,6 +617,7 @@ MOSINIT INC A4H :S7 BRA :L2 +:NORELOC :S8 STA $C00D ; 80 col on STA $C003 ; Alt charset off STA $C055 ; PAGE2 @@ -668,18 +678,27 @@ MOSINIT LDA #>OSFIND STA FINDV+1 - LDA #HELLO2 + LDA #<:HELLO + LDY #>:HELLO JSR PRSTR + LDA WARMSTRT + CMP #MAGIC + BNE :S9 + LDA #<:OLDM + LDY #>:OLDM + JSR PRSTR + +:S9 LDA #MAGIC ; So we do not reloc again + STA WARMSTRT + LDA #$01 JMP AUXADDR ; Start Acorn ROM * No return -HELLO2 ASC 'AppleMOS v0.01' - DB $0D,$0A - ASC '==============' - DB $0D,$0A,$00 - +:HELLO ASC 'AppleMOS v0.01' + DB $0D,$0A,$0D,$0A,$00 +:OLDM ASC '(Use OLD to recover any program)' + DB $0D,$0A,$0D,$0A,$00 * Clear to EOL CLREOL LDA ROW ASL