'****************************************************************************** ' Catalina.spin '****************************************************************************** '=============================== Object Header ================================ 0010: 0c 40 02 00 ' 16396 bytes, 2-1 methods, 0 object pointers 0014: 04 40 00 00 ' METHOD '================================ DAT Section ================================= 0018(0000): ' org $51 0018(0051): ' init_B0 ' must match init_B0 in Catalina_LMM.spin (and 0018(0051): fc 01 00 00 ' init_BZ long @sbrkinit '$51 ' end of code / start of heap 001c(0052): 30 02 00 00 ' init_PC long @C_main '$52 ' the initial PC 0020(0053): ' seglayout 0020(0053): 02 00 00 00 ' long SEGMENT_LAYOUT 0024(0054): ' segtable 0024(0054): 00 02 00 00 ' long @Catalina_Code 0028(0055): 38 00 00 00 ' long @Catalina_Cnst 002c(0056): 38 00 00 00 ' long @Catalina_Init 0030(0057): 40 00 00 00 ' long @Catalina_Data 0034(0058): 04 40 00 00 ' long @Catalina_Ends 0038(0059): 00 02 00 00 ' long @Catalina_RO_Base 003c(005a): 38 00 00 00 ' long @Catalina_RW_Base 0040(005b): 04 40 00 00 ' long @Catalina_RO_Ends 0044(005c): 00 02 00 00 ' long @Catalina_RW_Ends 0048(005d): ' Catalina_RW_Base 0048(005d): ' Catalina_Cnst 0048(005d): ' Catalina_Init 0048(005d): 00 00 00 00 ' C_errno long 0 004c(005e): ' C_argc_locn 004c(005e): 6c 7e 00 00 ' long $7E6C ' must match value in Catalina_Common.spin 0050(005f): ' Catalina_Data 0050(005f): 48 ' HELLO_val byte "HELLO AND WELCOME!!!" 0051(005f): 45 ' 0052(005f): 4c ' 0053(005f): 4c ' 0054(0060): 4f ' 0055(0060): 20 ' 0056(0060): 41 ' 0057(0060): 4e ' 0058(0061): 44 ' 0059(0061): 20 ' 005a(0061): 57 ' 005b(0061): 45 ' 005c(0062): 4c ' 005d(0062): 43 ' 005e(0062): 4f ' 005f(0062): 4d ' 0060(0063): 45 ' 0061(0063): 21 ' 0062(0063): 21 ' 0063(0063): 21 ' 0064(0064): 00 ' byte 0 0068(0065): 5c 00 00 00 ' M0I0 long @M0I0_val 006c(0066): 5c ' M0I0_val byte "\x1b[1m\x1b[40m\x1b[2J" 006d(0066): 78 ' 006e(0066): 31 ' 006f(0066): 62 ' 0070(0067): 5b ' 0071(0067): 31 ' 0072(0067): 6d ' 0073(0067): 5c ' 0074(0068): 78 ' 0075(0068): 31 ' 0076(0068): 62 ' 0077(0068): 5b ' 0078(0069): 34 ' 0079(0069): 30 ' 007a(0069): 6d ' 007b(0069): 5c ' 007c(006a): 78 ' 007d(006a): 31 ' 007e(006a): 62 ' 007f(006a): 5b ' 0080(006b): 32 ' 0081(006b): 4a ' 0082(006b): 00 ' byte 0 0084(006c): 78 00 00 00 ' M0I1 long @M0I1_val 0088(006d): 5c ' M0I1_val byte "\x1b[6;30H\x1b[37;40mMiniPlate Participant" 0089(006d): 78 ' 008a(006d): 31 ' 008b(006d): 62 ' 008c(006e): 5b ' 008d(006e): 36 ' 008e(006e): 3b ' 008f(006e): 33 ' 0090(006f): 30 ' 0091(006f): 48 ' 0092(006f): 5c ' 0093(006f): 78 ' 0094(0070): 31 ' 0095(0070): 62 ' 0096(0070): 5b ' 0097(0070): 33 ' 0098(0071): 37 ' 0099(0071): 3b ' 009a(0071): 34 ' 009b(0071): 30 ' 009c(0072): 6d ' 009d(0072): 4d ' 009e(0072): 69 ' 009f(0072): 6e ' 00a0(0073): 69 ' 00a1(0073): 50 ' 00a2(0073): 6c ' 00a3(0073): 61 ' 00a4(0074): 74 ' 00a5(0074): 65 ' 00a6(0074): 20 ' 00a7(0074): 50 ' 00a8(0075): 61 ' 00a9(0075): 72 ' 00aa(0075): 74 ' 00ab(0075): 69 ' 00ac(0076): 63 ' 00ad(0076): 69 ' 00ae(0076): 70 ' 00af(0076): 61 ' 00b0(0077): 6e ' 00b1(0077): 74 ' 00b2(0077): 00 ' byte 0 00b4(0078): a8 00 00 00 ' M0I2 long @M0I2_val 00b8(0079): 5c ' M0I2_val byte "\x1b[8;20H\x1b[37;40mFirmWare Version 1.0, Rev Data: 14 Sep 22" 00b9(0079): 78 ' 00ba(0079): 31 ' 00bb(0079): 62 ' 00bc(007a): 5b ' 00bd(007a): 38 ' 00be(007a): 3b ' 00bf(007a): 32 ' 00c0(007b): 30 ' 00c1(007b): 48 ' 00c2(007b): 5c ' 00c3(007b): 78 ' 00c4(007c): 31 ' 00c5(007c): 62 ' 00c6(007c): 5b ' 00c7(007c): 33 ' 00c8(007d): 37 ' 00c9(007d): 3b ' 00ca(007d): 34 ' 00cb(007d): 30 ' 00cc(007e): 6d ' 00cd(007e): 46 ' 00ce(007e): 69 ' 00cf(007e): 72 ' 00d0(007f): 6d ' 00d1(007f): 57 ' 00d2(007f): 61 ' 00d3(007f): 72 ' 00d4(0080): 65 ' 00d5(0080): 20 ' 00d6(0080): 56 ' 00d7(0080): 65 ' 00d8(0081): 72 ' 00d9(0081): 73 ' 00da(0081): 69 ' 00db(0081): 6f ' 00dc(0082): 6e ' 00dd(0082): 20 ' 00de(0082): 31 ' 00df(0082): 2e ' 00e0(0083): 30 ' 00e1(0083): 2c ' 00e2(0083): 20 ' 00e3(0083): 52 ' 00e4(0084): 65 ' 00e5(0084): 76 ' 00e6(0084): 20 ' 00e7(0084): 44 ' 00e8(0085): 61 ' 00e9(0085): 74 ' 00ea(0085): 61 ' 00eb(0085): 3a ' 00ec(0086): 20 ' 00ed(0086): 31 ' 00ee(0086): 34 ' 00ef(0086): 20 ' 00f0(0087): 53 ' 00f1(0087): 65 ' 00f2(0087): 70 ' 00f3(0087): 20 ' 00f4(0088): 32 ' 00f5(0088): 32 ' 00f6(0088): 00 ' byte 0 00f8(0089): ec 00 00 00 ' M0I3 long @M0I3_val 00fc(008a): 5c ' M0I3_val byte "\x1b[10;21H\x1b[37;40mCopyright(c) 2022, All Rights Reserved" 00fd(008a): 78 ' 00fe(008a): 31 ' 00ff(008a): 62 ' 0100(008b): 5b ' 0101(008b): 31 ' 0102(008b): 30 ' 0103(008b): 3b ' 0104(008c): 32 ' 0105(008c): 31 ' 0106(008c): 48 ' 0107(008c): 5c ' 0108(008d): 78 ' 0109(008d): 31 ' 010a(008d): 62 ' 010b(008d): 5b ' 010c(008e): 33 ' 010d(008e): 37 ' 010e(008e): 3b ' 010f(008e): 34 ' 0110(008f): 30 ' 0111(008f): 6d ' 0112(008f): 43 ' 0113(008f): 6f ' 0114(0090): 70 ' 0115(0090): 79 ' 0116(0090): 72 ' 0117(0090): 69 ' 0118(0091): 67 ' 0119(0091): 68 ' 011a(0091): 74 ' 011b(0091): 28 ' 011c(0092): 63 ' 011d(0092): 29 ' 011e(0092): 20 ' 011f(0092): 32 ' 0120(0093): 30 ' 0121(0093): 32 ' 0122(0093): 32 ' 0123(0093): 2c ' 0124(0094): 20 ' 0125(0094): 41 ' 0126(0094): 6c ' 0127(0094): 6c ' 0128(0095): 20 ' 0129(0095): 52 ' 012a(0095): 69 ' 012b(0095): 67 ' 012c(0096): 68 ' 012d(0096): 74 ' 012e(0096): 73 ' 012f(0096): 20 ' 0130(0097): 52 ' 0131(0097): 65 ' 0132(0097): 73 ' 0133(0097): 65 ' 0134(0098): 72 ' 0135(0098): 76 ' 0136(0098): 65 ' 0137(0098): 64 ' 0138(0099): 00 ' byte 0 013c(009a): 30 01 00 00 ' M0I4 long @M0I4_val 0140(009b): 5c ' M0I4_val byte "\x1b[12;31H\x1b[37;40m(1) WiFi Main Menu" 0141(009b): 78 ' 0142(009b): 31 ' 0143(009b): 62 ' 0144(009c): 5b ' 0145(009c): 31 ' 0146(009c): 32 ' 0147(009c): 3b ' 0148(009d): 33 ' 0149(009d): 31 ' 014a(009d): 48 ' 014b(009d): 5c ' 014c(009e): 78 ' 014d(009e): 31 ' 014e(009e): 62 ' 014f(009e): 5b ' 0150(009f): 33 ' 0151(009f): 37 ' 0152(009f): 3b ' 0153(009f): 34 ' 0154(00a0): 30 ' 0155(00a0): 6d ' 0156(00a0): 28 ' 0157(00a0): 31 ' 0158(00a1): 29 ' 0159(00a1): 20 ' 015a(00a1): 57 ' 015b(00a1): 69 ' 015c(00a2): 46 ' 015d(00a2): 69 ' 015e(00a2): 20 ' 015f(00a2): 4d ' 0160(00a3): 61 ' 0161(00a3): 69 ' 0162(00a3): 6e ' 0163(00a3): 20 ' 0164(00a4): 4d ' 0165(00a4): 65 ' 0166(00a4): 6e ' 0167(00a4): 75 ' 0168(00a5): 00 ' byte 0 016c(00a6): 60 01 00 00 ' M0I5 long @M0I5_val 0170(00a7): 5c ' M0I5_val byte "\x1b[14;31H\x1b[37;40m(2) GPS Main Menu " 0171(00a7): 78 ' 0172(00a7): 31 ' 0173(00a7): 62 ' 0174(00a8): 5b ' 0175(00a8): 31 ' 0176(00a8): 34 ' 0177(00a8): 3b ' 0178(00a9): 33 ' 0179(00a9): 31 ' 017a(00a9): 48 ' 017b(00a9): 5c ' 017c(00aa): 78 ' 017d(00aa): 31 ' 017e(00aa): 62 ' 017f(00aa): 5b ' 0180(00ab): 33 ' 0181(00ab): 37 ' 0182(00ab): 3b ' 0183(00ab): 34 ' 0184(00ac): 30 ' 0185(00ac): 6d ' 0186(00ac): 28 ' 0187(00ac): 32 ' 0188(00ad): 29 ' 0189(00ad): 20 ' 018a(00ad): 47 ' 018b(00ad): 50 ' 018c(00ae): 53 ' 018d(00ae): 20 ' 018e(00ae): 4d ' 018f(00ae): 61 ' 0190(00af): 69 ' 0191(00af): 6e ' 0192(00af): 20 ' 0193(00af): 4d ' 0194(00b0): 65 ' 0195(00b0): 6e ' 0196(00b0): 75 ' 0197(00b0): 20 ' 0198(00b1): 00 ' byte 0 019c(00b2): 90 01 00 00 ' M0I6 long @M0I6_val 01a0(00b3): 5c ' M0I6_val byte "\x1b[16;31H\x1b[37;40m(3) Diagnostics " 01a1(00b3): 78 ' 01a2(00b3): 31 ' 01a3(00b3): 62 ' 01a4(00b4): 5b ' 01a5(00b4): 31 ' 01a6(00b4): 36 ' 01a7(00b4): 3b ' 01a8(00b5): 33 ' 01a9(00b5): 31 ' 01aa(00b5): 48 ' 01ab(00b5): 5c ' 01ac(00b6): 78 ' 01ad(00b6): 31 ' 01ae(00b6): 62 ' 01af(00b6): 5b ' 01b0(00b7): 33 ' 01b1(00b7): 37 ' 01b2(00b7): 3b ' 01b3(00b7): 34 ' 01b4(00b8): 30 ' 01b5(00b8): 6d ' 01b6(00b8): 28 ' 01b7(00b8): 33 ' 01b8(00b9): 29 ' 01b9(00b9): 20 ' 01ba(00b9): 44 ' 01bb(00b9): 69 ' 01bc(00ba): 61 ' 01bd(00ba): 67 ' 01be(00ba): 6e ' 01bf(00ba): 6f ' 01c0(00bb): 73 ' 01c1(00bb): 74 ' 01c2(00bb): 69 ' 01c3(00bb): 63 ' 01c4(00bc): 73 ' 01c5(00bc): 20 ' 01c6(00bc): 20 ' 01c7(00bc): 20 ' 01c8(00bd): 00 ' byte 0 01cc(00be): c0 01 00 00 ' M0I7 long @M0I7_val 01d0(00bf): 5c ' M0I7_val byte "\x1b[18;28H\x1b[37;40mMake Selection (1 To 3):" 01d1(00bf): 78 ' 01d2(00bf): 31 ' 01d3(00bf): 62 ' 01d4(00c0): 5b ' 01d5(00c0): 31 ' 01d6(00c0): 38 ' 01d7(00c0): 3b ' 01d8(00c1): 32 ' 01d9(00c1): 38 ' 01da(00c1): 48 ' 01db(00c1): 5c ' 01dc(00c2): 78 ' 01dd(00c2): 31 ' 01de(00c2): 62 ' 01df(00c2): 5b ' 01e0(00c3): 33 ' 01e1(00c3): 37 ' 01e2(00c3): 3b ' 01e3(00c3): 34 ' 01e4(00c4): 30 ' 01e5(00c4): 6d ' 01e6(00c4): 4d ' 01e7(00c4): 61 ' 01e8(00c5): 6b ' 01e9(00c5): 65 ' 01ea(00c5): 20 ' 01eb(00c5): 53 ' 01ec(00c6): 65 ' 01ed(00c6): 6c ' 01ee(00c6): 65 ' 01ef(00c6): 63 ' 01f0(00c7): 74 ' 01f1(00c7): 69 ' 01f2(00c7): 6f ' 01f3(00c7): 6e ' 01f4(00c8): 20 ' 01f5(00c8): 28 ' 01f6(00c8): 31 ' 01f7(00c8): 20 ' 01f8(00c9): 54 ' 01f9(00c9): 6f ' 01fa(00c9): 20 ' 01fb(00c9): 33 ' 01fc(00ca): 29 ' 01fd(00ca): 3a ' 01fe(00ca): 00 ' byte 0 0200(00cb): 00 00 00 00 ' long 0 0204(00cc): 0e 00 7c 5c ' jmp #JMPA 0208(00cd): 00 02 00 00 ' long @C__exit 020c(00ce): ' sbrkinit ' heap starts here 020c(00ce): 00 00 00 00 ' long 0 ' this long is required to workaround an obscure homespun bug!!! 0210(00cf): ' Catalina_RW_Ends 0210(00cf): ' Catalina_RO_Base 0210(00cf): ' Catalina_Code 0210(00cf): ' C__exit 0210(00cf): 80 66 fc a0 ' mov r0,#$80 0214(00d0): 00 66 7c 0c ' clkset r0 0218(00d1): ' C__sys_plugin 0218(00d1): 19 00 7c 5c ' jmp #SYSP 021c(00d2): 0c 00 7c 5c ' jmp #RETN 0220(00d3): ' C_arg_setup 0220(00d3): 03 00 7c 5c ' jmp #LODL ' point to argc address 0224(00d4): 3c 00 00 00 ' long @C_argc_locn 0228(00d5): 2e 5e bc 08 ' rdlong BC,RI 022c(00d6): 2f 6c bc 04 ' rdword r3,BC ' load argc 0230(00d7): 02 5e fc 80 ' add BC,#2 0234(00d8): 2f 6a bc 04 ' rdword r2,BC ' load argv 0238(00d9): 0c 00 7c 5c ' jmp #RETN ' done 023c(00da): ' C_debug_init 023c(00da): 0c 00 7c 5c ' jmp #RETN ' done 0240(00db): ' C_main ' 0240(00db): 0b 00 7c 5c ' jmp #CALA 0244(00dc): 10 02 00 00 ' long @C_arg_setup 0248(00dd): ' Menu_Pad 0248(00dd): 00 ' byte $00[16384 - @Menu_Pad] 4010(104f): 40 00 00 00 ' HELLO long @HELLO_val 4014(1050): ' Catalina_RO_Ends 4014(1050): ' Catalina_Ends ' end of segments