Analyzovaný kód je rozdělený do kousků/úseků podle podprogramů či slov. Kód slov se pak nachází v části Slovník ANSI forthu, a zde jsou uvedeny jen počáteční a koncová adresa a odkaz na slovo do části Slovník ANSI forthu.
Quartus Forth je napsán v assembleru PILA a začátek je tedy Startup kód.
Příklad 16.2. Startovací kód, začátek programu [W:80]
Začátek PRC souboru je standardní kód tak jak je doporučený v assembleru PILA. Je to kód přímo ze souboru *FIXME:jméno souboru
. Dvojí adresa na začátku řádku je proto, že první adresa je adresa v PRC souboru a druhá adresa pak adresa na které se kód nachází z hlediska procesoru v době běhu programu.
;ADR WORDS LABEL MNEMO ARGS ;--- --------- ----------- ------- -------------------------- ; Analýza Quartus Forth verze 1.2.1U 0000: .ORG 0 ; PRC začíná na adrese 0000. __Startup__: PROC __Startup__() LOCAL pappi.L LOCAL prevGlobals.L LOCAL globalsPtr.L 0000: 4E56 FFF4 = LINK FP, #-12 12 slabik pro lokální proměnné; SysAppStartup(&pappi(A6), &prevGlobals(A6), &globalsPtr(a6)) 0004: 486E FFF4 = PEA globalsPtr(FP) 0008: 486E FFF8 = PEA prevGlobals(FP) 000C: 486E FFFC = PEA papi(FP) 0010: 4E4F A08F = SYSTRAP SysAppStartup 0014: 4FEF 000C LEA 12(RP), RP ; Odstranění parametrů ze zásobníku 0018: 4A40 TST.W D0 ; Test na výsledek SysAppStartup 001A: 670E .--BEQ.S _SU1 ; +14=+$0E →002A | | ; V případě neúspěchu pípneme a ukončíme program | SndPlaySystemSound(#sndError.B) 001C: 1F3C 0003 | = MOVE.B #3, -(RP) 0020: 4E4F A234 | = SYSTRAP SndPlaySystemSound 0024: 548F | = ADDQ.L #2, RP 0026: 70FF | MOVEQ #-1, D0 0028: 602A .-|--BRA.S _SUExit ; Konec | | | | ; Příprava argumentů a volání procedury PilotMain 002A: 206E FFFC _SU1: | `->MOVE.L pappi(FP), A0 | PilotMain(SysAppInfoType.cmd(A0).W, | SysAppInfoType.cmdPBP(A0).L, | SysAppInfoType.launchFlags(A0).W) 002E: 3F28 0006 | = MOVE 6(A0), -(RP) 0032: 2F28 0002 | = MOVE.L 2(A0), -(RP) 0036: 3F10 | = MOVE (A0), -(RP) 0038: 4EBA 001E | = JSR PilotMain 003C: 508F | = ADDQ.L #8, RP | SysAppExit(pappi(A6).L, prefGlobal(A6).L, globalsPtr(A6).L) 003E: 2F2E FFF4 | = MOVE.L globalsPtr(FP), -(RP) 0042: 2F2E FFF8 | = MOVE.L prefGlobal(FP), -(RP) 0046: 2F2E FFFC | = MOVE.L pappi(FP), -(RP) 004A: 4E4F A090 | = SYSTRAP SysAppExit 004E: 4FEF 000C | = LEA 12(RP), RP 0052: 7000 | MOVEQ.W #0, D0 0054: _SUExit:`--->ENDPROC ; Return to PalmOS 0054: 4E5E = UNLK FP 0056: 4E75 = RTS
Příklad 16.3. Funkce PilotMain
*:[95]
Toto je vlastní funkce main, přesněji PilotMain která se volá ze startup kódu uvedeného výše.
; PROC PilotMain (cmd.W, cmdPBP.L, launchFlags.W) 0058= 805A: 4E56 0000 PilotMain: LINK FP, #0 ;Rámec bez lokálních proměnných 005C= 805E: 4A6E 0008 TST.W 8(FP) ;ARG. 0060= 8062: 6638 .--BNE PmReturn ; $+56 = 009A 0062= 8064: 48E7 3F7E | MOVEM.L D2-D7/A1-A6, -(RP) ; Úschova registrů s použítím RP=A7 | ; ?Žádost o paměť? 0066= 8068: 200F | MOVE.L RP, D0 ; Uložení ukazatele zásobníku 0068= 806A: 2B40 000E | MOVE.L D0, 14(DS) ;+ | MemHandleNew(#2048L) 006C= 806E: 2F3C 0000 0800 | MOVE.L #2048, -(RP) 0072= 8074: 4E4F A01E | SYSTRAP MemHandleNew 0076= 8078: 588F | ADDQ.L #4, RP | MemHandleLock(A0.L) 0078= 807A: 2F08 | MOVE.L A0, -(RP) 007A= 807C: 4E4F A021 | SYSTRAP MemHandleLock 007E= 8080: 588F | ADDQ.L #4, RP 0080= 8082: 49E8 07FE | LEA 2046(A0), SP ;Nastavení datového zásobníku 0084= 8086: 2B4C 0012 | MOVE.L SP, 18(DS) ;Uložení SP do datového segmentu ; Mapování segmentu kódu 0088= 808A: 45FA 7F74 | LEA $7FFE(PC), CS ;Spočte adresu segmentu kódu a uloží ji do CS 008C= 808E: 2B4A 0026 | MOVE.L CS, 38(DS) ;Uložení CS do datového segmentu 0090= 8092: 610C | BSR.S INIT ;=$80A0 0092= 8094: 2E6D 000E | MOVE.L 14(DS), RP 0096= 8098: 4CDF 7EFC | MOVEM.L (RP)+, D2-D7/A1-A6 ;Load saved registers from (RP) 009A= 809C: 4E5E PmReturn: `->UNLK FP ;Remove stack frame 009C= 809E: 4E75 RTS
Příklad 16.4. Kód 009E - 00DC *:[80]
; Inicializece volaná z PilotMain 009E= 80A0: INIT: FplInit() 009E= 80A0: 4E4F A0DF = SYSTRAP FplInit 00A2= 80A4: 3E3C 0212 MOVE #530, TOS 00A6= 80A8: 0647 0100 ADDI #256, TOS 00AA= 80AC: 3B47 00AE MOVE TOS, 174(DS) ; 00AE= 80B0: 4EAA 8142 JSR $8142(CS) ; -32446(A2) 00B2= 80B4: 3E1C MOVE (SP)+, TOS ;= DROP 00B4= 80B6: 4EAA 8AAA JSR $8AAA(CS) ;= MainForm 00B8= 80BA: 4E4F A296 SYSTRAP GetCharCaselessVal... 00BC= 80BE: 2B48 0182 MOVE.L A0, 386(DS) 00C0= 80C2: 4E4F A294 SYSTRAP GetCharSortValue 00C4= 80C6: 2B48 0186 MOVE.L A0, 390(DS) 00C8= 80CA: 42AD 01C8 CLR.L 456(DS) 00CC= 80CE: 4EAA C0C6 JSR -16186(CS) 00D0= 80D2: 4E75 RTS 00D2= 80D4: 3907 LBL_5: MOVE TOS, -(SP) ;= 3 00D4= 80D6: 7E03 MOVEQ #3, TOS ;+ 00D6= 80D8: 4E75 RTS 00D8= 80DA: 6100 FFF8 LBL_6: BSR LBL_5 ; $-8 = 00D2 00DC= 80DE: 4E75 RTS
Následující tabulka je seznam slov ze slovníku. Příslušný kód se nachází u daného slova v části Slovník ANSI forthu. Zde jsou jen uvedeny adresy začátku a konce kódu, jakožto i startovací adresa. Adresy jsou uvedeny nejdříve ve vztahu k PRC souboru a poté kde se skutečně nachází v paměti bráno jako posunutí (offset) k registru A2 (= CS). Adresy jsou rovněž brány za celé slova (16 bitů) nikilov za slabiky (8 bitů). Odtud 00DE-00E6 a 00E8-010E
Tabulka 16.4. Slovník *:[1:1:1:1:1:3]
začátek | konec | začátek | konec | start | slovo |
---|---|---|---|---|---|
00DE | 00E6 | 80E0 | 80E8 | 80E8 | noop |
00E8 | 010E | 80EA | 8110 | 80F2 | (bye) |
0110 | 013E | 8112 | 8140 | 8118 | BYE |
Příklad 16.5. Kód následující po BYE, je volán z inicializace instrukcí JSR na adrese 00AE (80B0) *:[72]
; ??? 0140: ________: MOVEQ #0, D0 0142: MOVE TOS, D0 0144: MOVE #-1, TOS 0148: ADDI #530, D0 MemHandleNew(D0) 014C: = MOVE.L D0, -(RP) 014E: SYSTRAP MemHandleNew 0152: ADDQ.L #4, RP ;= UNLOOP 0154: MOVE.L A0, A3 0156: MOVE.L A0, 176(DS) 015A: CMPA.L #0, A0 0160: .--BNE.S $8168 0162: | CLR.W TOS 0164: | RTS ;= EXIT 0166: `->MemHandleLock(A3) 0166: MOVE.L A3, -(RP) 0168: SYSTRAP MemHandleLock 016C: ADDQ.L #4, RP 016E: MOVE.L A0, A3 0170: MemMove(DS, A3, #192) 0170: = MOVE.L #192, -(RP) 0176: MOVE.L DS, -(RP) 0178: MOVE.L A3, -(RP) 017A: SYSTRAP MemMove dstP, sP, numBytes 017E: LEA 12(RP), RP 0182: MOVE.L A3, DS 0184: MOVE.W #532, 420(DS) 018A: RTS
Tabulka 16.5. Pokračování předešlé tabulky Slovník *:[1:1:1:1:1:3]
začátek | konec | začátek | konec | start | slovo |
---|---|---|---|---|---|
018C | 019E | 818E | 81A0 | 8198 | EXECUTE |
01A0 | 01AE | 81A2 | 81B0 | 81AA | STATE |
01B0 | 01C6 | 81B2 | 81C8 | 81BC | SOURCE |
01C8 | 01D4 | 81CA | 81D6 | 81D0 | >IN |
01D6 | 01E4 | 81D8 | 81E6 | 81E0 | HERE |
01E6 | 01FC | 81E8 | 81FE | 81F8 | window-bounds |
01FE | 020C | 8200 | 820E | 8208 | event |
020E | 021C | 8210 | 821E | 8218 | BASE |
021E | 0230 | 8220 | 8232 | 822C | currentx |
0232 | 0244 | 8234 | 8246 | 8240 | currenty |
0246 | 0256 | 8248 | 8258 | 8254 | SOURCE-ID |
025A | 0270 | 825C | 8272 | 826C | eventhandler |
0272 | 0286 | 8274 | 8288 | 8282 | BlankFormID |
0288 | 029E | 828A | 82A0 | 829A | TitledFormID |
02A0 | 02B4 | 82A2 | 82B6 | 82B0 | MainFormID |
02B6 | 02CC | 82B8 | 82CE | 82C0 | DEPTH |
02CE | 02DC | 82D0 | 82DE | 82D8 | SWAP |
02DE | 02F8 | 82E0 | 82FA | 82E8 | 2SWAP |
02FA | 030C | 82FC | 830E | 8302 | ROT |
____ | ____ | BE30 | ____ | BE36 | .S |
____ | ____ | 969E | 96AA | 96A2 | : |
Příklad 16.6. Konec části code 1
362A= B62C: B604 DW $B604 362C= B62E: 0554 4852 4F57 DB 5, "THROW" 3632= B634: 4A47 "THROW": TST.W D7 3634= B636: 6606 .-BNE $+6 3636= B638: | MOVE (A4)+, D7 3638= B63A: | BRA $+44 ;=3666 363C= B63E: `>TST.L 158(A5) 3640= B642: BEQ $+16 ;=3652 3642= B644: MOVE.L 158(A5), A7 3646= B648: MOVE.L (A7)+, 158(A5) 364A= B64C: MOVE (A7)+, 372(A5) 364E= B650: MOVE.L (A7)+, A4 3650= B652: BRA $+20 ;=3666 3652= B654: >CMP #-257, D7 3656= B658: BNE $+4 ;=365C 3658= B65A: JSR -32526(A2) ;= (bye) 365C= B65E: TST 12(A5) 3660= B662: BEQ $+6 ;=3668 3662= B664: JSR -32526(A2) ;= (bye) 3666= B668: 4E75 RTS ;= EXIT 3668= B66A: BE7C FFFE >CMP #-2, D7 366C= B66E: 6616 BNE $+22 ;=3684 366E= B670: MOVE (A4)+, D7 3670= B672: MOVE D7, -(A4) 3672= B674: MOVE 484(A5), D7 3676= B678: MOVE D7, -(A4) 3678= B67A: MOVE 482(A5), D7 367C= B67E: JSR -30644(A2) ;=884C 3680= B682: JSR -18966(A2) 3684= B686: CMP #-1, D7 3688= B68A: .-BNE $+4 ;=368E 368A= B68C: | JSR -18966(A2) 368E= B690: `>JSR -30736(A2) 3692= B694: CMP #-259, D7 3696= B698: BLT $+144 ;=3728 369A= B69C: CMP #-58, D7 369E= B6A0: BGE $+8 ;=36A8 36A0= CMP #-256, D7 36A4= BGT $+130 ;=3728 36A8= CMP #0, D7 36AC= BGE $+122 ;=3728 36B0= MOVE #1, -(A7) 36B4= MOVE.L #1953002103, -(A7) 36BA= SYSTRAP DmGetResource 36BE= ADDQ.L #6, A7 36C0= CMPA.L #0, A0 36C6= BEQ $+96 ;=3728 36C8= MOVE.L A0, -(A7) 36CA= CMP #-1, D7 36CE= BEQ $+10 ;=36DA 36D0= CMP #-2, D7 36D4= BEQ $+4 ;=36DA 36D6= JSR -20764(A2) 36DA= >MOVE D7, -(A4) 36DC= MOVEQ #63, D7 36DE= JSR -30536(A2) 36E2= JSR -30512(A2) 36E6= MOVE.L (A7)+, A3 36E8= MOVE.L A3, -(A7) 36EA= SYSTRAP MemHandleLock 36EE= ADDQ.L #4, A7 36F0= JSR -31508(A2) 36F4= CMP #58, D7 36F8= BLE $+4 ;=36FE 36FA= ADDI #-198, D7 36FE= ASL 1, D7 3700= MOVE 0(A0,D7), D1 3704= LEA 0(A0,D1), A6 3708= MOVE.L A6, -(A7) 370A= SYSTRAP StrLen 37E0= ADDQ.L #4, A7 3710= MOVE.L A6, A0 3712= JSR -30674(A2) 3716= MOVE.L A3, -(A7) 3718= SYSTRAP MemHandleUnlock 371C= ADDQ.L #4, A7 371E= MOVE.L A3, -(A7) 3720= SYSTRAP DmReleaseResource 3724= ADDQ.L #4, A7 3726= BRA $+76 ;=3774 3728= MOVE #10, 376(A5) 372E= MOVE D7, -(A7) 3730= JSR -31508(A2) 3734= JSR -31640(A2) 3738= JSR -25178(A2) 373C= JSR -31640(A2) 3740= JSR -25276(A2) 3744= JSR -25164(A2) 3748= MOVE (A7)+, D0 374A= MOVE D7, -(A4) 374C= MOVE D0, D7 374E= JSR -25252(A2) 3752= JSR -25198(A2) 3756= MOVE (A4)+, D7 3758= MOVE D7, D0 375A= MOVE (A4)+, D7 375C= LEA 0(A5,D0), A0 3760= MOVE.L A0, -(A7) 3762= MOVE.L A0, -(A7) 3764= MOVE.L A0, -(A7) 3766= MOVE #1005, -(A7) 376A= SYSTRAP FrmCustomAlert 376E= LEA 14(A7), A7 3772= .-BRA $+4 ;=3778 3774= | JSR -29164(A2) 3778= `>JSR -18966(A2) 377C= RTS 377E= B780: B62C DW $B62C 3780= B782: 0541 424F 5054 DB 5, "ABORT" 3786= B788: 3907 "ABORT" MOVE D7, -(A4) 3788= B78A: MOVE #-1, D7 378C= JSR -18892(A2) 3790= B792: RTS ;= EXIT 3792= MOVE D7, 482(A5) 3796= MOVE (A4), 484(A5) 379A= MOVE.L (A4)+, D7 379C= MOVE D7, -(A4) 379E= MOVEQ #-2, D7 37A0= JSR -18892(A2) 37A4= RTS 37A6= B7A8: B780 DW $B780 37A8= B7AA: 4641 424F 5254 2200 DB 6, 'ABORT"', 0 37B0= B7B2: 4EAA BC4A ABORT" JSR -17334(A2) ;= IF 37B4= B7B6: 4EAA 9A30 JSR -26064(A2) ;= S" 37B8= B7BA: MOVE D7, -(A4) ;= DUP 37BA= B7BC: MOVE #-18540, D7 37BE= JSR -26712(A2) ;= COMPILE, 37C2= JSR -17298(A2) ;= THEN 37C6= RTS ;= EXIT . . . 400A= C00C: BFF6 DW $BFF6 400C= C00E: 4728 666C 6F61 7429 DB $40+7, "(float)" 4014= C016: 3F2D 0178 "(float)" MOVE 376(A5), -(A7) 4018= MOVE #10, 376(A5) 401E= JSR -20646(A2) ;= parse-word 4022= JSR -22004(A2) ;= >FLOAT 4026= MOVE D7, D0 4028= MOVE (A4)+, D7 ;= DROP 402A= TST D0 402C= .-BNE $+10 ;= 4038 402E= | MOVE D7, -(A4) ;= DUP 4030= | MOVE #-46, D7 4034= | JSR -18892(A2) ;= THROW 4038= `>CMPI #0,374(A5) 403E= .-BEQ $+4 ;=4044 4040= | JSR -26660(A2) ;= LITERAL 4044= `>MOVE (A7)+, 376(A5) 4048= RTS ;= EXIT ; Následující slova slouží pro generování nového PRC souboru ; a fungují jen v registrované verzi. 404A= C04C: C00C DW $C00C 404C= C04E: 1067 656E 6572 6174 DB 16, "generate-symbols", 0 4054= C056: 652D 7379 6D62 6F6C 7300 405E= C060: "generate-symbols": 405E= C060: 600A BRA $+10 ;=406A ; : MakePRC -259 THROW ; 4060= C062: C04C DW $C04C 4062= C064: 074D 616B 6560 5243 DB 7, "MakePRC" 406A= C06C: 3907 "MakePRC": >MOVE D7, -(A4) ;= 406C= C06E: 3E3C FEFD MOVE #-259, D7 ; -259 4070= C072: 4EAA B634 JSR -18892(A2) ;= THROW 4074= C076: C062 DW $C062 4076= C078: 0744 566C 5273 7263 DB 7, DelRsrc 407E= C080: 60EA BRA $-22 ;=406A 4080= C082: C076 DW $C076 4084= C086: 074E 5677 5273 7263 DB 7, "NewRsrc" 408A= C08C: 60DE "NewRsrc": BRA $-34 ;=406A 408C= C08E: C082 DW $C082 408E= C090: 0843 6F70 7952 7372 6300 DB 8, "CopyRsrc", 0 4098= C09A: 60D0 "CopyRsrc": BRA $-48 ;=406A 409A= C09C: C08E DW $C08E 409C= C09E: 0A72 6567 6973 7465 7265 6400 DB 10, "registered", 0 40A8= C0AA: 60C0 "registered":BRA.S $C06C ;$-64 ;=406A 40AA= C0AC: 576F 726B 7370 6163 6500 DB "Workspace", 0 40B4= C0B6: 486A "Workspace": PEA -16212(A2) 40B8= C0BA: MOVE #0, -(A7) 40BC= C0BE: SYSTRAP DmFindDatabase 40C0= C0C2: ADDQ.L #6, A7 40C2= C0C4: RTS 40C4= C0C6: 246D 0026 MOVE.L 38(A5), A2 40C8= C0CA: 41EA C306 LEA -15610(A2), A0 40CC= C0CF: 303C 0025 MOVE #37, D0 40D0= C0D2: 4EAA 882E JSR -30674(A2) 40D4= C0D6: 4EAA C0B6 JSR -16202(A2) 40D8= C0DA: 4A80 TST.L D0 40DA= C0DC: 670C .-<BEQ $+12 ;=40E8 40DC= C0DE: 2F00 | MOVE.L D0, -(A7) 40DE= C0E0: 3F3C 0000 | MOVE #0, -(A7) 40E2= C0E4: 4E4F A042 | SYSTRAP DmDeleteDatabase... 40E6= C0E8: 5C8F `->ADDQ.L #6, A7 40E8= C0EA: 3F3C 0000 MOVE #0, (A7) 40EC= C0EF: 2F3C 576F 726B MOVE.L #'Work', -(A7) 40F2= C0F4: 2F3C 7034 7072 MOVE.L #'p4pr', -(A7) 40F8= C0FA: 486A C0AC PEA -16212(A2) 40FC= C0FE: 3F3C 0000 MOVE #0, -(A7) 4100= C102: 4E4F A041 SYSTRAP DmCreateDatabase 4104= C106: 4FEF 0010 LEA 16(A7), A7 4108= C10A: 4A40 TST D0 410A= C10C: 6704 .-<BEQ $+4 ;=4110 410C= C10E: 4EAA 80F2 | JSR -32526(A2) 4110= C112: 4EAA C0B6 `->JSR -16202(A2) 4114= C116: 3F3C 0003 MOVE #3, -(A7) 4118= C11A: 2F00 MOVE.L D0, -(A7) 411A= C11C: 3F3C 0000 MOVE #0, -(A7) 411E= C120: 4E4F A049 SYSTRAP DmOpenDatabase 4122= C124: 508F ADDQ.L #8, A7 4124= C126: 2B48 0048 MOVE.L A0, 72(A5) 4128= C12A: 2F3C 0000 C428 MOVE.L #50216, -(A7) 412E= C130: 486D 002A PEA 42(A5) 4132= C134: 2F08 MOVE.L A0, -(A7) 4134= C136: 4E4F A055 SYSTRAP DmNewRecord 4138= C13A: 4FEF 000C LEA 12(A7), A7 413C= C13E: 2B48 0016 MOVE.L A0, 22(A5) 4140= C142: 2F08 MOVE.L A0, -(A7) 4142= C144: 4E4F A021 SYSTRAP MemHandleLock 4146= C148: 588F ADDQ.L #4, A7 4148= C14A: 2648 MOVE.L A0, A3 414A= C14C: 2B48 001A MOVE.L A0, 26(A5) 414E= C150: 2F3C 0000 4428 MOVE.L #17448, -(A7) 4154= C156: 486A 8002 PEA -32766(A2) 4158= C15A: 2F3C 0000 0000 MOVE.L #0, -(A7) 415E= C160: 2F08 MOVE.L A0, -(A7) 4160= C162: 4E4F A076 SYSTRAP DmWrite 4164= C166: 4FEF 0010 LEA 16(A7), A7 4168= C16A: 2217 MOVE.L (A7), D1 416A= C16C: 928A SUB.L A2, D1 416C= C16E: 0681 0000 7FFE ADDI.L #32766, D1 4172= C174: D28B ADD.L A3, D1 4174= C176: 2E81 MOVE.L D1, (A7) 4176= C178: 45EB 7FFE LEA 32766(A3), A2 417A= C17C: 2B4A 0022 MOVE.L A2, 34(A5) 417E= C180: 3B7C C42A 01A6 MOVE #-15318, 422(A5) 4184= C186: 3B7C 0214 01A4 MOVE #532, 420(A5) 418A= C18C: 4EAA 9406 JSR -27642(A2) 418E= C190: 41ED 0174 LEA 372(A5), A0 4192= C194: 91CD SUBA.L A5, A0 4194= C196: 3B48 0174 MOVE A0, 372(A5) 4198= C19A: 4EAA 86C6 JSR -31034(A2) 419C= C19E: 3F3C 03ED MOVE #1005, -(A7) 41A0= C1A2: 2F3C 5462 6D70 MOVE.L #'Tbmp', -(A7) 41A6= C1A8: 4E4F A05F SYSTRAP DmGetResource 41AA= C1AC: 5C8F ADDQ.L #6, A7 41AC= C1AE: 2648 MOVE.L A0, A3 41AE= C1B0: 2F08 MOVE.L A0, -(A7) 41B0= C1B2: 4E4F A021 SYSTRAP MemHandleLock 41B4= C1B6: 588F ADDQ.L #4, A7 41B6= C1B8: 3F2D 0058 MOVE 88(A5), -(A7) 41BA= C1BC: 3F2D 0056 MOVE 86(A5), -(A7) 41BE= C1C0: 2F08 MOVE.L A0, -(A7) 41C0= C1C2: 4E4F A226 SYSTRAP WinDrawBitmap 41C4= C1C6: 508F ADDQ.L #8, A7 41C6= C1C8: 2F0B MOVE.L A3, -(A7) 41C8= C1CA: 4E4F A022 SYSTRAP MemHandleUnlock 41CC= C1CE: 588F ADDQ.L #4, A7 41CE= C1D0: 2F0B MOVE.L A3, -(A7) 41D0= C1D2: 4E4F A061 SYSTRAP DmReleaseResource... 41D4= C1D6: 588F ADDQ.L #4, A7 41D6= C1D8: 3B7C 0021 0058 MOVE #33,88(A5) 41DC= C1DE: 41EA C32B LEA -15573(A2), A0 41E0= C1E2: 303C 0020 MOVE #32, D0 41E4= C1E6: 4EAA 882E JSR -30674(A2) 41E8= C1EA: 4EAA 8724 JSR -30940(A2) 41EC= C1EE: 41EA C38D LEA -15475(A2), A0 41F0= C1F2: 303C 001C MOVE #28, D0 41F4= C1F6: 4EAA 882E JSR -30674(A2) 41F8= C1FA: 4EAA 8724 JSR -30940(A2) 41FC= C1FE: 41EA C34B LEA -15541(A2), A0 4200= C202: 303C 001B MOVE #27, D0 4204= C206: 4EAA 882E JSR -30674(A2) 4208= C20A: 4EAA 8724 JSR -30940(A2) 420C= C20E: 41EA C366 LEA -15514(A2) 4210= C212: 303C 0014 MOVE #20, D0 4214= C216: 4EAA 882E JSR -30674(A2) 4218= C21A: 4EAA 8724 JSR -30940(A2) 421C= C21E: 4EAA 8724 JSR -30940(A2) 4220= C222: 41EA C37A LEA -15494(A2), A0 4224= C226: 303C 0013 MOVE #19, D0 4228= C22A: 4EAA 882E JSR -30674(A2) 422C= C22E: 4EAA 8724 JSR -30940(A2) 4230= C232: 4EAA 8724 JSR -30940(A2) 4234= C236: 2F3C 0000 0012 MOVE.L #18, -(A7) 423A= C23C: 4E4F A013 SYSTRAP MemPtrNew 423E= C240: 588F ADDQ.L #4, A7 4240= C242: 2648 MOVE.L A0, A3 4242= C244: 2B48 01F0 MOVE.L A0, 496(A5) 4246= C248: 486D 01F6 PEA 502(A5) 424A= C24C: 486D 01F4 PEA 500(A5) 424E= C250: 3F3C FFFF MOVE #-1, -(A7) 4252= C254: 2F3C 6D65 6D6F MOVE.L #'memo', -(A7) 4258= C25A: 2F3C 6170 706C MOVE.L #'appl', -(A7) 425E= C260: 2F0B MOVE.L A3, -(A7) 4260= C262: 3F3C FFFF MOVE.L #-1, -(A7) 4264= C266: 4E4F A078 SYSTRAP DmGetNextDataba... 4268= C26A: 4FEF 0018 LEA 24(A7), (A7) 426C= C26E: 3F3C 0000 MOVE.W #0, -(A7) 4270= C272: 2F3C 0000 0012 MOVE.L #18, -(A7) 4276= C278: 2F0B MOVE.L A3, -(A7) 4278= C27A: 4E4F A027 SYSTRAP MemSet 427C= C27E: 4FEF 000A LEA 10(A7), A7 4280= C282: 202D 01F6 MOVE.L 502(A5), D0 4284= C286: 2740 0004 MOVE.L D0, 4(A3) 4288= C28A: 377C FFFF 0008 MOVE #-1, 8(A3) 428E= C290: 3B7C FFFF 01C6 MOVE #-1, 454(A5) 4294= C296: 42AD 01C2 CLR.L 450(A5) 4298= C29A: 4EAA B594 JSR -19052(A2) 429C= C29E: 3907 MOVE D7, -(A4) 429E= C2A0: 3E3C 0066 MOVE #102, D7 42A2= C2A4: 3907 MOVE D7, -(A4) 42A4= C2A6: 7E0F MOVEQ #15, D7 42A6= C2A8: 3907 MOVE D7, -(A4) 42A8= C2AA: 3E3C B930 MOVE #-18128, D7 42AC= C2AE: 4EAA B60C JSR -18932(A2) 42B0= C2B2: 4A47 TST D7 42B2= C2B4: 670E .---BEQ $+14 ;=42C2 42B4= C2B6: BE7C FFDA | CMP #-38, D7 42B8= C2BA: 6704 | .-BEQ $+4 ;=42BE 42BA= C2BC: 4EAA B634 | | JSR -18892(A2) 42BE= C2C0: 548C | `>ADDQ.L #2, A4 42C0= C2C2: 3E1C | MOVE (A4)+, D7 42C2= C2C4: 3E1C `-->MOVE (A4)+, D7 42C4= C2C6: 426D 019C CLR 412(A5) 42C8= C2CA: 4EAA B104 JSR -20220(A2) 42CC= C2CE: 4E75 RTS ;=EXIT ;******************* ; Cold Start ; ========== ; cold ( → ) 42CE= C2D0: C09C DW $C09C 42D0= C2D2: 0463 6F6C 6400 "cold": DB 4, "cold" 42D6= C2D8: 486D 017A PEA 378(DS) 42DA= C2DC: 486D 01BA PEA 442(DS) 42DE= C2E0: 4E4F A0AC SYSTRAP SysCurAppDatabase.. 42E2= C2E4: 508F ADDQ.L #8, RP 42E4= C2E6: 2F3C 0000 0000 MOVE.L #0, -(RP) 42EA= C2EC: 3F3C 0000 MOVE.W #0, -(RP) 42EE= C2F0: 2F2D 017A MOVE.L 378(DS), -(RP) 42F2= C2F4: 3F2D 01BA MOVE.W 442(DS), -(RP) 42F6= C2F8: 4E4F A0A7 SYSTRAP SysUIAppSwitch 42FA= C2FC: 4FEF 000C LEA 12(RP), RP 42FE= C300: 4EAA 8118 JSR -32488(CS) ;= BYE 4302= C304: 4E75 RTS 4304= C306: 5175 DW $5175 4306= C308: DB "Quartus Forth initializing workspace" 4328= C32A: DB $85, "Welcome to Quartus Forth 1.2.1U.) " DB "Neal Bridges, 1998, 1999.All rights reserved." DB "Evaluation version.Build: 1999.03.06 2:18:37pm", 0 43A8= C3AA: 8000 8000 8000 8000 DW $8000, $8000, $8000, $8000 ... 4420= C422: 8000 8000 8000 8000 DW $8000, $8000, $8000, $8000 MOVEQ.L #2, D7 JSR -12232(A2) ;= approximate BRA.L 63154 ....= F6A2: 4EAA DADA JSR -9510(A2) ;= .source F6A6: 4EAA DB4E JSR -24B2(A2) ;= ,dreg F6AA: 3907 MOVE.W D7, -(A4) ;= DUP F6AC: 7E04 MOVEQ.L #4, D7 F6AE: 3907 MOVE.W D7, -(A4) ;= DUP F6B0: MOVEQ.L #2, D7 F6B2: JSR $-2A92(A2) ;= +if-long F6B6: RTS ;= EXIT F6B8: 1234 0000 EBE6 0B69