From ab87f81ba8b3ec3740fcc5cb9c952926a66a8f57 Mon Sep 17 00:00:00 2001 From: Florian Reitz Date: Wed, 29 Nov 2017 01:20:44 +0100 Subject: [PATCH] Boot verified for IIgs, IIe 128k and IIe 64k --- AppleIISd.bin | Bin 2048 -> 2048 bytes AppleIISd.hex | 128 +++++++++++++++++++++++++------------------------- AppleIISd.s | 50 ++++++++------------ 3 files changed, 84 insertions(+), 94 deletions(-) diff --git a/AppleIISd.bin b/AppleIISd.bin index d585b67dae135f54ba144e82aa30cbf4256001e6..e2881373fc2cf2a36e521aae3dfb4e00cc0c7b54 100644 GIT binary patch delta 489 zcmZn=Xb`Ahq_Bu#5%VHOj*68Dt+oob47>I+F!ugn*W}k|wdDeWR_#?f|IaIIKRJPU zrGA0}!-zXc#t(canLhBZWVC1yQ8<6HfgfmV1DAr^ zsRmY{yC&S8c*>CF|NrTklNlMc>hH8VtUT4~sPO580^7-xj29eNzCeh`gG7v0enE(^ zom}|~nFqA&!AXV-++%4HoRwa0>bO8EQ;sc{a29T`)XRl;XIDB#f z(@O0{{}=pEPzXE;bd%;kpqo|(D)di&%M>kq_~eFkWbp`~crC B*c1Q& delta 464 zcmZn=Xb@0dq_Bu#5%VI(3Z4Jw6?UK6wU>dh_XoQsf2%DQ5VUHqQrIz3Q@;M*$(4+) zPRq30oL6$Sx~90KxC8laAU*d^F4Oj52L6Y;{<9s?|~9^9cp^lP4K3IIet)5K#b$7_Iz?5Me*L z@;@>UXzzoQ3>UcfHXq;=nA?27XV(dzhbNG9tYif$KaH^9!(*UwW}vc_&q3zMBFTIM z%BZjWjAZ=eV~kOZ?2{Flycks`=PErwD6IW8`6=*BY@&j%&{yMD;X0uZ)bL40RZh$ B(7ONt diff --git a/AppleIISd.hex b/AppleIISd.hex index 2e28902..fdb44a4 100644 --- a/AppleIISd.hex +++ b/AppleIISd.hex @@ -1,68 +1,68 @@ -:10000000A220A200A203A201782CFFCF20BBCABA73 -:10001000BD00018DF807290F853D0A0A0A0A852BC4 -:10002000AA20B8C99003A92F602000C8A901854261 -:10003000A62B8643A90885456444644764462CFF83 -:10004000CF20DEC9A9018542A62B8643A90A854592 -:1000500064446447A90185462CFFCF20DEC9A62B46 -:100060004C0108D848A52B48A53D48A54048A541C6 -:10007000482CFFCF20BBCABABD00018DF807290F5D -:10008000853D0A0A0A0A852BAA20B8C99005A92F1E -:10009000388037A9803C83C0F02BA542C900F011FD -:1000A000C901F012C902F013C903F014A901388084 -:1000B0001920D0C9801420DEC9800F2047CA800AC9 -:1000C00020B8CA80052000C890D0BA9D0501688577 -:1000D0004168854068853D68852B686000000000A8 +:10000000A220A200A203A2010878A960853D203D9C +:1000100000BABD00018DF807290F28853D0A0A0A9C +:100020000A852BAA2CFFCF20B7C99003A92F6020E7 +:1000300000C8A9018542A62B8643A90885456444CA +:10004000644764462CFFCF20DDC9A9018542A62B59 +:100050008643A90A854564446447A90185462CFF67 +:10006000CF20DDC9A62B4C0108D848A52B48A53DBB +:1000700048A54048A541480878A960853D203D0035 +:10008000BABD00018DF807290F28853D0A0A0A0A22 +:10009000852BAA2CFFCF20B7C99004A92F802CA9AB +:1000A000803C83C0F020A542F00DC901F00EC902CA +:1000B000F00FA90138801420CFC9800F20DDC9803E +:1000C0000A2046CA80052000C890DBBA9D05016859 +:1000D000854168854068853D68852B686000000023 :1000E0000000000000000000000000000000000010 -:1000F000000000000000000000000000FFFF876318 -:10010000D8A9039D81C0BD83C009019D83C0A907F3 -:100110009D82C0A00AA9FF9D80C03C81C010FB88C1 -:10012000D0F5BD83C029FE9D83C0A9E18540A9CA41 -:10013000854120F3C82007C9C901D041A9ED8540F8 -:10014000A9CA854120F3C82020C9C901D032A9F924 -:100150008540A9CA854120F3C82007C9A9FF854069 -:10016000A9CA854120F3C82007C9C901F0E0C90028 -:10017000D00BBD83C009109D83C04CBAC84CE1C8E8 -:10018000A9F98540A9CA854120F3C8A9058540A9D8 -:10019000CB854120F3C82007C9C901F0E3C900D0CD -:1001A000034CBAC8A9E78540A9CA854120F3C820F5 -:1001B00007C9C901F0F6C900D027A9F38540A9CA2B -:1001C000854120F3C82007C9C900D015BD83C009E7 -:1001D000809D83C0BD81C009049D81C018A000908E -:1001E0000338A027BD83C009019D83C0A9009D825B -:1001F000C098605AA000B1409D80C03C81C010FBF7 -:10020000C8C00690F17A60A9FF9D80C03C81C010F3 -:10021000FBBD80C08980D0EF48A9FF9D80C0686089 -:100220002007C9485AA004A9FF9D80C03C81C01086 -:10023000FBBD80C04888D0EFA43D6899F805689957 -:1002400078056899F804689978047AA9FF9D80C0B8 -:100250006860DA5A8AA8A63DA5469DF805A5479D7F -:100260007805A9009DF8049D7804A9802443F00531 -:10027000A9019DF804A9103983C0D011A0091EF866 -:10028000053E78053EF8043E780488D0F17AFA609D -:100290005AA43D9D80C0B978049D80C0B9F8049DE2 -:1002A00080C0B978059D80C0B9F8059D80C0A9FFC0 -:1002B0009D80C02007C97A6048A9403C83C018F0DF -:1002C0000138686048A9203C83C018F00138686094 -:1002D000A90020C4C99002A92BA2FFA0FF60205250 -:1002E000C9BD83C029FE9D83C0A9512090C9C90002 -:1002F000D050A9FF9D80C0BD80C0C9FED0F4BD8193 -:10030000C009109D81C0A9FF9D80C0A000BD80C014 -:100310009144C8D0F8E645BD80C09144C8D0F8C625 -:1003200045BD80C0BD80C0BD80C0BD81C029EF9DDE -:1003300081C018A9000848BD83C009019D83C06819 -:10034000286038A92780EE20C4C9B0672052C9BDF3 -:1003500083C029FE9D83C0A9582090C9C900D04EF2 -:10036000A9FF9D80C0A9FE9D80C0A000B1449D80D2 -:10037000C0C8D0F8E645B1449D80C0C8D0F8C64595 -:10038000A9FF9D80C09D80C09D80C0BD80C0291FE9 -:10039000C905D01A18A9000848A9FF9D80C0BD80D2 -:1003A000C0F0F6BD83C009019D83C068286038A9EC -:1003B0002780E438A92B80DF38A901604170706C78 -:1003C000655D5B53642076302E38202863293230F7 -:1003D000313720466C6F7269616E20526569747A9C -:1003E000004000000000954100000000F9480000B6 -:1003F00001AA875000000200FF7700000000656935 -:1004000040000000776900000000FF0000000000CD +:1000F000000000000000000000000000FFFF976902 +:10010000A9039D81C0BD83C009019D83C0A9079D2E +:1001100082C0A00AA9FF9D80C03C81C010FB88D08E +:10012000F5BD83C029FE9D83C0A9DC8540A9CA8591 +:100130004120F2C82006C9C901D041A9E88540A9DB +:10014000CA854120F2C8201FC9C901D032A9F4854F +:1001500040A9CA854120F2C82006C9A9FA8540A94C +:10016000CA854120F2C82006C9C901F0E0C900D003 +:100170000BBD83C009109D83C04CB9C84CE0C8A911 +:10018000F48540A9CA854120F2C8A9008540A9CBC1 +:10019000854120F2C82006C9C901F0E3C900D00397 +:1001A0004CB9C8A9E28540A9CA854120F2C82006F9 +:1001B000C9C901F0F6C900D027A9EE8540A9CA85B2 +:1001C0004120F2C82006C9C900D015BD83C00980EE +:1001D0009D83C0BD81C009049D81C018A00090030B +:1001E00038A027BD83C009019D83C0A9009D82C09E +:1001F00098605AA000B1409D80C03C81C010FBC8EF +:10020000C00690F17A60A9FF9D80C03C81C010FBC0 +:10021000BD80C08980D0EF48A9FF9D80C068602064 +:1002200006C9485AA004A9FF9D80C03C81C010FBAC +:10023000BD80C04888D0EFA43D6899F805689978DA +:10024000056899F804689978047AA9FF9D80C068C8 +:1002500060DA5A8AA8A63DA5469DF805A5479D786F +:1002600005A9009DF8049D7804A9802543F005A9FF +:10027000019DF804A9103983C0D011A0091EF8050A +:100280003E78053EF8043E780488D0F17AFA605A48 +:10029000A43D9D80C0B978049D80C0B9F8049D80BC +:1002A000C0B978059D80C0B9F8059D80C0A9FF9DA3 +:1002B00080C02006C97A6048A9403C83C018F0017C +:1002C00038686048A9203C83C018F001386860A9EC +:1002D0000020C3C99002A92BA2FFA0FF602051C932 +:1002E000BD83C029FE9D83C0A951208FC9C900D0FC +:1002F00050A9FF9D80C0BD80C0C9FED0F4BD81C0A3 +:1003000009109D81C0A9FF9D80C0A000BD80C09143 +:1003100044C8D0F8E645BD80C09144C8D0F8C64571 +:10032000BD80C0BD80C0BD80C0BD81C029EF9D81A2 +:10033000C018A9000848BD83C009019D83C0682872 +:100340006038A92780EE20C3C9B0672051C9BD839A +:10035000C029FE9D83C0A958208FC9C900D04EA9CD +:10036000FF9D80C0A9FE9D80C0A000B1449D80C0BB +:10037000C8D0F8E645B1449D80C0C8D0F8C645A9AC +:10038000FF9D80C09D80C09D80C0BD80C0291FC9C9 +:1003900005D01A18A9000848A9FF9D80C0BD80C0DB +:1003A000F0F6BD83C009019D83C068286038A92785 +:1003B00080E438A92B80DF4170706C655D5B53640D +:1003C0002076302E38202863293230313720466C91 +:1003D0006F7269616E20526569747A004000000096 +:1003E00000954100000000F948000001AA87500074 +:1003F000000200FF77000000006569400000007700 +:100400006900000000FF0000000000000000000084 :1004100000000000000000000000000000000000DC :1004200000000000000000000000000000000000CC :1004300000000000000000000000000000000000BC diff --git a/AppleIISd.s b/AppleIISd.s index 884d6cc..bff9ee1 100644 --- a/AppleIISd.s +++ b/AppleIISd.s @@ -63,13 +63,16 @@ INITED = $80 LDA #$40 .else + PHP SEI - BIT $CFFF - JSR KNOWNRTS + LDA #$60 ; opcode for RTS + STA SLOT + JSR SLOT TSX LDA $0100,X STA CURSLOT ; $Cs AND #$0F + PLP STA SLOT ; $0s ASL A ASL A @@ -79,7 +82,7 @@ INITED = $80 STA SLOT16 ; $s0 TAX ; X holds now SLOT16 - ;BIT $CFFF + BIT $CFFF JSR CARDDET BCC @INIT LDA #$2F ; no card inserted @@ -213,12 +216,16 @@ DRIVER: CLD LDA #$40 .else - BIT $CFFF - JSR KNOWNRTS ; find slot nr + PHP + SEI + LDA #$60 ; opcode for RTS + STA SLOT + JSR SLOT TSX LDA $0100,X STA CURSLOT ; $Cs AND #$0F + PLP STA SLOT ; $0s ASL A ASL A @@ -228,11 +235,10 @@ DRIVER: CLD STA SLOT16 ; $s0 TAX ; X holds now SLOT16 - ;BIT $CFFF + BIT $CFFF JSR CARDDET BCC @INITED LDA #$2F ; no card inserted - SEC BRA @RESTZP @INITED: LDA #INITED ; check for init @@ -240,14 +246,11 @@ DRIVER: CLD BEQ @INIT @CMD: LDA DCMD ; get command - CMP #0 - BEQ @STATUS + BEQ @STATUS ; branch if cmd is 0 CMP #1 BEQ @READ CMP #2 BEQ @WRITE - CMP #3 - BEQ @FORMAT .ifdef DEBUG CMP #$FF BEQ @TEST @@ -262,12 +265,11 @@ DRIVER: CLD BRA @RESTZP @WRITE: JSR WRITE BRA @RESTZP -@FORMAT: JSR FORMAT - BRA @RESTZP .ifdef DEBUG @TEST: JSR TEST ; do device test BRA @RESTZP .endif + @INIT: JSR INIT BCC @CMD ; init ok @@ -288,8 +290,8 @@ DRIVER: CLD ; Signature bytes .segment "SLOTID" - .dbyt $FFFF ; 65535 blocks - .byt $87 ; Status bits + .dbyt $FFFF ; 65535 blocks + .byt $97 ; Status bits .byt