You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3019 lines
178 KiB

|===========================================================================|
Objects : -
vgademo
|
+---vgacolour
|
+---vt100
Object Address : 0010 : Object Name : vgademo
Object Address : 17F4 : Object Name : vgacolour
Object Address : 2B64 : Object Name : vt100
Binary Image Information :
PBASE : 0010
VBASE : 38B8
DBASE : 38E8
PCURR : 12FC
DCURR : 38EC
|===========================================================================|
|===========================================================================|
Object vgademo
Object Base is 0010
|===========================================================================|
Object Constants
|===========================================================================|
Constant _xinfreq = 004C4B40 (5000000)
Constant _clkmode = 00000408 (1032)
Constant CHAR_W = 00000050 (80)
Constant CHAR_H = 0000001E (30)
|===========================================================================|
|===========================================================================|
VBASE Global Variables
|===========================================================================|
VBASE : 0000 LONG Size 0018 Variable params
VBASE : 0018 LONG Size 0004 Variable seed
|===========================================================================|
Object DAT Blocks
|===========================================================================|
002C(0000) 00 00 00 00 | command long 0
0030(0001) 20 07 | screen word $0720[CHAR_W*CHAR_H]
12F0(04B1) 00 | cursor byte 0,0,%110,0,0,0,0,0
12F1(04B1) 00 |
12F2(04B1) 06 |
12F3(04B1) 00 |
12F4(04B2) 00 |
12F5(04B2) 00 |
12F6(04B2) 00 |
12F7(04B2) 00 |
12F8(04B3) 00 00 00 00 | sync long 0
|===========================================================================|
|===========================================================================|
Spin Block main with 0 Parameters and 0 Extra Stack Longs. Method 1
PUB main
Local Parameter DBASE:0000 - Result
|===========================================================================|
20 vga.start(16, @screen, @cursor, @sync)
Addr : 12FC: 01 : Drop Anchor
Addr : 12FD: 37 03 : Constant Mask Y=3 00000010
Addr : 12FF: A7 20 : Memory Op Word PBASE + ADDRESS Address = 0020
Addr : 1301: 87 92 E0 : Memory Op Byte PBASE + ADDRESS Address = 12E0
Addr : 1304: C7 92 E8 : Memory Op Long PBASE + ADDRESS Address = 12E8
Addr : 1307: 06 05 01 : Call Obj.Sub 5 1
21 params[0] := @command
Addr : 130A: C7 1C : Memory Op Long PBASE + ADDRESS Address = 001C
Addr : 130C: 35 : Constant 1 $00000000
Addr : 130D: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000
22 params[1] := @screen
Addr : 130F: A7 20 : Memory Op Word PBASE + ADDRESS Address = 0020
Addr : 1311: 36 : Constant 2 $00000001
Addr : 1312: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000
23 params[2] := @cursor
Addr : 1314: 87 92 E0 : Memory Op Byte PBASE + ADDRESS Address = 12E0
Addr : 1317: 37 00 : Constant Mask Y=0 00000002
Addr : 1319: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000
24 params[3] := @sync
Addr : 131B: C7 92 E8 : Memory Op Long PBASE + ADDRESS Address = 12E8
Addr : 131E: 37 21 : Constant Mask Y=33 Decrement 00000003
Addr : 1320: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000
25 params[4] := CHAR_W
Addr : 1322: 38 50 : Constant 1 Bytes - 50
Addr : 1324: 37 01 : Constant Mask Y=1 00000004
Addr : 1326: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000
26 params[5] := CHAR_H
Addr : 1328: 38 1E : Constant 1 Bytes - 1E
Addr : 132A: 38 05 : Constant 1 Bytes - 05
Addr : 132C: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000
28 vt100.start(@params)
Addr : 132E: 01 : Drop Anchor
Addr : 132F: 43 : Variable Operation Global Offset - 0 Address
Addr : 1330: 06 06 01 : Call Obj.Sub 6 1
30 seed := cnt
Addr : 1333: 3F 91 : Register op CNT Read
Addr : 1335: 59 : Variable Operation Global Offset - 6 Write
32 str(string(27,"[2;34m",27,"[2J",27,"[H","Hello World!",13,10))
Addr : 1336: 01 : Drop Anchor
Addr : 1337: PBASE Constant Address of Label0008
Addr : 1337: 87 94 51 : Memory Op Byte PBASE + ADDRESS Address = 1451
Addr : 133A: 05 03 : Call Sub 3
33 str(string(27,"[7m","Inverse on",13,10))
Addr : 133C: 01 : Drop Anchor
Addr : 133D: PBASE Constant Address of Label0009
Addr : 133D: 87 94 6E : Memory Op Byte PBASE + ADDRESS Address = 146E
Addr : 1340: 05 03 : Call Sub 3
34 str(string(27,"[27m","Inverse off",13,10))
Addr : 1342: 01 : Drop Anchor
Addr : 1343: PBASE Constant Address of Label000A
Addr : 1343: 87 94 7F : Memory Op Byte PBASE + ADDRESS Address = 147F
Addr : 1346: 05 03 : Call Sub 3
35 str(string(27,"[1m","Highlite on",13,10))
Addr : 1348: 01 : Drop Anchor
Addr : 1349: PBASE Constant Address of Label000B
Addr : 1349: 87 94 92 : Memory Op Byte PBASE + ADDRESS Address = 1492
Addr : 134C: 05 03 : Call Sub 3
36 str(string(27,"[2m","Highlite off",13,10))
Addr : 134E: 01 : Drop Anchor
Addr : 134F: PBASE Constant Address of Label000C
Addr : 134F: 87 94 A4 : Memory Op Byte PBASE + ADDRESS Address = 14A4
Addr : 1352: 05 03 : Call Sub 3
37 str(string(27,"[4m","Underline on ",27,"[1m + highlite ",27,"[2m",27,"[7m + inverse ",27,"[0m all off + default color.",13,10))
Addr : 1354: 01 : Drop Anchor
Addr : 1355: PBASE Constant Address of Label000D
Addr : 1355: 87 94 B7 : Memory Op Byte PBASE + ADDRESS Address = 14B7
Addr : 1358: 05 03 : Call Sub 3
38 str(string(27,"[40m","BGD 0"))
Addr : 135A: 01 : Drop Anchor
Addr : 135B: PBASE Constant Address of Label000E
Addr : 135B: 87 95 0B : Memory Op Byte PBASE + ADDRESS Address = 150B
Addr : 135E: 05 03 : Call Sub 3
39 str(string(27,"[41m","BGD 1"))
Addr : 1360: 01 : Drop Anchor
Addr : 1361: PBASE Constant Address of Label000F
Addr : 1361: 87 95 16 : Memory Op Byte PBASE + ADDRESS Address = 1516
Addr : 1364: 05 03 : Call Sub 3
40 str(string(27,"[42m","BGD 2"))
Addr : 1366: 01 : Drop Anchor
Addr : 1367: PBASE Constant Address of Label0010
Addr : 1367: 87 95 21 : Memory Op Byte PBASE + ADDRESS Address = 1521
Addr : 136A: 05 03 : Call Sub 3
41 str(string(27,"[43m","BGD 3"))
Addr : 136C: 01 : Drop Anchor
Addr : 136D: PBASE Constant Address of Label0011
Addr : 136D: 87 95 2C : Memory Op Byte PBASE + ADDRESS Address = 152C
Addr : 1370: 05 03 : Call Sub 3
42 str(string(27,"[44m","BGD 4"))
Addr : 1372: 01 : Drop Anchor
Addr : 1373: PBASE Constant Address of Label0012
Addr : 1373: 87 95 37 : Memory Op Byte PBASE + ADDRESS Address = 1537
Addr : 1376: 05 03 : Call Sub 3
43 str(string(27,"[45m","BGD 5"))
Addr : 1378: 01 : Drop Anchor
Addr : 1379: PBASE Constant Address of Label0013
Addr : 1379: 87 95 42 : Memory Op Byte PBASE + ADDRESS Address = 1542
Addr : 137C: 05 03 : Call Sub 3
44 str(string(27,"[46m","BGD 6"))
Addr : 137E: 01 : Drop Anchor
Addr : 137F: PBASE Constant Address of Label0014
Addr : 137F: 87 95 4D : Memory Op Byte PBASE + ADDRESS Address = 154D
Addr : 1382: 05 03 : Call Sub 3
45 str(string(27,"[47m","BGD 7",13,10))
Addr : 1384: 01 : Drop Anchor
Addr : 1385: PBASE Constant Address of Label0015
Addr : 1385: 87 95 58 : Memory Op Byte PBASE + ADDRESS Address = 1558
Addr : 1388: 05 03 : Call Sub 3
47 str(string(27,"[41m"))
Addr : 138A: 01 : Drop Anchor
Addr : 138B: PBASE Constant Address of Label0016
Addr : 138B: 87 95 65 : Memory Op Byte PBASE + ADDRESS Address = 1565
Addr : 138E: 05 03 : Call Sub 3
49 str(string(27,"[30m","FGD 0"))
Addr : 1390: 01 : Drop Anchor
Addr : 1391: PBASE Constant Address of Label0017
Addr : 1391: 87 95 6B : Memory Op Byte PBASE + ADDRESS Address = 156B
Addr : 1394: 05 03 : Call Sub 3
50 str(string(27,"[31m","FGD 1"))
Addr : 1396: 01 : Drop Anchor
Addr : 1397: PBASE Constant Address of Label0018
Addr : 1397: 87 95 76 : Memory Op Byte PBASE + ADDRESS Address = 1576
Addr : 139A: 05 03 : Call Sub 3
51 str(string(27,"[32m","FGD 2"))
Addr : 139C: 01 : Drop Anchor
Addr : 139D: PBASE Constant Address of Label0019
Addr : 139D: 87 95 81 : Memory Op Byte PBASE + ADDRESS Address = 1581
Addr : 13A0: 05 03 : Call Sub 3
52 str(string(27,"[33m","FGD 3"))
Addr : 13A2: 01 : Drop Anchor
Addr : 13A3: PBASE Constant Address of Label001A
Addr : 13A3: 87 95 8C : Memory Op Byte PBASE + ADDRESS Address = 158C
Addr : 13A6: 05 03 : Call Sub 3
53 str(string(27,"[34m","FGD 4"))
Addr : 13A8: 01 : Drop Anchor
Addr : 13A9: PBASE Constant Address of Label001B
Addr : 13A9: 87 95 97 : Memory Op Byte PBASE + ADDRESS Address = 1597
Addr : 13AC: 05 03 : Call Sub 3
54 str(string(27,"[35m","FGD 5"))
Addr : 13AE: 01 : Drop Anchor
Addr : 13AF: PBASE Constant Address of Label001C
Addr : 13AF: 87 95 A2 : Memory Op Byte PBASE + ADDRESS Address = 15A2
Addr : 13B2: 05 03 : Call Sub 3
55 str(string(27,"[36m","FGD 6"))
Addr : 13B4: 01 : Drop Anchor
Addr : 13B5: PBASE Constant Address of Label001D
Addr : 13B5: 87 95 AD : Memory Op Byte PBASE + ADDRESS Address = 15AD
Addr : 13B8: 05 03 : Call Sub 3
56 str(string(27,"[37m","FGD 7",13,10))
Addr : 13BA: 01 : Drop Anchor
Addr : 13BB: PBASE Constant Address of Label001E
Addr : 13BB: 87 95 B8 : Memory Op Byte PBASE + ADDRESS Address = 15B8
Addr : 13BE: 05 03 : Call Sub 3
57 str(string(27,"[1;40m"))
Addr : 13C0: 01 : Drop Anchor
Addr : 13C1: PBASE Constant Address of Label001F
Addr : 13C1: 87 95 C5 : Memory Op Byte PBASE + ADDRESS Address = 15C5
Addr : 13C4: 05 03 : Call Sub 3
58 str(string(27,"[30m","FGD 0"))
Addr : 13C6: 01 : Drop Anchor
Addr : 13C7: PBASE Constant Address of Label0020
Addr : 13C7: 87 95 CD : Memory Op Byte PBASE + ADDRESS Address = 15CD
Addr : 13CA: 05 03 : Call Sub 3
59 str(string(27,"[31m","FGD 1"))
Addr : 13CC: 01 : Drop Anchor
Addr : 13CD: PBASE Constant Address of Label0021
Addr : 13CD: 87 95 D8 : Memory Op Byte PBASE + ADDRESS Address = 15D8
Addr : 13D0: 05 03 : Call Sub 3
60 str(string(27,"[32m","FGD 2"))
Addr : 13D2: 01 : Drop Anchor
Addr : 13D3: PBASE Constant Address of Label0022
Addr : 13D3: 87 95 E3 : Memory Op Byte PBASE + ADDRESS Address = 15E3
Addr : 13D6: 05 03 : Call Sub 3
61 str(string(27,"[33m","FGD 3"))
Addr : 13D8: 01 : Drop Anchor
Addr : 13D9: PBASE Constant Address of Label0023
Addr : 13D9: 87 95 EE : Memory Op Byte PBASE + ADDRESS Address = 15EE
Addr : 13DC: 05 03 : Call Sub 3
62 str(string(27,"[34m","FGD 4"))
Addr : 13DE: 01 : Drop Anchor
Addr : 13DF: PBASE Constant Address of Label0024
Addr : 13DF: 87 95 F9 : Memory Op Byte PBASE + ADDRESS Address = 15F9
Addr : 13E2: 05 03 : Call Sub 3
63 str(string(27,"[35m","FGD 5"))
Addr : 13E4: 01 : Drop Anchor
Addr : 13E5: PBASE Constant Address of Label0025
Addr : 13E5: 87 96 04 : Memory Op Byte PBASE + ADDRESS Address = 1604
Addr : 13E8: 05 03 : Call Sub 3
64 str(string(27,"[36m","FGD 6"))
Addr : 13EA: 01 : Drop Anchor
Addr : 13EB: PBASE Constant Address of Label0026
Addr : 13EB: 87 96 0F : Memory Op Byte PBASE + ADDRESS Address = 160F
Addr : 13EE: 05 03 : Call Sub 3
65 str(string(27,"[37m","FGD 7",13,10))
Addr : 13F0: 01 : Drop Anchor
Addr : 13F1: PBASE Constant Address of Label0027
Addr : 13F1: 87 96 1A : Memory Op Byte PBASE + ADDRESS Address = 161A
Addr : 13F4: 05 03 : Call Sub 3
66 str(string(27,"[2m","The quick brown fox jumps over the lazy dog.", 13, 10))
Addr : 13F6: 01 : Drop Anchor
Addr : 13F7: PBASE Constant Address of Label0028
Addr : 13F7: 87 96 27 : Memory Op Byte PBASE + ADDRESS Address = 1627
Addr : 13FA: 05 03 : Call Sub 3
68 str(string("Setting a scroll range below here.",13,10))
Addr : 13FC: 01 : Drop Anchor
Addr : 13FD: PBASE Constant Address of Label0029
Addr : 13FD: 87 96 5A : Memory Op Byte PBASE + ADDRESS Address = 165A
Addr : 1400: 05 03 : Call Sub 3
69 str(string(27,"[24H","This part of the screen remains ",27,"[4mstatic",27,"[24m, since it is below the scrolling region."))
Addr : 1402: 01 : Drop Anchor
Addr : 1403: PBASE Constant Address of Label002A
Addr : 1403: 87 96 7F : Memory Op Byte PBASE + ADDRESS Address = 167F
Addr : 1406: 05 03 : Call Sub 3
70 str(string(27,"[12;23r",27,"[41m"))
Addr : 1408: 01 : Drop Anchor
Addr : 1409: PBASE Constant Address of Label002B
Addr : 1409: 87 96 DD : Memory Op Byte PBASE + ADDRESS Address = 16DD
Addr : 140C: 05 03 : Call Sub 3
Addr : 140E: Label002C
72 chr(27)
Addr : 140E: 01 : Drop Anchor
Addr : 140F: 38 1B : Constant 1 Bytes - 1B
Addr : 1411: 05 02 : Call Sub 2
73 chr("[")
Addr : 1413: 01 : Drop Anchor
Addr : 1414: 38 5B : Constant 1 Bytes - 5B
Addr : 1416: 05 02 : Call Sub 2
74 chr("3")
Addr : 1418: 01 : Drop Anchor
Addr : 1419: 38 33 : Constant 1 Bytes - 33
Addr : 141B: 05 02 : Call Sub 2
75 chr("0" + rand & 7)
Addr : 141D: 01 : Drop Anchor
Addr : 141E: 38 30 : Constant 1 Bytes - 30
Addr : 1420: 00 : Drop Anchor Push
Addr : 1421: 05 04 : Call Sub 4
Addr : 1423: 37 22 : Constant Mask Y=34 Decrement 00000007
Addr : 1425: E8 : Math Op &
Addr : 1426: EC : Math Op +
Addr : 1427: 05 02 : Call Sub 2
76 chr("m")
Addr : 1429: 01 : Drop Anchor
Addr : 142A: 38 6D : Constant 1 Bytes - 6D
Addr : 142C: 05 02 : Call Sub 2
77 chr(27)
Addr : 142E: 01 : Drop Anchor
Addr : 142F: 38 1B : Constant 1 Bytes - 1B
Addr : 1431: 05 02 : Call Sub 2
78 chr("[")
Addr : 1433: 01 : Drop Anchor
Addr : 1434: 38 5B : Constant 1 Bytes - 5B
Addr : 1436: 05 02 : Call Sub 2
79 chr("4")
Addr : 1438: 01 : Drop Anchor
Addr : 1439: 38 34 : Constant 1 Bytes - 34
Addr : 143B: 05 02 : Call Sub 2
80 chr("0" + rand & 7)
Addr : 143D: 01 : Drop Anchor
Addr : 143E: 38 30 : Constant 1 Bytes - 30
Addr : 1440: 00 : Drop Anchor Push
Addr : 1441: 05 04 : Call Sub 4
Addr : 1443: 37 22 : Constant Mask Y=34 Decrement 00000007
Addr : 1445: E8 : Math Op &
Addr : 1446: EC : Math Op +
Addr : 1447: 05 02 : Call Sub 2
81 chr("m")
Addr : 1449: 01 : Drop Anchor
Addr : 144A: 38 6D : Constant 1 Bytes - 6D
Addr : 144C: 05 02 : Call Sub 2
82 str(string("Four score and seven years ago our ",27,"[1mfathers",27,"[2m brought forth, upon this continent, a new ",27,"[1mnation",27,"[2m, conceived in Liberty, and dedicated to the proposition that all men are created equal. "))
Addr : 144E: 01 : Drop Anchor
Addr : 144F: PBASE Constant Address of Label002F
Addr : 144F: 87 96 EB : Memory Op Byte PBASE + ADDRESS Address = 16EB
Addr : 1452: 05 03 : Call Sub 3
83 waitcnt(clkfreq/4 + cnt)
Addr : 1454: 35 : Constant 1 $00000000
Addr : 1455: C0 : Memory Op Long POP Address READ
Addr : 1456: 37 01 : Constant Mask Y=1 00000004
Addr : 1458: F6 : Math Op /
Addr : 1459: 3F 91 : Register op CNT Read
Addr : 145B: EC : Math Op +
Addr : 145C: 23 : WaitCnt(count)
Addr : 145D: Label002D
Addr : 145D: JMP Label002C
Addr : 145D: 04 FF AE : Jmp 140E -82
Addr : 1460: Label002E
Addr : 1460: 32 : Return
Addr : 1461: Label0008
Addr : 1461: Data : 1B 5B 32 3B 33 34 6D 1B .[2;34m.
Addr : 1469: Data : 5B 32 4A 1B 5B 48 48 65 [2J.[HHe
Addr : 1471: Data : 6C 6C 6F 20 57 6F 72 6C llo Worl
Addr : 1479: Data : 64 21 0D 0A 00 d!...
Addr : 147E: Label0009
Addr : 147E: Data : 1B 5B 37 6D 49 6E 76 65 .[7mInve
Addr : 1486: Data : 72 73 65 20 6F 6E 0D 0A rse on..
Addr : 148E: Data : 00 .
Addr : 148F: Label000A
Addr : 148F: Data : 1B 5B 32 37 6D 49 6E 76 .[27mInv
Addr : 1497: Data : 65 72 73 65 20 6F 66 66 erse off
Addr : 149F: Data : 0D 0A 00 ...
Addr : 14A2: Label000B
Addr : 14A2: Data : 1B 5B 31 6D 48 69 67 68 .[1mHigh
Addr : 14AA: Data : 6C 69 74 65 20 6F 6E 0D lite on.
Addr : 14B2: Data : 0A 00 ..
Addr : 14B4: Label000C
Addr : 14B4: Data : 1B 5B 32 6D 48 69 67 68 .[2mHigh
Addr : 14BC: Data : 6C 69 74 65 20 6F 66 66 lite off
Addr : 14C4: Data : 0D 0A 00 ...
Addr : 14C7: Label000D
Addr : 14C7: Data : 1B 5B 34 6D 55 6E 64 65 .[4mUnde
Addr : 14CF: Data : 72 6C 69 6E 65 20 6F 6E rline on
Addr : 14D7: Data : 20 1B 5B 31 6D 20 2B 20 .[1m +
Addr : 14DF: Data : 68 69 67 68 6C 69 74 65 highlite
Addr : 14E7: Data : 20 1B 5B 32 6D 1B 5B 37 .[2m.[7
Addr : 14EF: Data : 6D 20 2B 20 69 6E 76 65 m + inve
Addr : 14F7: Data : 72 73 65 20 1B 5B 30 6D rse .[0m
Addr : 14FF: Data : 20 61 6C 6C 20 6F 66 66 all off
Addr : 1507: Data : 20 2B 20 64 65 66 61 75 + defau
Addr : 150F: Data : 6C 74 20 63 6F 6C 6F 72 lt color
Addr : 1517: Data : 2E 0D 0A 00 ....
Addr : 151B: Label000E
Addr : 151B: Data : 1B 5B 34 30 6D 42 47 44 .[40mBGD
Addr : 1523: Data : 20 30 00 0.
Addr : 1526: Label000F
Addr : 1526: Data : 1B 5B 34 31 6D 42 47 44 .[41mBGD
Addr : 152E: Data : 20 31 00 1.
Addr : 1531: Label0010
Addr : 1531: Data : 1B 5B 34 32 6D 42 47 44 .[42mBGD
Addr : 1539: Data : 20 32 00 2.
Addr : 153C: Label0011
Addr : 153C: Data : 1B 5B 34 33 6D 42 47 44 .[43mBGD
Addr : 1544: Data : 20 33 00 3.
Addr : 1547: Label0012
Addr : 1547: Data : 1B 5B 34 34 6D 42 47 44 .[44mBGD
Addr : 154F: Data : 20 34 00 4.
Addr : 1552: Label0013
Addr : 1552: Data : 1B 5B 34 35 6D 42 47 44 .[45mBGD
Addr : 155A: Data : 20 35 00 5.
Addr : 155D: Label0014
Addr : 155D: Data : 1B 5B 34 36 6D 42 47 44 .[46mBGD
Addr : 1565: Data : 20 36 00 6.
Addr : 1568: Label0015
Addr : 1568: Data : 1B 5B 34 37 6D 42 47 44 .[47mBGD
Addr : 1570: Data : 20 37 0D 0A 00 7...
Addr : 1575: Label0016
Addr : 1575: Data : 1B 5B 34 31 6D 00 .[41m.
Addr : 157B: Label0017
Addr : 157B: Data : 1B 5B 33 30 6D 46 47 44 .[30mFGD
Addr : 1583: Data : 20 30 00 0.
Addr : 1586: Label0018
Addr : 1586: Data : 1B 5B 33 31 6D 46 47 44 .[31mFGD
Addr : 158E: Data : 20 31 00 1.
Addr : 1591: Label0019
Addr : 1591: Data : 1B 5B 33 32 6D 46 47 44 .[32mFGD
Addr : 1599: Data : 20 32 00 2.
Addr : 159C: Label001A
Addr : 159C: Data : 1B 5B 33 33 6D 46 47 44 .[33mFGD
Addr : 15A4: Data : 20 33 00 3.
Addr : 15A7: Label001B
Addr : 15A7: Data : 1B 5B 33 34 6D 46 47 44 .[34mFGD
Addr : 15AF: Data : 20 34 00 4.
Addr : 15B2: Label001C
Addr : 15B2: Data : 1B 5B 33 35 6D 46 47 44 .[35mFGD
Addr : 15BA: Data : 20 35 00 5.
Addr : 15BD: Label001D
Addr : 15BD: Data : 1B 5B 33 36 6D 46 47 44 .[36mFGD
Addr : 15C5: Data : 20 36 00 6.
Addr : 15C8: Label001E
Addr : 15C8: Data : 1B 5B 33 37 6D 46 47 44 .[37mFGD
Addr : 15D0: Data : 20 37 0D 0A 00 7...
Addr : 15D5: Label001F
Addr : 15D5: Data : 1B 5B 31 3B 34 30 6D 00 .[1;40m.
Addr : 15DD: Data :
Addr : 15DD: Label0020
Addr : 15DD: Data : 1B 5B 33 30 6D 46 47 44 .[30mFGD
Addr : 15E5: Data : 20 30 00 0.
Addr : 15E8: Label0021
Addr : 15E8: Data : 1B 5B 33 31 6D 46 47 44 .[31mFGD
Addr : 15F0: Data : 20 31 00 1.
Addr : 15F3: Label0022
Addr : 15F3: Data : 1B 5B 33 32 6D 46 47 44 .[32mFGD
Addr : 15FB: Data : 20 32 00 2.
Addr : 15FE: Label0023
Addr : 15FE: Data : 1B 5B 33 33 6D 46 47 44 .[33mFGD
Addr : 1606: Data : 20 33 00 3.
Addr : 1609: Label0024
Addr : 1609: Data : 1B 5B 33 34 6D 46 47 44 .[34mFGD
Addr : 1611: Data : 20 34 00 4.
Addr : 1614: Label0025
Addr : 1614: Data : 1B 5B 33 35 6D 46 47 44 .[35mFGD
Addr : 161C: Data : 20 35 00 5.
Addr : 161F: Label0026
Addr : 161F: Data : 1B 5B 33 36 6D 46 47 44 .[36mFGD
Addr : 1627: Data : 20 36 00 6.
Addr : 162A: Label0027
Addr : 162A: Data : 1B 5B 33 37 6D 46 47 44 .[37mFGD
Addr : 1632: Data : 20 37 0D 0A 00 7...
Addr : 1637: Label0028
Addr : 1637: Data : 1B 5B 32 6D 54 68 65 20 .[2mThe
Addr : 163F: Data : 71 75 69 63 6B 20 62 72 quick br
Addr : 1647: Data : 6F 77 6E 20 66 6F 78 20 own fox
Addr : 164F: Data : 6A 75 6D 70 73 20 6F 76 jumps ov
Addr : 1657: Data : 65 72 20 74 68 65 20 6C er the l
Addr : 165F: Data : 61 7A 79 20 64 6F 67 2E azy dog.
Addr : 1667: Data : 0D 0A 00 ...
Addr : 166A: Label0029
Addr : 166A: Data : 53 65 74 74 69 6E 67 20 Setting
Addr : 1672: Data : 61 20 73 63 72 6F 6C 6C a scroll
Addr : 167A: Data : 20 72 61 6E 67 65 20 62 range b
Addr : 1682: Data : 65 6C 6F 77 20 68 65 72 elow her
Addr : 168A: Data : 65 2E 0D 0A 00 e....
Addr : 168F: Label002A
Addr : 168F: Data : 1B 5B 32 34 48 54 68 69 .[24HThi
Addr : 1697: Data : 73 20 70 61 72 74 20 6F s part o
Addr : 169F: Data : 66 20 74 68 65 20 73 63 f the sc
Addr : 16A7: Data : 72 65 65 6E 20 72 65 6D reen rem
Addr : 16AF: Data : 61 69 6E 73 20 1B 5B 34 ains .[4
Addr : 16B7: Data : 6D 73 74 61 74 69 63 1B mstatic.
Addr : 16BF: Data : 5B 32 34 6D 2C 20 73 69 [24m, si
Addr : 16C7: Data : 6E 63 65 20 69 74 20 69 nce it i
Addr : 16CF: Data : 73 20 62 65 6C 6F 77 20 s below
Addr : 16D7: Data : 74 68 65 20 73 63 72 6F the scro
Addr : 16DF: Data : 6C 6C 69 6E 67 20 72 65 lling re
Addr : 16E7: Data : 67 69 6F 6E 2E 00 gion..
Addr : 16ED: Label002B
Addr : 16ED: Data : 1B 5B 31 32 3B 32 33 72 .[12;23r
Addr : 16F5: Data : 1B 5B 34 31 6D 00 .[41m.
Addr : 16FB: Label002F
Addr : 16FB: Data : 46 6F 75 72 20 73 63 6F Four sco
Addr : 1703: Data : 72 65 20 61 6E 64 20 73 re and s
Addr : 170B: Data : 65 76 65 6E 20 79 65 61 even yea
Addr : 1713: Data : 72 73 20 61 67 6F 20 6F rs ago o
Addr : 171B: Data : 75 72 20 1B 5B 31 6D 66 ur .[1mf
Addr : 1723: Data : 61 74 68 65 72 73 1B 5B athers.[
Addr : 172B: Data : 32 6D 20 62 72 6F 75 67 2m broug
Addr : 1733: Data : 68 74 20 66 6F 72 74 68 ht forth
Addr : 173B: Data : 2C 20 75 70 6F 6E 20 74 , upon t
Addr : 1743: Data : 68 69 73 20 63 6F 6E 74 his cont
Addr : 174B: Data : 69 6E 65 6E 74 2C 20 61 inent, a
Addr : 1753: Data : 20 6E 65 77 20 1B 5B 31 new .[1
Addr : 175B: Data : 6D 6E 61 74 69 6F 6E 1B mnation.
Addr : 1763: Data : 5B 32 6D 2C 20 63 6F 6E [2m, con
Addr : 176B: Data : 63 65 69 76 65 64 20 69 ceived i
Addr : 1773: Data : 6E 20 4C 69 62 65 72 74 n Libert
Addr : 177B: Data : 79 2C 20 61 6E 64 20 64 y, and d
Addr : 1783: Data : 65 64 69 63 61 74 65 64 edicated
Addr : 178B: Data : 20 74 6F 20 74 68 65 20 to the
Addr : 1793: Data : 70 72 6F 70 6F 73 69 74 proposit
Addr : 179B: Data : 69 6F 6E 20 74 68 61 74 ion that
Addr : 17A3: Data : 20 61 6C 6C 20 6D 65 6E all men
Addr : 17AB: Data : 20 61 72 65 20 63 72 65 are cre
Addr : 17B3: Data : 61 74 65 64 20 65 71 75 ated equ
Addr : 17BB: Data : 61 6C 2E 20 20 20 00 al. .
|===========================================================================|
Spin Block chr with 1 Parameters and 0 Extra Stack Longs. Method 2
PUB chr(ch)
Local Parameter DBASE:0000 - Result
Local Parameter DBASE:0004 - ch
|===========================================================================|
87 command := $100 | ch
Addr : 17C2: 37 07 : Constant Mask Y=7 00000100
Addr : 17C4: 64 : Variable Operation Local Offset - 1 Read
Addr : 17C5: EA : Math Op |
Addr : 17C6: C5 1C : Memory Op Long PBASE + WRITE Address = 001C
Addr : 17C8: Label0008
88 repeat while command
Addr : 17C8: C4 1C : Memory Op Long PBASE + READ Address = 001C
Addr : 17CA: JZ Label000A
Addr : 17CA: 0A 02 : jz Address = 17CE 2
Addr : 17CC: Label0009
Addr : 17CC: JMP Label0008
Addr : 17CC: 04 7A : Jmp 17C8 -6
Addr : 17CE: Label000A
Addr : 17CE: 32 : Return
|===========================================================================|
Spin Block str with 1 Parameters and 1 Extra Stack Longs. Method 3
PUB str(strptr) | i
Local Parameter DBASE:0000 - Result
Local Parameter DBASE:0004 - strptr
Local Variable DBASE:0008 - i
|===========================================================================|
91 repeat i from 0 to strsize(strptr)
Addr : 17CF: 35 : Constant 1 $00000000
Addr : 17D0: 69 : Variable Operation Local Offset - 2 Write
Addr : 17D1: Label0008
92 chr(byte[strptr][i])
Addr : 17D1: 01 : Drop Anchor
Addr : 17D2: 64 : Variable Operation Local Offset - 1 Read
Addr : 17D3: 68 : Variable Operation Local Offset - 2 Read
Addr : 17D4: 90 : Memory Op Byte POP Address POP Index READ
Addr : 17D5: 05 02 : Call Sub 2
Addr : 17D7: Label0009
91 repeat i from 0 to strsize(strptr)
Addr : 17D7: 35 : Constant 1 $00000000
Addr : 17D8: 64 : Variable Operation Local Offset - 1 Read
Addr : 17D9: 16 : StrSize(String)
Addr : 17DA: Repeat i Step Label0008
Addr : 17DA: 6A 02 74 : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 17D1 -12
Addr : 17DD: Label000A
Addr : 17DD: 32 : Return
|===========================================================================|
Spin Block rand with 0 Parameters and 0 Extra Stack Longs. Method 4
PUB rand
Local Parameter DBASE:0000 - Result
|===========================================================================|
95 seed := seed * 1103515245 + 12345 + CNT / 7777
Addr : 17DE: 58 : Variable Operation Global Offset - 6 Read
Addr : 17DF: 3B 41 C6 4E 6D : Constant 4 Bytes - 41 C6 4E 6D
Addr : 17E4: F4 : Math Op *
Addr : 17E5: 39 30 39 : Constant 2 Bytes - 30 39
Addr : 17E8: EC : Math Op +
Addr : 17E9: 3F 91 : Register op CNT Read
Addr : 17EB: 39 1E 61 : Constant 2 Bytes - 1E 61
Addr : 17EE: F6 : Math Op /
Addr : 17EF: EC : Math Op +
Addr : 17F0: 59 : Variable Operation Global Offset - 6 Write
96 return seed
Addr : 17F1: 58 : Variable Operation Global Offset - 6 Read
Addr : 17F2: 33 : Return value
Addr : 17F3: Data : 32 2
|===========================================================================|
Object vgacolour
Object Base is 17F4
|===========================================================================|
Object Constants
|===========================================================================|
|===========================================================================|
VBASE Global Variables
|===========================================================================|
VBASE : 0000 LONG Size 0008 Variable cog
|===========================================================================|
Object DAT Blocks
|===========================================================================|
1800(0000) | org 0 ' set origin to $000 for start of program
1800(0000) 00 02 00 00 | d0 long 1 << 9 ' d0 always resides here at $000, executes as NOP
1804(0001) D1 DE BF A0 | :move mov $1EF, main_begin + main_size - 1
1808(0002) 18 02 BC 84 | sub :move,d0s0 ' (do reverse move to avoid overwrite)
180C(0003) 01 34 FC E4 | djnz main_ctr,#:move
1810(0004) 1C 42 BD A0 | :waitvid mov scancode+0, i0 ' org scancode
1814(0005) 1D 44 BD A0 | :shr mov scancode+1, i1 ' waitvid colorbuff+0, scanbuff+0
1818(0006) 19 08 BC 80 | add :waitvid, d1 ' shr scanbuff+0,#8
181C(0007) 19 0A BC 80 | add :shr, d1 ' waitvid colorbuff+1, scanbuff+1
1820(0008) 18 38 BC 80 | add i0, d0s0 ' shr scanbuff+1,#8
1824(0009) 00 3A BC 80 | add i1, d0 ' ...
1828(000A) 04 36 FC E4 | djnz scan_ctr, #:waitvid ' waitvid colorbuff+cols-1, scanbuff+cols-1
182C(000B) 1E 80 BE A0 | mov scancode+cols*2-1, i2 ' mov vscl,#hf
1830(000C) 1F 82 BE A0 | mov scancode+cols*2+0, i3 ' waitvid hvsync,#0
1834(000D) 20 84 BE A0 | mov scancode+cols*2+1, i4 ' jmp #scanret
1838(000E) 21 EC BF A0 | mov dira, reg_dira ' set pin directions
183C(000F) 22 EE BF A0 | mov dirb, reg_dirb
1840(0010) 18 F4 FF 58 | movi frqa, #(pr / 5) << 2 ' set pixel rate
1844(0011) 23 FC BF A0 | mov vcfg, reg_vcfg ' set video configuration
1848(0012) 01 FE FF A0 | mov vscl, #1 ' set video to reload on every pixel
184C(0013) A7 49 BC F8 | waitcnt sync_cnt, colormask ' wait for start value in cnt, add ~1ms
1850(0014) 0E F0 FF 58 | movi ctra, #%00001_110 ' COGs in sync! enable PLLs now - NCOs locked!
1854(0015) 00 48 FC F8 | waitcnt sync_cnt, #0 ' wait ~1ms for PLLs to stabilize - PLLs locked!
1858(0016) 64 FE FF A0 | mov vscl, #100 ' insure initial WAITVIDs lock cleanly
185C(0017) 43 01 7C 5C | jmp #vsync ' jump to vsync - WAITVIDs will now be locked!
1860(0018) 01 02 00 00 | d0s0 long 1 << 9 + 1
1864(0019) 00 04 00 00 | d1 long 1 << 10
1868(001A) AD 00 00 00 | main_ctr long main_size
186C(001B) 50 00 00 00 | scan_ctr long cols
1870(001C) 01 A2 3C FC | i0 waitvid colorbuff+0, scanbuff+0
1874(001D) 08 02 FC 28 | i1 shr scanbuff+0, #8
1878(001E) 18 FE FF A0 | i2 mov vscl, #hf
187C(001F) 00 5A 7F FC | i3 waitvid hvsync, #0
1880(0020) 85 01 7C 5C | i4 jmp #scanret
1884(0021) 00 00 00 00 | reg_dira long 0 ' set at runtime
1888(0022) 00 00 00 00 | reg_dirb long 0 ' set at runtime
188C(0023) 00 00 00 00 | reg_vcfg long 0 ' set at runtime
1890(0024) 00 00 00 00 | sync_cnt long 0 ' set at runtime
1894(0025) | fit scancode ' make sure initialization code and data fit
1894(0025) | There are 124 ($07C) Longs left in the cog
1894(0025) | main_begin org maincode ' main code follows (gets moved into maincode)
1894(0143) 03 A0 FF A0 | vsync mov x, #vs ' do vertical sync lines
1898(0144) 94 3D FF 5C | call #blank_vsync
189C(0145) 11 A0 FF A0 | vb_lines mov x, #vb ' do vertical back porch lines (# set at runtime)
18A0(0146) 94 3D FF 5C | call #blank_vsync
18A4(0147) 9F 9D BF A0 | mov screen_ptr, screen_base ' reset screen pointer to upper-left character
18A8(0148) 00 AA FF A0 | mov row, #0 ' reset row counter for cursor insertion
18AC(0149) 3C AC FF A0 | mov fours, #rows * 4 / 2 ' set number of 4-line builds for whole screen
18B0(014A) A2 9F BF A0 | fourline mov font_ptr, font_part ' get address of appropriate font section
18B4(014B) 0A 9E FF 2C | shl font_ptr, #8+2
18B8(014C) A1 9F BF 80 | add font_ptr, font_base
18BC(014D) 00 B6 FE 54 | movd :pixa, #scanbuff-1 ' reset scanbuff address (pre-decremented)
18C0(014E) 50 CA FE 54 | movd :cola, #colorbuff-1 ' reset colorbuff address (pre-decremented)
18C4(014F) 50 CC FE 54 | movd :colb, #colorbuff-1
18C8(0150) 02 A2 FF A0 | mov y, #2 ' must build scanbuff in two sections because
18CC(0151) A5 FF BF A0 | mov vscl, vscl_line2x ' ..pixel counter is limited to twelve bits
18D0(0152) 00 56 7F FC | :halfrow waitvid underscore, #0 ' output lows to let other COG drive VGA pins
18D4(0153) 28 A0 FF A0 | mov x, #cols/2 ' ..for 2 scan lines, ready for half a row
18D8(0154) CE A5 BF 04 | :column rdword z, screen_ptr ' get character and colors from screen memory
18DC(0155) D2 A9 BF A0 | mov bg, z
18E0(0156) FF A4 FF 60 | and z, #$ff ' mask character code
18E4(0157) 02 A4 FF 2C | shl z, #2 ' * 4
18E8(0158) CF A5 BF 80 | add z, font_ptr ' add font section address to point to 8*4 pixels
18EC(0159) 00 B6 BE 80 | add :pixa, d0 ' increment scanbuff destination addresses
18F0(015A) 02 9C FF 80 | add screen_ptr, #2 ' increment screen memory address
18F4(015B) D2 03 BC 08 | :pixa rdlong scanbuff, z ' read pixel long (8*4) into scanbuff
18F8(015C) 0C A8 FF 20 | ror bg, #12 ' background color in bits 3..0
18FC(015D) D4 A7 BF A0 | mov fg, bg ' foreground color in bits 31..28
1900(015E) 1C A6 FF 28 | shr fg, #28 ' bits 3..0
1904(015F) BE A7 FF 80 | add fg, #fg_clut ' + offset to foreground CLUT
1908(0160) D3 CB BE 50 | movs :cola, fg
190C(0161) 00 CA BE 80 | add :cola, d0
1910(0162) AE A9 FF 80 | add bg, #bg_clut ' + offset to background CLUT
1914(0163) D4 CD BE 50 | movs :colb, bg
1918(0164) 00 CC BE 80 | add :colb, d0
191C(0165) 00 A2 BC A0 | :cola mov colorbuff, 0-0
1920(0166) 00 A2 BC 68 | :colb or colorbuff, 0-0
1924(0167) 54 A1 FF E4 | djnz x, #:column ' another character in this half-row?
1928(0168) 52 A3 FF E4 | djnz y, #:halfrow ' loop to do 2nd half-row, time for 2nd WAITVID
192C(0169) A0 9C FF 84 | sub screen_ptr, #2*cols ' back up to start of same row in screen memory
1930(016A) 02 A4 FF A0 | mov z, #2 ' ready for two cursors
1934(016B) A0 A1 BF 00 | :cursor rdbyte x, cursor_base ' x in range?
1938(016C) 01 40 FF 80 | add cursor_base, #1
193C(016D) 50 A0 7F 85 | cmp x, #cols wc
1940(016E) A0 A3 BF 00 | rdbyte y, cursor_base ' y match?
1944(016F) 01 40 FF 80 | add cursor_base, #1
1948(0170) D5 A3 3F 86 | cmp y, row wz
194C(0171) A0 A3 BF 00 | rdbyte y, cursor_base ' get cursor mode
1950(0172) 01 40 FF 80 | add cursor_base, #1
1954(0173) 80 01 5C 5C | if_nc_or_nz jmp #:nocursor ' if cursor not in scanbuff, no cursor
1958(0174) 01 A0 FF 80 | add x, #scanbuff ' cursor in scanbuff, set scanbuff address
195C(0175) D0 FF BE 54 | movd :xor, x
1960(0176) 02 A2 7F 61 | test y, #%010 wc ' get mode bits into flags
1964(0177) 01 A2 7F 62 | test y, #%001 wz
1968(0178) 80 01 48 5C | if_nc_and_z jmp #:nocursor ' if cursor disabled, no cursor
196C(0179) F1 53 23 61 | if_c_and_z test slowbit, cnt wc ' if blink mode, get blink state
1970(017A) F1 55 13 61 | if_c_and_nz test fastbit, cnt wc
1974(017B) 04 A2 7F 62 | test y, #%100 wz ' get box or underscore cursor piece
1978(017C) A8 A1 AB A0 | if_z mov x, longmask
197C(017D) AB A1 97 A0 | if_nz mov x, underscore
1980(017E) 03 44 57 86 | if_nz cmp font_part, #3 wz ' if underscore, must be last font section
1984(017F) D0 03 88 6C | :xor if_nc_and_z xor scanbuff, x ' conditionally xor cursor into scanbuff
1988(0180) 6B A5 FF E4 | :nocursor djnz z, #:cursor ' second cursor?
198C(0181) 06 40 FF 84 | sub cursor_base, #3*2 ' restore cursor base
1990(0182) 04 A2 FF A0 | mov y, #4 ' ready for four scan lines
1994(0183) A6 FF BF A0 | scanline mov vscl, vscl_chr ' set pixel rate for characters
1998(0184) A1 00 7C 5C | jmp #scancode ' jump to scanbuff display routine in scancode
199C(0185) 28 FE FF A0 | scanret mov vscl, #hs ' do horizontal sync pixels
19A0(0186) 01 5A 7F FC | waitvid hvsync, #1 ' #1 makes hsync active
19A4(0187) 80 FE FF A0 | mov vscl, #hb ' do horizontal back porch pixels
19A8(0188) 00 5A 7F FC | waitvid hvsync, #0 ' #0 makes hsync inactive
19AC(0189) 08 A0 FC 28 | shr scanbuff+cols-1, #8 ' shift last column's pixels right by 8
19B0(018A) 83 A3 FF E4 | djnz y, #scanline ' another scan line?
19B4(018B) 02 44 FF 80 | add font_part, #2 ' if font_part + 2 => 4, subtract 4 (new row)
19B8(018C) 04 44 FF E1 | cmpsub font_part, #4 wc ' c=0 for same row, c=1 for new row
19BC(018D) A0 9C F3 80 | if_c add screen_ptr, #2*cols ' if new row, advance screen pointer
19C0(018E) 01 AA F3 80 | if_c add row, #1 ' if new row, increment row counter
19C4(018F) 4A AD FF E4 | djnz fours, #fourline ' another 4-line build/display?
19C8(0190) F0 51 3F 08 | wrlong longmask,par ' write -1 to refresh indicator
19CC(0191) 14 A0 FF A0 | vf_lines mov x,#vf ' do vertical front porch lines (# set at runtime)
19D0(0192) 95 3D FF 5C | call #blank
19D4(0193) 43 01 7C 5C | jmp #vsync ' new field, loop to vsync
19D8(0194) 01 5B FF 6C | blank_vsync xor hvsync,#$101 ' flip vertical sync bits
19DC(0195) A3 FF BF A0 | blank mov vscl, hx ' do blank pixels
19E0(0196) 00 5A 7F FC | waitvid hvsync, #0
19E4(0197) 18 FE FF A0 | mov vscl, #hf ' do horizontal front porch pixels
19E8(0198) 00 5A 7F FC | waitvid hvsync, #0
19EC(0199) 28 FE FF A0 | mov vscl, #hs ' do horizontal sync pixels
19F0(019A) 01 5A 7F FC | waitvid hvsync, #1
19F4(019B) 80 FE FF A0 | mov vscl, #hb ' do horizontal back porch pixels
19F8(019C) 00 5A 7F FC | waitvid hvsync, #0
19FC(019D) 95 A1 FF E4 | djnz x,#blank ' another line?
1A00(019E) | blank_ret
1A00(019E) | blank_vsync_ret
1A00(019E) 00 00 7C 5C | ret
1A04(019F) 00 00 00 00 | screen_base long 0 ' set at runtime (3 contiguous longs)
1A08(01A0) 00 00 00 00 | cursor_base long 0 ' set at runtime
1A0C(01A1) 00 00 00 00 | font_base long 0 ' set at runtime
1A10(01A2) 00 00 00 00 | font_part long 0 ' set at runtime
1A14(01A3) 80 02 00 00 | hx long hp ' visible pixels per scan line
1A18(01A4) 40 03 00 00 | vscl_line long hp + hf + hs + hb ' total number of pixels per scan line
1A1C(01A5) 80 06 00 00 | vscl_line2x long (hp + hf + hs + hb) * 2 ' total number of pixels per 2 scan lines
1A20(01A6) 08 10 00 00 | vscl_chr long 1 << 12 + 8 ' 1 clock per pixel and 8 pixels per set
1A24(01A7) FC FC 00 00 | colormask long $FCFC ' mask to isolate R,G,B bits from H,V
1A28(01A8) FF FF FF FF | longmask long $FFFFFFFF ' all bits set
1A2C(01A9) 00 00 00 02 | slowbit long 1 << 25 ' cnt mask for slow cursor blink
1A30(01AA) 00 00 00 01 | fastbit long 1 << 24 ' cnt mask for fast cursor blink
1A34(01AB) 00 00 FF FF | underscore long $FFFF0000 ' underscore cursor pattern
1A38(01AC) 03 03 00 00 | hv long hv_inactive ' -H,-V states
1A3C(01AD) 03 01 00 00 | hvsync long hv_inactive ^ $200 ' +/-H,-V states
1A40(01AE) 03 03 00 00 | bg_clut long %00000011_00000011 ' black
1A44(01AF) 0B 03 00 00 | long %00000011_00001011 ' dark blue
1A48(01B0) 23 03 00 00 | long %00000011_00100011 ' dark green
1A4C(01B1) 2B 03 00 00 | long %00000011_00101011 ' dark cyan
1A50(01B2) 83 03 00 00 | long %00000011_10000011 ' dark red
1A54(01B3) 8B 03 00 00 | long %00000011_10001011 ' dark magenta
1A58(01B4) A3 03 00 00 | long %00000011_10100011 ' brown
1A5C(01B5) AB 03 00 00 | long %00000011_10101011 ' light gray
1A60(01B6) 57 03 00 00 | long %00000011_01010111 ' dark gray
1A64(01B7) 0F 03 00 00 | long %00000011_00001111 ' light blue
1A68(01B8) 33 03 00 00 | long %00000011_00110011 ' light green
1A6C(01B9) 3F 03 00 00 | long %00000011_00111111 ' light cyan
1A70(01BA) C3 03 00 00 | long %00000011_11000011 ' light red
1A74(01BB) CF 03 00 00 | long %00000011_11001111 ' light magenta
1A78(01BC) F3 03 00 00 | long %00000011_11110011 ' light yellow
1A7C(01BD) FF 03 00 00 | long %00000011_11111111 ' white
1A80(01BE) 03 03 00 00 | fg_clut long %00000011_00000011 ' black
1A84(01BF) 03 07 00 00 | long %00000111_00000011 ' dark blue
1A88(01C0) 03 13 00 00 | long %00010011_00000011 ' dark green
1A8C(01C1) 03 17 00 00 | long %00010111_00000011 ' dark cyan
1A90(01C2) 03 43 00 00 | long %01000011_00000011 ' dark red
1A94(01C3) 03 47 00 00 | long %01000111_00000011 ' dark magenta
1A98(01C4) 03 53 00 00 | long %01010011_00000011 ' brown
1A9C(01C5) 03 AB 00 00 | long %10101011_00000011 ' light gray
1AA0(01C6) 03 57 00 00 | long %01010111_00000011 ' dark gray
1AA4(01C7) 03 0B 00 00 | long %00001011_00000011 ' blue
1AA8(01C8) 03 23 00 00 | long %00100011_00000011 ' green
1AAC(01C9) 03 2B 00 00 | long %00101011_00000011 ' cyan
1AB0(01CA) 03 83 00 00 | long %10000011_00000011 ' red
1AB4(01CB) 03 8B 00 00 | long %10001011_00000011 ' magenta
1AB8(01CC) 03 A3 00 00 | long %10100011_00000011 ' yellow
1ABC(01CD) 03 FF 00 00 | long %11111111_00000011 ' white
1AC0(01CE) | screen_ptr res 1
1AC0(01CF) | font_ptr res 1
1AC0(01D0) | x res 1
1AC0(01D1) | y res 1
1AC0(01D2) | z res 1
1AC0(01D3) | fg res 1
1AC0(01D4) | bg res 1
1AC0(01D5) | row res 1
1AC0(01D6) | fours res 1
1AC0(01D7) | fit $1f0
1AC0(01D7) | There are 25 ($019) Longs left in the cog
1AC0(01D7) 00 00 00 00 | font long
1AC0(01D7) 00 BA 82 00 | long $0082ba00,$00000000,$2a552a00,$36360000,$061e0000,$061c0000,$06060000,$3c000000
1AC4(01D8) 00 00 00 00 |
1AC8(01D9) 00 2A 55 2A |
1ACC(01DA) 00 00 36 36 |
1AD0(01DB) 00 00 1E 06 |
1AD4(01DC) 00 00 1C 06 |
1AD8(01DD) 00 00 06 06 |
1ADC(01DE) 00 00 00 3C |
1AE0(01DF) 00 00 00 00 | long $00000000,$6e660000,$66660000,$18181818,$00000000,$00000000,$18181818,$18181818
1AE4(01E0) 00 00 66 6E |
1AE8(01E1) 00 00 66 66 |
1AEC(01E2) 18 18 18 18 |
1AF0(01E3) 00 00 00 00 |
1AF4(01E4) 00 00 00 00 |
1AF8(01E5) 18 18 18 18 |
1AFC(01E6) 18 18 18 18 |
1B00(01E7) FF FF 00 00 | long $0000ffff,$00000000,$00000000,$00000000,$00000000,$18181818,$18181818,$18181818
1B04(01E8) 00 00 00 00 |
1B08(01E9) 00 00 00 00 |
1B0C(01EA) 00 00 00 00 |
1B10(01EB) 00 00 00 00 |
1B14(01EC) 18 18 18 18 |
1B18(01ED) 18 18 18 18 |
1B1C(01EE) 18 18 18 18 |
1B20(01EF) 00 00 00 00 | long $00000000,$18181818,$60000000,$06000000,$00000000,$00000000,$38000000,$00000000
1B24(01F0) 18 18 18 18 |
1B28(01F1) 00 00 00 60 |
1B2C(01F2) 00 00 00 06 |
1B30(01F3) 00 00 00 00 |
1B34(01F4) 00 00 00 00 |
1B38(01F5) 00 00 00 38 |
1B3C(01F6) 00 00 00 00 |
1B40(01F7) 00 00 00 00 | long $00000000,$18000000,$36000000,$24000000,$18000000,$4e000000,$1c000000,$18000000
1B44(01F8) 00 00 00 18 |
1B48(01F9) 00 00 00 36 |
1B4C(01FA) 00 00 00 24 |
1B50(01FB) 00 00 00 18 |
1B54(01FC) 00 00 00 4E |
1B58(01FD) 00 00 00 1C |
1B5C(01FE) 00 00 00 18 |
1B60(01FF) 00 00 00 30 | long $30000000,$0c000000,$00000000,$00000000,$00000000,$00000000,$00000000,$60000000
1B64(0200) 00 00 00 0C |
1B68(0201) 00 00 00 00 |
1B6C(0202) 00 00 00 00 |
1B70(0203) 00 00 00 00 |
1B74(0204) 00 00 00 00 |
1B78(0205) 00 00 00 00 |
1B7C(0206) 00 00 00 60 |
1B80(0207) 00 00 00 18 | long $18000000,$18000000,$3c000000,$7e000000,$60000000,$7e000000,$3c000000,$7e000000
1B84(0208) 00 00 00 18 |
1B88(0209) 00 00 00 3C |
1B8C(020A) 00 00 00 7E |
1B90(020B) 00 00 00 60 |
1B94(020C) 00 00 00 7E |
1B98(020D) 00 00 00 3C |
1B9C(020E) 00 00 00 7E |
1BA0(020F) 00 00 00 3C | long $3c000000,$3c000000,$00000000,$00000000,$60000000,$00000000,$06000000,$3c000000
1BA4(0210) 00 00 00 3C |
1BA8(0211) 00 00 00 00 |
1BAC(0212) 00 00 00 00 |
1BB0(0213) 00 00 00 60 |
1BB4(0214) 00 00 00 00 |
1BB8(0215) 00 00 00 06 |
1BBC(0216) 00 00 00 3C |
1BC0(0217) 00 00 00 3C | long $3c000000,$3c000000,$3e000000,$3c000000,$3e000000,$7e000000,$7e000000,$3c000000
1BC4(0218) 00 00 00 3C |
1BC8(0219) 00 00 00 3E |
1BCC(021A) 00 00 00 3C |
1BD0(021B) 00 00 00 3E |
1BD4(021C) 00 00 00 7E |
1BD8(021D) 00 00 00 7E |
1BDC(021E) 00 00 00 3C |
1BE0(021F) 00 00 00 66 | long $66000000,$7e000000,$60000000,$46000000,$06000000,$42000000,$66000000,$3c000000
1BE4(0220) 00 00 00 7E |
1BE8(0221) 00 00 00 60 |
1BEC(0222) 00 00 00 46 |
1BF0(0223) 00 00 00 06 |
1BF4(0224) 00 00 00 42 |
1BF8(0225) 00 00 00 66 |
1BFC(0226) 00 00 00 3C |
1C00(0227) 00 00 00 3E | long $3e000000,$3c000000,$3e000000,$3c000000,$7e000000,$66000000,$66000000,$66000000
1C04(0228) 00 00 00 3C |
1C08(0229) 00 00 00 3E |
1C0C(022A) 00 00 00 3C |
1C10(022B) 00 00 00 7E |
1C14(022C) 00 00 00 66 |
1C18(022D) 00 00 00 66 |
1C1C(022E) 00 00 00 66 |
1C20(022F) 00 00 00 42 | long $42000000,$66000000,$7e000000,$3c000000,$06000000,$3c000000,$18000000,$00000000
1C24(0230) 00 00 00 66 |
1C28(0231) 00 00 00 7E |
1C2C(0232) 00 00 00 3C |
1C30(0233) 00 00 00 06 |
1C34(0234) 00 00 00 3C |
1C38(0235) 00 00 00 18 |
1C3C(0236) 00 00 00 00 |
1C40(0237) 00 00 0C 18 | long $180c0000,$00000000,$06000000,$00000000,$60000000,$00000000,$38000000,$00000000
1C44(0238) 00 00 00 00 |
1C48(0239) 00 00 00 06 |
1C4C(023A) 00 00 00 00 |
1C50(023B) 00 00 00 60 |
1C54(023C) 00 00 00 00 |
1C58(023D) 00 00 00 38 |
1C5C(023E) 00 00 00 00 |
1C60(023F) 00 00 00 06 | long $06000000,$18000000,$60000000,$06000000,$1c000000,$00000000,$00000000,$00000000
1C64(0240) 00 00 00 18 |
1C68(0241) 00 00 00 60 |
1C6C(0242) 00 00 00 06 |
1C70(0243) 00 00 00 1C |
1C74(0244) 00 00 00 00 |
1C78(0245) 00 00 00 00 |
1C7C(0246) 00 00 00 00 |
1C80(0247) 00 00 00 00 | long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
1C84(0248) 00 00 00 00 |
1C88(0249) 00 00 00 00 |
1C8C(024A) 00 00 00 00 |
1C90(024B) 00 00 00 00 |
1C94(024C) 00 00 00 00 |
1C98(024D) 00 00 00 00 |
1C9C(024E) 00 00 00 00 |
1CA0(024F) 00 00 00 00 | long $00000000,$00000000,$00000000,$38000000,$18000000,$1c000000,$4c000000,$aa55aa55
1CA4(0250) 00 00 00 00 |
1CA8(0251) 00 00 00 00 |
1CAC(0252) 00 00 00 38 |
1CB0(0253) 00 00 00 18 |
1CB4(0254) 00 00 00 1C |
1CB8(0255) 00 00 00 4C |
1CBC(0256) 55 AA 55 AA |
1CC0(0257) 00 00 00 00 | long $00000000,$00000000,$2a552a00,$36360000,$061e0000,$061c0000,$06060000,$3c000000
1CC4(0258) 00 00 00 00 |
1CC8(0259) 00 2A 55 2A |
1CCC(025A) 00 00 36 36 |
1CD0(025B) 00 00 1E 06 |
1CD4(025C) 00 00 1C 06 |
1CD8(025D) 00 00 06 06 |
1CDC(025E) 00 00 00 3C |
1CE0(025F) 00 00 00 00 | long $00000000,$6e660000,$66660000,$24242424,$00000000,$00000000,$24242424,$24242424
1CE4(0260) 00 00 66 6E |
1CE8(0261) 00 00 66 66 |
1CEC(0262) 24 24 24 24 |
1CF0(0263) 00 00 00 00 |
1CF4(0264) 00 00 00 00 |
1CF8(0265) 24 24 24 24 |
1CFC(0266) 24 24 24 24 |
1D00(0267) FF 00 FF 00 | long $00ff00ff,$ff000000,$00000000,$00000000,$00000000,$24242424,$24242424,$24242424
1D04(0268) 00 00 00 FF |
1D08(0269) 00 00 00 00 |
1D0C(026A) 00 00 00 00 |
1D10(026B) 00 00 00 00 |
1D14(026C) 24 24 24 24 |
1D18(026D) 24 24 24 24 |
1D1C(026E) 24 24 24 24 |
1D20(026F) 00 00 00 00 | long $00000000,$24242424,$60000000,$06000000,$00000000,$00000000,$38000000,$00000000
1D24(0270) 24 24 24 24 |
1D28(0271) 00 00 00 60 |
1D2C(0272) 00 00 00 06 |
1D30(0273) 00 00 00 00 |
1D34(0274) 00 00 00 00 |
1D38(0275) 00 00 00 38 |
1D3C(0276) 00 00 00 00 |
1D40(0277) 00 00 00 00 | long $00000000,$18000000,$36000000,$24000000,$18000000,$4e000000,$1c000000,$18000000
1D44(0278) 00 00 00 18 |
1D48(0279) 00 00 00 36 |
1D4C(027A) 00 00 00 24 |
1D50(027B) 00 00 00 18 |
1D54(027C) 00 00 00 4E |
1D58(027D) 00 00 00 1C |
1D5C(027E) 00 00 00 18 |
1D60(027F) 00 00 00 30 | long $30000000,$0c000000,$00000000,$00000000,$00000000,$00000000,$00000000,$60000000
1D64(0280) 00 00 00 0C |
1D68(0281) 00 00 00 00 |
1D6C(0282) 00 00 00 00 |
1D70(0283) 00 00 00 00 |
1D74(0284) 00 00 00 00 |
1D78(0285) 00 00 00 00 |
1D7C(0286) 00 00 00 60 |
1D80(0287) 00 00 00 18 | long $18000000,$18000000,$3c000000,$7e000000,$60000000,$7e000000,$3c000000,$7e000000
1D84(0288) 00 00 00 18 |
1D88(0289) 00 00 00 3C |
1D8C(028A) 00 00 00 7E |
1D90(028B) 00 00 00 60 |
1D94(028C) 00 00 00 7E |
1D98(028D) 00 00 00 3C |
1D9C(028E) 00 00 00 7E |
1DA0(028F) 00 00 00 3C | long $3c000000,$3c000000,$00000000,$00000000,$60000000,$00000000,$06000000,$3c000000
1DA4(0290) 00 00 00 3C |
1DA8(0291) 00 00 00 00 |
1DAC(0292) 00 00 00 00 |
1DB0(0293) 00 00 00 60 |
1DB4(0294) 00 00 00 00 |
1DB8(0295) 00 00 00 06 |
1DBC(0296) 00 00 00 3C |
1DC0(0297) 00 00 00 3C | long $3c000000,$3c000000,$3e000000,$3c000000,$3e000000,$7e000000,$7e000000,$3c000000
1DC4(0298) 00 00 00 3C |
1DC8(0299) 00 00 00 3E |
1DCC(029A) 00 00 00 3C |
1DD0(029B) 00 00 00 3E |
1DD4(029C) 00 00 00 7E |
1DD8(029D) 00 00 00 7E |
1DDC(029E) 00 00 00 3C |
1DE0(029F) 00 00 00 66 | long $66000000,$7e000000,$60000000,$46000000,$06000000,$42000000,$66000000,$3c000000
1DE4(02A0) 00 00 00 7E |
1DE8(02A1) 00 00 00 60 |
1DEC(02A2) 00 00 00 46 |
1DF0(02A3) 00 00 00 06 |
1DF4(02A4) 00 00 00 42 |
1DF8(02A5) 00 00 00 66 |
1DFC(02A6) 00 00 00 3C |
1E00(02A7) 00 00 00 3E | long $3e000000,$3c000000,$3e000000,$3c000000,$7e000000,$66000000,$66000000,$66000000
1E04(02A8) 00 00 00 3C |
1E08(02A9) 00 00 00 3E |
1E0C(02AA) 00 00 00 3C |
1E10(02AB) 00 00 00 7E |
1E14(02AC) 00 00 00 66 |
1E18(02AD) 00 00 00 66 |
1E1C(02AE) 00 00 00 66 |
1E20(02AF) 00 00 00 42 | long $42000000,$66000000,$7e000000,$3c000000,$06000000,$3c000000,$18000000,$00000000
1E24(02B0) 00 00 00 66 |
1E28(02B1) 00 00 00 7E |
1E2C(02B2) 00 00 00 3C |
1E30(02B3) 00 00 00 06 |
1E34(02B4) 00 00 00 3C |
1E38(02B5) 00 00 00 18 |
1E3C(02B6) 00 00 00 00 |
1E40(02B7) 00 00 0C 18 | long $180c0000,$00000000,$06000000,$00000000,$60000000,$00000000,$38000000,$00000000
1E44(02B8) 00 00 00 00 |
1E48(02B9) 00 00 00 06 |
1E4C(02BA) 00 00 00 00 |
1E50(02BB) 00 00 00 60 |
1E54(02BC) 00 00 00 00 |
1E58(02BD) 00 00 00 38 |
1E5C(02BE) 00 00 00 00 |
1E60(02BF) 00 00 00 06 | long $06000000,$18000000,$60000000,$06000000,$1c000000,$00000000,$00000000,$00000000
1E64(02C0) 00 00 00 18 |
1E68(02C1) 00 00 00 60 |
1E6C(02C2) 00 00 00 06 |
1E70(02C3) 00 00 00 1C |
1E74(02C4) 00 00 00 00 |
1E78(02C5) 00 00 00 00 |
1E7C(02C6) 00 00 00 00 |
1E80(02C7) 00 00 00 00 | long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
1E84(02C8) 00 00 00 00 |
1E88(02C9) 00 00 00 00 |
1E8C(02CA) 00 00 00 00 |
1E90(02CB) 00 00 00 00 |
1E94(02CC) 00 00 00 00 |
1E98(02CD) 00 00 00 00 |
1E9C(02CE) 00 00 00 00 |
1EA0(02CF) 00 00 00 00 | long $00000000,$00000000,$00000000,$38000000,$18000000,$1c000000,$4c000000,$aa55aa55
1EA4(02D0) 00 00 00 00 |
1EA8(02D1) 00 00 00 00 |
1EAC(02D2) 00 00 00 38 |
1EB0(02D3) 00 00 00 18 |
1EB4(02D4) 00 00 00 1C |
1EB8(02D5) 00 00 00 4C |
1EBC(02D6) 55 AA 55 AA |
1EC0(02D7) 82 82 00 82 | long $82008282,$3c180000,$2a552a55,$0036363e,$0006060e,$001c0606,$001e0606,$003c6666
1EC4(02D8) 00 00 18 3C |
1EC8(02D9) 55 2A 55 2A |
1ECC(02DA) 3E 36 36 00 |
1ED0(02DB) 0E 06 06 00 |
1ED4(02DC) 06 06 1C 00 |
1ED8(02DD) 06 06 1E 00 |
1EDC(02DE) 66 66 3C 00 |
1EE0(02DF) 18 18 7E 18 | long $187e1818,$0066767e,$00183c24,$1f181818,$1f000000,$f8000000,$f8181818,$ff181818
1EE4(02E0) 7E 76 66 00 |
1EE8(02E1) 24 3C 18 00 |
1EEC(02E2) 18 18 18 1F |
1EF0(02E3) 00 00 00 1F |
1EF4(02E4) 00 00 00 F8 |
1EF8(02E5) 18 18 18 F8 |
1EFC(02E6) 18 18 18 FF |
1F00(02E7) 00 00 00 00 | long $00000000,$0000ffff,$00000000,$00000000,$00000000,$f8181818,$1f181818,$ff181818
1F04(02E8) FF FF 00 00 |
1F08(02E9) 00 00 00 00 |
1F0C(02EA) 00 00 00 00 |
1F10(02EB) 00 00 00 00 |
1F14(02EC) 18 18 18 F8 |
1F18(02ED) 18 18 18 1F |
1F1C(02EE) 18 18 18 FF |
1F20(02EF) 00 00 00 FF | long $ff000000,$18181818,$0c060c30,$3060300c,$667e0000,$187e3030,$3e0c0c6c,$18180000
1F24(02F0) 18 18 18 18 |
1F28(02F1) 30 0C 06 0C |
1F2C(02F2) 0C 30 60 30 |
1F30(02F3) 00 00 7E 66 |
1F34(02F4) 30 30 7E 18 |
1F38(02F5) 6C 0C 0C 3E |
1F3C(02F6) 00 00 18 18 |
1F40(02F7) 00 00 00 00 | long $00000000,$18181818,$00003636,$247e7e24,$3c1a5a3c,$18302e6a,$1c363636,$00181818
1F44(02F8) 18 18 18 18 |
1F48(02F9) 36 36 00 00 |
1F4C(02FA) 24 7E 7E 24 |
1F50(02FB) 3C 5A 1A 3C |
1F54(02FC) 6A 2E 30 18 |
1F58(02FD) 36 36 36 1C |
1F5C(02FE) 18 18 18 00 |
1F60(02FF) 18 18 0C 0C | long $0c0c1818,$30301818,$7e182400,$7e181800,$00000000,$00000000,$00000000,$18303060
1F64(0300) 18 18 30 30 |
1F68(0301) 00 24 18 7E |
1F6C(0302) 00 18 18 7E |
1F70(0303) 00 00 00 00 |
1F74(0304) 00 00 00 00 |
1F78(0305) 00 00 00 00 |
1F7C(0306) 60 30 30 18 |
1F80(0307) 24 66 66 66 | long $66666624,$18181a1c,$38606666,$3c183060,$666c7870,$663e0606,$3e060666,$30306060
1F84(0308) 1C 1A 18 18 |
1F88(0309) 66 66 60 38 |
1F8C(030A) 60 30 18 3C |
1F90(030B) 70 78 6C 66 |
1F94(030C) 06 06 3E 66 |
1F98(030D) 66 06 06 3E |
1F9C(030E) 60 60 30 30 |
1FA0(030F) 66 66 66 3C | long $3c666666,$7c666666,$183c1800,$183c1800,$060c1830,$007e0000,$6030180c,$38606666
1FA4(0310) 66 66 66 7C |
1FA8(0311) 00 18 3C 18 |
1FAC(0312) 00 18 3C 18 |
1FB0(0313) 30 18 0C 06 |
1FB4(0314) 00 00 7E 00 |
1FB8(0315) 0C 18 30 60 |
1FBC(0316) 66 66 60 38 |
1FC0(0317) 62 62 7A 6A | long $6a7a6262,$7e666666,$3e666666,$06060666,$66666666,$3e060606,$3e060606,$76060666
1FC4(0318) 66 66 66 7E |
1FC8(0319) 66 66 66 3E |
1FCC(031A) 66 06 06 06 |
1FD0(031B) 66 66 66 66 |
1FD4(031C) 06 06 06 3E |
1FD8(031D) 06 06 06 3E |
1FDC(031E) 66 06 06 76 |
1FE0(031F) 66 66 66 7E | long $7e666666,$18181818,$60606060,$0e1e3666,$06060606,$667e7e66,$7e6e6e66,$66666666
1FE4(0320) 18 18 18 18 |
1FE8(0321) 60 60 60 60 |
1FEC(0322) 66 36 1E 0E |
1FF0(0323) 06 06 06 06 |
1FF4(0324) 66 7E 7E 66 |
1FF8(0325) 66 6E 6E 7E |
1FFC(0326) 66 66 66 66 |
2000(0327) 66 66 66 3E | long $3e666666,$66666666,$3e666666,$3c060666,$18181818,$66666666,$24246666,$66666666
2004(0328) 66 66 66 66 |
2008(0329) 66 66 66 3E |
200C(032A) 66 06 06 3C |
2010(032B) 18 18 18 18 |
2014(032C) 66 66 66 66 |
2018(032D) 66 66 24 24 |
201C(032E) 66 66 66 66 |
2020(032F) 66 24 3C 18 | long $183c2466,$183c3c66,$18306060,$0c0c0c0c,$180c0c06,$30303030,$0042663c,$00000000
2024(0330) 66 3C 3C 18 |
2028(0331) 60 60 30 18 |
202C(0332) 0C 0C 0C 0C |
2030(0333) 06 0C 0C 18 |
2034(0334) 30 30 30 30 |
2038(0335) 3C 66 42 00 |
203C(0336) 00 00 00 00 |
2040(0337) 30 00 00 00 | long $00000030,$603c0000,$663e0606,$663c0000,$667c6060,$663c0000,$1e0c0c6c,$665c0000
2044(0338) 00 00 3C 60 |
2048(0339) 06 06 3E 66 |
204C(033A) 00 00 3C 66 |
2050(033B) 60 60 7C 66 |
2054(033C) 00 00 3C 66 |
2058(033D) 6C 0C 0C 1E |
205C(033E) 00 00 5C 66 |
2060(033F) 06 06 3E 66 | long $663e0606,$181c0018,$60600060,$36660606,$18181818,$fe6a0000,$663e0000,$663c0000
2064(0340) 18 00 1C 18 |
2068(0341) 60 00 60 60 |
206C(0342) 06 06 66 36 |
2070(0343) 18 18 18 18 |
2074(0344) 00 00 6A FE |
2078(0345) 00 00 3E 66 |
207C(0346) 00 00 3C 66 |
2080(0347) 00 00 3E 66 | long $663e0000,$667c0000,$663e0000,$663c0000,$0c3e0c0c,$66660000,$66660000,$66660000
2084(0348) 00 00 7C 66 |
2088(0349) 00 00 3E 66 |
208C(034A) 00 00 3C 66 |
2090(034B) 0C 0C 3E 0C |
2094(034C) 00 00 66 66 |
2098(034D) 00 00 66 66 |
209C(034E) 00 00 66 66 |
20A0(034F) 00 00 66 66 | long $66660000,$66660000,$607e0000,$0c180c0c,$18181818,$30183030,$0000327e,$aa55aa55
20A4(0350) 00 00 66 66 |
20A8(0351) 00 00 7E 60 |
20AC(0352) 0C 0C 18 0C |
20B0(0353) 18 18 18 18 |
20B4(0354) 30 30 18 30 |
20B8(0355) 7E 32 00 00 |
20BC(0356) 55 AA 55 AA |
20C0(0357) 00 00 00 00 | long $00000000,$3c180000,$2a552a55,$0036363e,$0006060e,$001c0606,$001e0606,$003c6666
20C4(0358) 00 00 18 3C |
20C8(0359) 55 2A 55 2A |
20CC(035A) 3E 36 36 00 |
20D0(035B) 0E 06 06 00 |
20D4(035C) 06 06 1C 00 |
20D8(035D) 06 06 1E 00 |
20DC(035E) 66 66 3C 00 |
20E0(035F) 18 18 7E 18 | long $187e1818,$0066767e,$00183c24,$20272424,$203f0000,$04fc0000,$04e42424,$00e72424
20E4(0360) 7E 76 66 00 |
20E8(0361) 24 3C 18 00 |
20EC(0362) 24 24 27 20 |
20F0(0363) 00 00 3F 20 |
20F4(0364) 00 00 FC 04 |
20F8(0365) 24 24 E4 04 |
20FC(0366) 24 24 E7 00 |
2100(0367) 00 00 00 00 | long $00000000,$0000ff00,$ff000000,$00000000,$00000000,$04e42424,$20272424,$00e72424
2104(0368) 00 FF 00 00 |
2108(0369) 00 00 00 FF |
210C(036A) 00 00 00 00 |
2110(036B) 00 00 00 00 |
2114(036C) 24 24 E4 04 |
2118(036D) 24 24 27 20 |
211C(036E) 24 24 E7 00 |
2120(036F) 00 00 FF 00 | long $00ff0000,$24242424,$0c060c30,$3060300c,$667e0000,$187e3030,$3e0c0c6c,$18180000
2124(0370) 24 24 24 24 |
2128(0371) 30 0C 06 0C |
212C(0372) 0C 30 60 30 |
2130(0373) 00 00 7E 66 |
2134(0374) 30 30 7E 18 |
2138(0375) 6C 0C 0C 3E |
213C(0376) 00 00 18 18 |
2140(0377) 00 00 00 00 | long $00000000,$18181818,$00003636,$247e7e24,$3c1a5a3c,$18302e6a,$1c363636,$00181818
2144(0378) 18 18 18 18 |
2148(0379) 36 36 00 00 |
214C(037A) 24 7E 7E 24 |
2150(037B) 3C 5A 1A 3C |
2154(037C) 6A 2E 30 18 |
2158(037D) 36 36 36 1C |
215C(037E) 18 18 18 00 |
2160(037F) 18 18 0C 0C | long $0c0c1818,$30301818,$7e182400,$7e181800,$00000000,$00000000,$00000000,$18303060
2164(0380) 18 18 30 30 |
2168(0381) 00 24 18 7E |
216C(0382) 00 18 18 7E |
2170(0383) 00 00 00 00 |
2174(0384) 00 00 00 00 |
2178(0385) 00 00 00 00 |
217C(0386) 60 30 30 18 |
2180(0387) 24 66 66 66 | long $66666624,$18181a1c,$38606666,$3c183060,$666c7870,$663e0606,$3e060666,$30306060
2184(0388) 1C 1A 18 18 |
2188(0389) 66 66 60 38 |
218C(038A) 60 30 18 3C |
2190(038B) 70 78 6C 66 |
2194(038C) 06 06 3E 66 |
2198(038D) 66 06 06 3E |
219C(038E) 60 60 30 30 |
21A0(038F) 66 66 66 3C | long $3c666666,$7c666666,$183c1800,$183c1800,$060c1830,$007e0000,$6030180c,$38606666
21A4(0390) 66 66 66 7C |
21A8(0391) 00 18 3C 18 |
21AC(0392) 00 18 3C 18 |
21B0(0393) 30 18 0C 06 |
21B4(0394) 00 00 7E 00 |
21B8(0395) 0C 18 30 60 |
21BC(0396) 66 66 60 38 |
21C0(0397) 66 66 76 76 | long $76766666,$7e666666,$3e666666,$06060666,$66666666,$3e060606,$3e060606,$76060666
21C4(0398) 66 66 66 7E |
21C8(0399) 66 66 66 3E |
21CC(039A) 66 06 06 06 |
21D0(039B) 66 66 66 66 |
21D4(039C) 06 06 06 3E |
21D8(039D) 06 06 06 3E |
21DC(039E) 66 06 06 76 |
21E0(039F) 66 66 66 7E | long $7e666666,$18181818,$60606060,$0e1e3666,$06060606,$667e7e66,$7e6e6e66,$66666666
21E4(03A0) 18 18 18 18 |
21E8(03A1) 60 60 60 60 |
21EC(03A2) 66 36 1E 0E |
21F0(03A3) 06 06 06 06 |
21F4(03A4) 66 7E 7E 66 |
21F8(03A5) 66 6E 6E 7E |
21FC(03A6) 66 66 66 66 |
2200(03A7) 66 66 66 3E | long $3e666666,$66666666,$3e666666,$3c060666,$18181818,$66666666,$24246666,$66666666
2204(03A8) 66 66 66 66 |
2208(03A9) 66 66 66 3E |
220C(03AA) 66 06 06 3C |
2210(03AB) 18 18 18 18 |
2214(03AC) 66 66 66 66 |
2218(03AD) 66 66 24 24 |
221C(03AE) 66 66 66 66 |
2220(03AF) 66 24 3C 18 | long $183c2466,$183c3c66,$18306060,$0c0c0c0c,$180c0c06,$30303030,$0042663c,$00000000
2224(03B0) 66 3C 3C 18 |
2228(03B1) 60 60 30 18 |
222C(03B2) 0C 0C 0C 0C |
2230(03B3) 06 0C 0C 18 |
2234(03B4) 30 30 30 30 |
2238(03B5) 3C 66 42 00 |
223C(03B6) 00 00 00 00 |
2240(03B7) 30 00 00 00 | long $00000030,$603c0000,$663e0606,$663c0000,$667c6060,$663c0000,$1e0c0c6c,$665c0000
2244(03B8) 00 00 3C 60 |
2248(03B9) 06 06 3E 66 |
224C(03BA) 00 00 3C 66 |
2250(03BB) 60 60 7C 66 |
2254(03BC) 00 00 3C 66 |
2258(03BD) 6C 0C 0C 1E |
225C(03BE) 00 00 5C 66 |
2260(03BF) 06 06 3E 66 | long $663e0606,$181c0018,$60600060,$36660606,$18181818,$fe6a0000,$663e0000,$663c0000
2264(03C0) 18 00 1C 18 |
2268(03C1) 60 00 60 60 |
226C(03C2) 06 06 66 36 |
2270(03C3) 18 18 18 18 |
2274(03C4) 00 00 6A FE |
2278(03C5) 00 00 3E 66 |
227C(03C6) 00 00 3C 66 |
2280(03C7) 00 00 3E 66 | long $663e0000,$667c0000,$663e0000,$663c0000,$0c3e0c0c,$66660000,$66660000,$66660000
2284(03C8) 00 00 7C 66 |
2288(03C9) 00 00 3E 66 |
228C(03CA) 00 00 3C 66 |
2290(03CB) 0C 0C 3E 0C |
2294(03CC) 00 00 66 66 |
2298(03CD) 00 00 66 66 |
229C(03CE) 00 00 66 66 |
22A0(03CF) 00 00 66 66 | long $66660000,$66660000,$607e0000,$0c180c0c,$18181818,$30183030,$0000327e,$aa55aa55
22A4(03D0) 00 00 66 66 |
22A8(03D1) 00 00 7E 60 |
22AC(03D2) 0C 0C 18 0C |
22B0(03D3) 18 18 18 18 |
22B4(03D4) 30 30 18 30 |
22B8(03D5) 7E 32 00 00 |
22BC(03D6) 55 AA 55 AA |
22C0(03D7) 82 00 82 82 | long $82820082,$00183c7e,$2a552a55,$30303078,$18381878,$58385838,$18381878,$00000000
22C4(03D8) 7E 3C 18 00 |
22C8(03D9) 55 2A 55 2A |
22CC(03DA) 78 30 30 30 |
22D0(03DB) 78 18 38 18 |
22D4(03DC) 38 58 38 58 |
22D8(03DD) 78 18 38 18 |
22DC(03DE) 00 00 00 00 |
22E0(03DF) 18 00 7E 00 | long $007e0018,$18181818,$30303078,$0000001f,$1818181f,$181818f8,$000000f8,$181818ff
22E4(03E0) 18 18 18 18 |
22E8(03E1) 78 30 30 30 |
22EC(03E2) 1F 00 00 00 |
22F0(03E3) 1F 18 18 18 |
22F4(03E4) F8 18 18 18 |
22F8(03E5) F8 00 00 00 |
22FC(03E6) FF 18 18 18 |
2300(03E7) 00 00 00 00 | long $00000000,$00000000,$0000ffff,$ff000000,$00000000,$181818f8,$1818181f,$000000ff
2304(03E8) 00 00 00 00 |
2308(03E9) FF FF 00 00 |
230C(03EA) 00 00 00 FF |
2310(03EB) 00 00 00 00 |
2314(03EC) F8 18 18 18 |
2318(03ED) 1F 18 18 18 |
231C(03EE) FF 00 00 00 |
2320(03EF) FF 18 18 18 | long $181818ff,$18181818,$7e006030,$7e00060c,$66666666,$0c0c7e18,$3a6c0c0c,$00000000
2324(03F0) 18 18 18 18 |
2328(03F1) 30 60 00 7E |
232C(03F2) 0C 06 00 7E |
2330(03F3) 66 66 66 66 |
2334(03F4) 18 7E 0C 0C |
2338(03F5) 0C 0C 6C 3A |
233C(03F6) 00 00 00 00 |
2340(03F7) 00 00 00 00 | long $00000000,$18180018,$00000000,$24247e7e,$183c5a58,$7256740c,$5c367656,$00000000
2344(03F8) 18 00 18 18 |
2348(03F9) 00 00 00 00 |
234C(03FA) 7E 7E 24 24 |
2350(03FB) 58 5A 3C 18 |
2354(03FC) 0C 74 56 72 |
2358(03FD) 56 76 36 5C |
235C(03FE) 00 00 00 00 |
2360(03FF) 0C 18 18 30 | long $3018180c,$0c181830,$0024187e,$0018187e,$18383800,$0000007e,$3c180000,$06060c0c
2364(0400) 30 18 18 0C |
2368(0401) 7E 18 24 00 |
236C(0402) 7E 18 18 00 |
2370(0403) 00 38 38 18 |
2374(0404) 7E 00 00 00 |
2378(0405) 00 00 18 3C |
237C(0406) 0C 0C 06 06 |
2380(0407) 66 66 24 18 | long $18246666,$7e181818,$7e06060c,$3c666060,$60607e66,$3c666060,$3c666666,$0c0c1818
2384(0408) 18 18 18 7E |
2388(0409) 0C 06 06 7E |
238C(040A) 60 60 66 3C |
2390(040B) 66 7E 60 60 |
2394(040C) 60 60 66 3C |
2398(040D) 66 66 66 3C |
239C(040E) 18 18 0C 0C |
23A0(040F) 66 66 66 3C | long $3c666666,$3c666060,$3c180000,$18383800,$6030180c,$00007e00,$060c1830,$18180018
23A4(0410) 60 60 66 3C |
23A8(0411) 00 00 18 3C |
23AC(0412) 00 38 38 18 |
23B0(0413) 0C 18 30 60 |
23B4(0414) 00 7E 00 00 |
23B8(0415) 30 18 0C 06 |
23BC(0416) 18 00 18 18 |
23C0(0417) 7A 02 62 3C | long $3c62027a,$66666666,$3e666666,$3c660606,$3e666666,$7e060606,$06060606,$7c666666
23C4(0418) 66 66 66 66 |
23C8(0419) 66 66 66 3E |
23CC(041A) 06 06 66 3C |
23D0(041B) 66 66 66 3E |
23D4(041C) 06 06 06 7E |
23D8(041D) 06 06 06 06 |
23DC(041E) 66 66 66 7C |
23E0(041F) 66 66 66 66 | long $66666666,$7e181818,$3c666060,$4666361e,$7e060606,$66666666,$66667676,$3c666666
23E4(0420) 18 18 18 7E |
23E8(0421) 60 60 66 3C |
23EC(0422) 1E 36 66 46 |
23F0(0423) 06 06 06 7E |
23F4(0424) 66 66 66 66 |
23F8(0425) 76 76 66 66 |
23FC(0426) 66 66 66 3C |
2400(0427) 06 06 06 06 | long $06060606,$3c766e66,$4666361e,$3c666060,$18181818,$3c666666,$1818183c,$42667e7e
2404(0428) 66 6E 76 3C |
2408(0429) 1E 36 66 46 |
240C(042A) 60 60 66 3C |
2410(042B) 18 18 18 18 |
2414(042C) 66 66 66 3C |
2418(042D) 3C 18 18 18 |
241C(042E) 7E 7E 66 42 |
2420(042F) 3C 24 66 42 | long $4266243c,$18181818,$7e06060c,$3c0c0c0c,$60603030,$3c303030,$00000000,$fe000000
2424(0430) 18 18 18 18 |
2428(0431) 0C 06 06 7E |
242C(0432) 0C 0C 0C 3C |
2430(0433) 30 30 60 60 |
2434(0434) 30 30 30 3C |
2438(0435) 00 00 00 00 |
243C(0436) 00 00 00 FE |
2440(0437) 00 00 00 00 | long $00000000,$7c66667c,$3e666666,$3c660606,$7c666666,$3c66067e,$0c0c0c0c,$3c063c66
2444(0438) 7C 66 66 7C |
2448(0439) 66 66 66 3E |
244C(043A) 06 06 66 3C |
2450(043B) 66 66 66 7C |
2454(043C) 7E 06 66 3C |
2458(043D) 0C 0C 0C 0C |
245C(043E) 66 3C 06 3C |
2460(043F) 66 66 66 66 | long $66666666,$7e181818,$60606060,$66361e1e,$7e181818,$c6c6d6d6,$66666666,$3c666666
2464(0440) 18 18 18 7E |
2468(0441) 60 60 60 60 |
246C(0442) 1E 1E 36 66 |
2470(0443) 18 18 18 7E |
2474(0444) D6 D6 C6 C6 |
2478(0445) 66 66 66 66 |
247C(0446) 66 66 66 3C |
2480(0447) 66 66 3E 06 | long $063e6666,$607c6666,$06060606,$3c66300c,$386c0c0c,$7c666666,$183c3c66,$247e7e66
2484(0448) 66 66 7C 60 |
2488(0449) 06 06 06 06 |
248C(044A) 0C 30 66 3C |
2490(044B) 0C 0C 6C 38 |
2494(044C) 66 66 66 7C |
2498(044D) 66 3C 3C 18 |
249C(044E) 66 7E 7E 24 |
24A0(044F) 3C 3C 66 66 | long $66663c3c,$607c6666,$7e060c30,$380c0c18,$18181818,$1c303018,$00000000,$aa55aa55
24A4(0450) 66 66 7C 60 |
24A8(0451) 30 0C 06 7E |
24AC(0452) 18 0C 0C 38 |
24B0(0453) 18 18 18 18 |
24B4(0454) 18 30 30 1C |
24B8(0455) 00 00 00 00 |
24BC(0456) 55 AA 55 AA |
24C0(0457) 00 00 00 00 | long $00000000,$00183c7e,$2a552a55,$30303078,$18381878,$58385838,$18381878,$00000000
24C4(0458) 7E 3C 18 00 |
24C8(0459) 55 2A 55 2A |
24CC(045A) 78 30 30 30 |
24D0(045B) 78 18 38 18 |
24D4(045C) 38 58 38 58 |
24D8(045D) 78 18 38 18 |
24DC(045E) 00 00 00 00 |
24E0(045F) 18 00 7E 00 | long $007e0018,$18181818,$30303078,$00003f20,$24242720,$2424e404,$0000fc04,$2424e700
24E4(0460) 18 18 18 18 |
24E8(0461) 78 30 30 30 |
24EC(0462) 20 3F 00 00 |
24F0(0463) 20 27 24 24 |
24F4(0464) 04 E4 24 24 |
24F8(0465) 04 FC 00 00 |
24FC(0466) 00 E7 24 24 |
2500(0467) 00 00 00 00 | long $00000000,$00000000,$0000ff00,$00ff0000,$00000000,$2424e404,$24242720,$0000ff00
2504(0468) 00 00 00 00 |
2508(0469) 00 FF 00 00 |
250C(046A) 00 00 FF 00 |
2510(046B) 00 00 00 00 |
2514(046C) 04 E4 24 24 |
2518(046D) 20 27 24 24 |
251C(046E) 00 FF 00 00 |
2520(046F) 00 E7 24 24 | long $2424e700,$24242424,$7e006030,$7e00060c,$66666666,$0c0c7e18,$3a6c0c0c,$00000000
2524(0470) 24 24 24 24 |
2528(0471) 30 60 00 7E |
252C(0472) 0C 06 00 7E |
2530(0473) 66 66 66 66 |
2534(0474) 18 7E 0C 0C |
2538(0475) 0C 0C 6C 3A |
253C(0476) 00 00 00 00 |
2540(0477) 00 00 00 00 | long $00000000,$18180018,$00000000,$24247e7e,$183c5a58,$7256740c,$5c367656,$00000000
2544(0478) 18 00 18 18 |
2548(0479) 00 00 00 00 |
254C(047A) 7E 7E 24 24 |
2550(047B) 58 5A 3C 18 |
2554(047C) 0C 74 56 72 |
2558(047D) 56 76 36 5C |
255C(047E) 00 00 00 00 |
2560(047F) 0C 18 18 30 | long $3018180c,$0c181830,$0024187e,$0018187e,$18383800,$0000007e,$3c180000,$06060c0c
2564(0480) 30 18 18 0C |
2568(0481) 7E 18 24 00 |
256C(0482) 7E 18 18 00 |
2570(0483) 00 38 38 18 |
2574(0484) 7E 00 00 00 |
2578(0485) 00 00 18 3C |
257C(0486) 0C 0C 06 06 |
2580(0487) 66 66 24 18 | long $18246666,$7e181818,$7e06060c,$3c666060,$60607e66,$3c666060,$3c666666,$0c0c1818
2584(0488) 18 18 18 7E |
2588(0489) 0C 06 06 7E |
258C(048A) 60 60 66 3C |
2590(048B) 66 7E 60 60 |
2594(048C) 60 60 66 3C |
2598(048D) 66 66 66 3C |
259C(048E) 18 18 0C 0C |
25A0(048F) 66 66 66 3C | long $3c666666,$3c666060,$3c180000,$18383800,$6030180c,$00007e00,$060c1830,$18180018
25A4(0490) 60 60 66 3C |
25A8(0491) 00 00 18 3C |
25AC(0492) 00 38 38 18 |
25B0(0493) 0C 18 30 60 |
25B4(0494) 00 7E 00 00 |
25B8(0495) 30 18 0C 06 |
25BC(0496) 18 00 18 18 |
25C0(0497) 76 06 66 3C | long $3c660676,$66666666,$3e666666,$3c660606,$3e666666,$7e060606,$06060606,$7c666666
25C4(0498) 66 66 66 66 |
25C8(0499) 66 66 66 3E |
25CC(049A) 06 06 66 3C |
25D0(049B) 66 66 66 3E |
25D4(049C) 06 06 06 7E |
25D8(049D) 06 06 06 06 |
25DC(049E) 66 66 66 7C |
25E0(049F) 66 66 66 66 | long $66666666,$7e181818,$3c666060,$4666361e,$7e060606,$66666666,$66667676,$3c666666
25E4(04A0) 18 18 18 7E |
25E8(04A1) 60 60 66 3C |
25EC(04A2) 1E 36 66 46 |
25F0(04A3) 06 06 06 7E |
25F4(04A4) 66 66 66 66 |
25F8(04A5) 76 76 66 66 |
25FC(04A6) 66 66 66 3C |
2600(04A7) 06 06 06 06 | long $06060606,$3c766e66,$4666361e,$3c666060,$18181818,$3c666666,$1818183c,$42667e7e
2604(04A8) 66 6E 76 3C |
2608(04A9) 1E 36 66 46 |
260C(04AA) 60 60 66 3C |
2610(04AB) 18 18 18 18 |
2614(04AC) 66 66 66 3C |
2618(04AD) 3C 18 18 18 |
261C(04AE) 7E 7E 66 42 |
2620(04AF) 3C 24 66 42 | long $4266243c,$18181818,$7e06060c,$3c0c0c0c,$60603030,$3c303030,$00000000,$fe000000
2624(04B0) 18 18 18 18 |
2628(04B1) 0C 06 06 7E |
262C(04B2) 0C 0C 0C 3C |
2630(04B3) 30 30 60 60 |
2634(04B4) 30 30 30 3C |
2638(04B5) 00 00 00 00 |
263C(04B6) 00 00 00 FE |
2640(04B7) 00 00 00 00 | long $00000000,$7c66667c,$3e666666,$3c660606,$7c666666,$3c66067e,$0c0c0c0c,$3c063c66
2644(04B8) 7C 66 66 7C |
2648(04B9) 66 66 66 3E |
264C(04BA) 06 06 66 3C |
2650(04BB) 66 66 66 7C |
2654(04BC) 7E 06 66 3C |
2658(04BD) 0C 0C 0C 0C |
265C(04BE) 66 3C 06 3C |
2660(04BF) 66 66 66 66 | long $66666666,$7e181818,$60606060,$66361e1e,$7e181818,$c6c6d6d6,$66666666,$3c666666
2664(04C0) 18 18 18 7E |
2668(04C1) 60 60 60 60 |
266C(04C2) 1E 1E 36 66 |
2670(04C3) 18 18 18 7E |
2674(04C4) D6 D6 C6 C6 |
2678(04C5) 66 66 66 66 |
267C(04C6) 66 66 66 3C |
2680(04C7) 66 66 3E 06 | long $063e6666,$607c6666,$06060606,$3c66300c,$386c0c0c,$7c666666,$183c3c66,$247e7e66
2684(04C8) 66 66 7C 60 |
2688(04C9) 06 06 06 06 |
268C(04CA) 0C 30 66 3C |
2690(04CB) 0C 0C 6C 38 |
2694(04CC) 66 66 66 7C |
2698(04CD) 66 3C 3C 18 |
269C(04CE) 66 7E 7E 24 |
26A0(04CF) 3C 3C 66 66 | long $66663c3c,$607c6666,$7e060c30,$380c0c18,$18181818,$1c303018,$00000000,$aa55aa55
26A4(04D0) 66 66 7C 60 |
26A8(04D1) 30 0C 06 7E |
26AC(04D2) 18 0C 0C 38 |
26B0(04D3) 18 18 18 18 |
26B4(04D4) 18 30 30 1C |
26B8(04D5) 00 00 00 00 |
26BC(04D6) 55 AA 55 AA |
26C0(04D7) 00 82 BA 00 | long $00ba8200,$00000000,$00002a55,$00000030,$00000018,$00000058,$00000018,$00000000
26C4(04D8) 00 00 00 00 |
26C8(04D9) 55 2A 00 00 |
26CC(04DA) 30 00 00 00 |
26D0(04DB) 18 00 00 00 |
26D4(04DC) 58 00 00 00 |
26D8(04DD) 18 00 00 00 |
26DC(04DE) 00 00 00 00 |
26E0(04DF) 00 00 00 00 | long $00000000,$00000078,$00000030,$00000000,$18181818,$18181818,$00000000,$18181818
26E4(04E0) 78 00 00 00 |
26E8(04E1) 30 00 00 00 |
26EC(04E2) 00 00 00 00 |
26F0(04E3) 18 18 18 18 |
26F4(04E4) 18 18 18 18 |
26F8(04E5) 00 00 00 00 |
26FC(04E6) 18 18 18 18 |
2700(04E7) 00 00 00 00 | long $00000000,$00000000,$00000000,$000000ff,$ffff0000,$18181818,$18181818,$00000000
2704(04E8) 00 00 00 00 |
2708(04E9) 00 00 00 00 |
270C(04EA) FF 00 00 00 |
2710(04EB) 00 00 FF FF |
2714(04EC) 18 18 18 18 |
2718(04ED) 18 18 18 18 |
271C(04EE) 00 00 00 00 |
2720(04EF) 18 18 18 18 | long $18181818,$18181818,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
2724(04F0) 18 18 18 18 |
2728(04F1) 00 00 00 00 |
272C(04F2) 00 00 00 00 |
2730(04F3) 00 00 00 00 |
2734(04F4) 00 00 00 00 |
2738(04F5) 00 00 00 00 |
273C(04F6) 00 00 00 00 |
2740(04F7) 00 00 00 00 | long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
2744(04F8) 00 00 00 00 |
2748(04F9) 00 00 00 00 |
274C(04FA) 00 00 00 00 |
2750(04FB) 00 00 00 00 |
2754(04FC) 00 00 00 00 |
2758(04FD) 00 00 00 00 |
275C(04FE) 00 00 00 00 |
2760(04FF) 00 00 00 00 | long $00000000,$00000000,$00000000,$00000000,$0000000c,$00000000,$00000018,$00000000
2764(0500) 00 00 00 00 |
2768(0501) 00 00 00 00 |
276C(0502) 00 00 00 00 |
2770(0503) 0C 00 00 00 |
2774(0504) 00 00 00 00 |
2778(0505) 18 00 00 00 |
277C(0506) 00 00 00 00 |
2780(0507) 00 00 00 00 | long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
2784(0508) 00 00 00 00 |
2788(0509) 00 00 00 00 |
278C(050A) 00 00 00 00 |
2790(050B) 00 00 00 00 |
2794(050C) 00 00 00 00 |
2798(050D) 00 00 00 00 |
279C(050E) 00 00 00 00 |
27A0(050F) 00 00 00 00 | long $00000000,$00000000,$00000018,$0000000c,$00000000,$00000000,$00000000,$00000000
27A4(0510) 00 00 00 00 |
27A8(0511) 18 00 00 00 |
27AC(0512) 0C 00 00 00 |
27B0(0513) 00 00 00 00 |
27B4(0514) 00 00 00 00 |
27B8(0515) 00 00 00 00 |
27BC(0516) 00 00 00 00 |
27C0(0517) 00 00 00 00 | long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
27C4(0518) 00 00 00 00 |
27C8(0519) 00 00 00 00 |
27CC(051A) 00 00 00 00 |
27D0(051B) 00 00 00 00 |
27D4(051C) 00 00 00 00 |
27D8(051D) 00 00 00 00 |
27DC(051E) 00 00 00 00 |
27E0(051F) 00 00 00 00 | long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
27E4(0520) 00 00 00 00 |
27E8(0521) 00 00 00 00 |
27EC(0522) 00 00 00 00 |
27F0(0523) 00 00 00 00 |
27F4(0524) 00 00 00 00 |
27F8(0525) 00 00 00 00 |
27FC(0526) 00 00 00 00 |
2800(0527) 00 00 00 00 | long $00000000,$00000060,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
2804(0528) 60 00 00 00 |
2808(0529) 00 00 00 00 |
280C(052A) 00 00 00 00 |
2810(052B) 00 00 00 00 |
2814(052C) 00 00 00 00 |
2818(052D) 00 00 00 00 |
281C(052E) 00 00 00 00 |
2820(052F) 00 00 00 00 | long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$000000fe
2824(0530) 00 00 00 00 |
2828(0531) 00 00 00 00 |
282C(0532) 00 00 00 00 |
2830(0533) 00 00 00 00 |
2834(0534) 00 00 00 00 |
2838(0535) 00 00 00 00 |
283C(0536) FE 00 00 00 |
2840(0537) 00 00 00 00 | long $00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000,$00003c66
2844(0538) 00 00 00 00 |
2848(0539) 00 00 00 00 |
284C(053A) 00 00 00 00 |
2850(053B) 00 00 00 00 |
2854(053C) 00 00 00 00 |
2858(053D) 00 00 00 00 |
285C(053E) 66 3C 00 00 |
2860(053F) 00 00 00 00 | long $00000000,$00000000,$00003c66,$00000000,$00000000,$00000000,$00000000,$00000000
2864(0540) 00 00 00 00 |
2868(0541) 66 3C 00 00 |
286C(0542) 00 00 00 00 |
2870(0543) 00 00 00 00 |
2874(0544) 00 00 00 00 |
2878(0545) 00 00 00 00 |
287C(0546) 00 00 00 00 |
2880(0547) 06 06 00 00 | long $00000606,$00006060,$00000000,$00000000,$00000000,$00000000,$00000000,$00000000
2884(0548) 60 60 00 00 |
2888(0549) 00 00 00 00 |
288C(054A) 00 00 00 00 |
2890(054B) 00 00 00 00 |
2894(054C) 00 00 00 00 |
2898(054D) 00 00 00 00 |
289C(054E) 00 00 00 00 |
28A0(054F) 00 00 00 00 | long $00000000,$00003c66,$00000000,$00000000,$00000000,$00000000,$00000000,$aa55aa55
28A4(0550) 66 3C 00 00 |
28A8(0551) 00 00 00 00 |
28AC(0552) 00 00 00 00 |
28B0(0553) 00 00 00 00 |
28B4(0554) 00 00 00 00 |
28B8(0555) 00 00 00 00 |
28BC(0556) 55 AA 55 AA |
28C0(0557) 00 00 00 FF | long $ff000000,$ff000000,$ff002a55,$ff000030,$ff000018,$ff000058,$ff000018,$ff000000
28C4(0558) 00 00 00 FF |
28C8(0559) 55 2A 00 FF |
28CC(055A) 30 00 00 FF |
28D0(055B) 18 00 00 FF |
28D4(055C) 58 00 00 FF |
28D8(055D) 18 00 00 FF |
28DC(055E) 00 00 00 FF |
28E0(055F) 00 00 00 FF | long $ff000000,$ff000078,$ff000030,$00000000,$24242424,$24242424,$00000000,$24242424
28E4(0560) 78 00 00 FF |
28E8(0561) 30 00 00 FF |
28EC(0562) 00 00 00 00 |
28F0(0563) 24 24 24 24 |
28F4(0564) 24 24 24 24 |
28F8(0565) 00 00 00 00 |
28FC(0566) 24 24 24 24 |
2900(0567) 00 00 00 00 | long $00000000,$00000000,$00000000,$000000ff,$ff00ff00,$24242424,$24242424,$00000000
2904(0568) 00 00 00 00 |
2908(0569) 00 00 00 00 |
290C(056A) FF 00 00 00 |
2910(056B) 00 FF 00 FF |
2914(056C) 24 24 24 24 |
2918(056D) 24 24 24 24 |
291C(056E) 00 00 00 00 |
2920(056F) 24 24 24 24 | long $24242424,$24242424,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
2924(0570) 24 24 24 24 |
2928(0571) 00 00 00 FF |
292C(0572) 00 00 00 FF |
2930(0573) 00 00 00 FF |
2934(0574) 00 00 00 FF |
2938(0575) 00 00 00 FF |
293C(0576) 00 00 00 FF |
2940(0577) 00 00 00 FF | long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
2944(0578) 00 00 00 FF |
2948(0579) 00 00 00 FF |
294C(057A) 00 00 00 FF |
2950(057B) 00 00 00 FF |
2954(057C) 00 00 00 FF |
2958(057D) 00 00 00 FF |
295C(057E) 00 00 00 FF |
2960(057F) 00 00 00 FF | long $ff000000,$ff000000,$ff000000,$ff000000,$ff00000c,$ff000000,$ff000018,$ff000000
2964(0580) 00 00 00 FF |
2968(0581) 00 00 00 FF |
296C(0582) 00 00 00 FF |
2970(0583) 0C 00 00 FF |
2974(0584) 00 00 00 FF |
2978(0585) 18 00 00 FF |
297C(0586) 00 00 00 FF |
2980(0587) 00 00 00 FF | long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
2984(0588) 00 00 00 FF |
2988(0589) 00 00 00 FF |
298C(058A) 00 00 00 FF |
2990(058B) 00 00 00 FF |
2994(058C) 00 00 00 FF |
2998(058D) 00 00 00 FF |
299C(058E) 00 00 00 FF |
29A0(058F) 00 00 00 FF | long $ff000000,$ff000000,$ff000018,$ff00000c,$ff000000,$ff000000,$ff000000,$ff000000
29A4(0590) 00 00 00 FF |
29A8(0591) 18 00 00 FF |
29AC(0592) 0C 00 00 FF |
29B0(0593) 00 00 00 FF |
29B4(0594) 00 00 00 FF |
29B8(0595) 00 00 00 FF |
29BC(0596) 00 00 00 FF |
29C0(0597) 00 00 00 FF | long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
29C4(0598) 00 00 00 FF |
29C8(0599) 00 00 00 FF |
29CC(059A) 00 00 00 FF |
29D0(059B) 00 00 00 FF |
29D4(059C) 00 00 00 FF |
29D8(059D) 00 00 00 FF |
29DC(059E) 00 00 00 FF |
29E0(059F) 00 00 00 FF | long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
29E4(05A0) 00 00 00 FF |
29E8(05A1) 00 00 00 FF |
29EC(05A2) 00 00 00 FF |
29F0(05A3) 00 00 00 FF |
29F4(05A4) 00 00 00 FF |
29F8(05A5) 00 00 00 FF |
29FC(05A6) 00 00 00 FF |
2A00(05A7) 00 00 00 FF | long $ff000000,$ff000060,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
2A04(05A8) 60 00 00 FF |
2A08(05A9) 00 00 00 FF |
2A0C(05AA) 00 00 00 FF |
2A10(05AB) 00 00 00 FF |
2A14(05AC) 00 00 00 FF |
2A18(05AD) 00 00 00 FF |
2A1C(05AE) 00 00 00 FF |
2A20(05AF) 00 00 00 FF | long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff0000fe
2A24(05B0) 00 00 00 FF |
2A28(05B1) 00 00 00 FF |
2A2C(05B2) 00 00 00 FF |
2A30(05B3) 00 00 00 FF |
2A34(05B4) 00 00 00 FF |
2A38(05B5) 00 00 00 FF |
2A3C(05B6) FE 00 00 FF |
2A40(05B7) 00 00 00 FF | long $ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff003c66
2A44(05B8) 00 00 00 FF |
2A48(05B9) 00 00 00 FF |
2A4C(05BA) 00 00 00 FF |
2A50(05BB) 00 00 00 FF |
2A54(05BC) 00 00 00 FF |
2A58(05BD) 00 00 00 FF |
2A5C(05BE) 66 3C 00 FF |
2A60(05BF) 00 00 00 FF | long $ff000000,$ff000000,$ff003c66,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
2A64(05C0) 00 00 00 FF |
2A68(05C1) 66 3C 00 FF |
2A6C(05C2) 00 00 00 FF |
2A70(05C3) 00 00 00 FF |
2A74(05C4) 00 00 00 FF |
2A78(05C5) 00 00 00 FF |
2A7C(05C6) 00 00 00 FF |
2A80(05C7) 06 06 00 FF | long $ff000606,$ff006060,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000
2A84(05C8) 60 60 00 FF |
2A88(05C9) 00 00 00 FF |
2A8C(05CA) 00 00 00 FF |
2A90(05CB) 00 00 00 FF |
2A94(05CC) 00 00 00 FF |
2A98(05CD) 00 00 00 FF |
2A9C(05CE) 00 00 00 FF |
2AA0(05CF) 00 00 00 FF | long $ff000000,$ff003c66,$ff000000,$ff000000,$ff000000,$ff000000,$ff000000,$ff55aa55
2AA4(05D0) 66 3C 00 FF |
2AA8(05D1) 00 00 00 FF |
2AAC(05D2) 00 00 00 FF |
2AB0(05D3) 00 00 00 FF |
2AB4(05D4) 00 00 00 FF |
2AB8(05D5) 00 00 00 FF |
2ABC(05D6) 55 AA 55 FF |
|===========================================================================|
|===========================================================================|
Spin Block start with 4 Parameters and 2 Extra Stack Longs. Method 1
PUB start(BasePin, ScreenPtr, CursorPtr, SyncPtr) : okay | i, j
Local Parameter DBASE:0000 - Result
Local Parameter DBASE:0004 - BasePin
Local Parameter DBASE:0008 - ScreenPtr
Local Parameter DBASE:000C - CursorPtr
Local Parameter DBASE:0010 - SyncPtr
Local Variable DBASE:0014 - i
Local Variable DBASE:0018 - j
|===========================================================================|
85 stop
Addr : 2AC0: 01 : Drop Anchor
Addr : 2AC1: 05 02 : Call Sub 2
88 reg_vcfg := $200000FF + (BasePin & %111000) << 6
Addr : 2AC3: 3B 20 00 00 FF : Constant 4 Bytes - 20 00 00 FF
Addr : 2AC8: 64 : Variable Operation Local Offset - 1 Read
Addr : 2AC9: 38 38 : Constant 1 Bytes - 38
Addr : 2ACB: E8 : Math Op &
Addr : 2ACC: 38 06 : Constant 1 Bytes - 06
Addr : 2ACE: E3 : Math Op <<
Addr : 2ACF: EC : Math Op +
Addr : 2AD0: C5 80 98 : Memory Op Long PBASE + WRITE Address = 0098
89 i := $FF << (BasePin & %011000)
Addr : 2AD3: 37 27 : Constant Mask Y=39 Decrement 000000FF
Addr : 2AD5: 64 : Variable Operation Local Offset - 1 Read
Addr : 2AD6: 38 18 : Constant 1 Bytes - 18
Addr : 2AD8: E8 : Math Op &
Addr : 2AD9: E3 : Math Op <<
Addr : 2ADA: 75 : Variable Operation Local Offset - 5 Write
90 j := BasePin & %100000 == 0
Addr : 2ADB: 64 : Variable Operation Local Offset - 1 Read
Addr : 2ADC: 37 04 : Constant Mask Y=4 00000020
Addr : 2ADE: E8 : Math Op &
Addr : 2ADF: 35 : Constant 1 $00000000
Addr : 2AE0: FC : Math Op ==
Addr : 2AE1: 79 : Variable Operation Local Offset - 6 Write
91 reg_dira := i & j
Addr : 2AE2: 74 : Variable Operation Local Offset - 5 Read
Addr : 2AE3: 78 : Variable Operation Local Offset - 6 Read
Addr : 2AE4: E8 : Math Op &
Addr : 2AE5: C5 80 90 : Memory Op Long PBASE + WRITE Address = 0090
92 reg_dirb := i & !j
Addr : 2AE8: 74 : Variable Operation Local Offset - 5 Read
Addr : 2AE9: 78 : Variable Operation Local Offset - 6 Read
Addr : 2AEA: E7 : Math Op !
Addr : 2AEB: E8 : Math Op &
Addr : 2AEC: C5 80 94 : Memory Op Long PBASE + WRITE Address = 0094
95 sync_cnt := cnt + $10000
Addr : 2AEF: 3F 91 : Register op CNT Read
Addr : 2AF1: 37 0F : Constant Mask Y=15 00010000
Addr : 2AF3: EC : Math Op +
Addr : 2AF4: C5 80 9C : Memory Op Long PBASE + WRITE Address = 009C
98 longmove(@screen_base, @ScreenPtr, 2)
Addr : 2AF7: C7 82 10 : Memory Op Long PBASE + ADDRESS Address = 0210
Addr : 2AFA: 6B : Variable Operation Local Offset - 2 Address
Addr : 2AFB: 37 00 : Constant Mask Y=0 00000002
Addr : 2AFD: 1E : LongMove(To, From, Count)
99 font_base := @font
Addr : 2AFE: C7 82 CC : Memory Op Long PBASE + ADDRESS Address = 02CC
Addr : 2B01: C5 82 18 : Memory Op Long PBASE + WRITE Address = 0218
102 vf_lines.byte := vf
Addr : 2B04: 38 14 : Constant 1 Bytes - 14
Addr : 2B06: 85 81 D8 : Memory Op Byte PBASE + WRITE Address = 01D8
103 vb_lines.byte := vb
Addr : 2B09: 38 11 : Constant 1 Bytes - 11
Addr : 2B0B: 85 80 A8 : Memory Op Byte PBASE + WRITE Address = 00A8
104 font_part := 1
Addr : 2B0E: 36 : Constant 2 $00000001
Addr : 2B0F: C5 82 1C : Memory Op Long PBASE + WRITE Address = 021C
105 cog[1] := cognew(@d0, SyncPtr) + 1
Addr : 2B12: 34 : Constant 0 $FFFFFFFF
Addr : 2B13: C7 0C : Memory Op Long PBASE + ADDRESS Address = 000C
Addr : 2B15: 70 : Variable Operation Local Offset - 4 Read
Addr : 2B16: 28 : CogInit(Id, Addr, Ptr) Push
Addr : 2B17: 36 : Constant 2 $00000001
Addr : 2B18: EC : Math Op +
Addr : 2B19: 36 : Constant 2 $00000001
Addr : 2B1A: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000
108 waitcnt($2000 + cnt)
Addr : 2B1C: 37 0C : Constant Mask Y=12 00002000
Addr : 2B1E: 3F 91 : Register op CNT Read
Addr : 2B20: EC : Math Op +
Addr : 2B21: 23 : WaitCnt(count)
111 vf_lines.byte := vf+4
Addr : 2B22: 38 14 : Constant 1 Bytes - 14
Addr : 2B24: 37 01 : Constant Mask Y=1 00000004
Addr : 2B26: EC : Math Op +
Addr : 2B27: 85 81 D8 : Memory Op Byte PBASE + WRITE Address = 01D8
112 vb_lines.byte := vb-4
Addr : 2B2A: 38 11 : Constant 1 Bytes - 11
Addr : 2B2C: 37 01 : Constant Mask Y=1 00000004
Addr : 2B2E: ED : Math Op -
Addr : 2B2F: 85 80 A8 : Memory Op Byte PBASE + WRITE Address = 00A8
113 font_part := 0
Addr : 2B32: 35 : Constant 1 $00000000
Addr : 2B33: C5 82 1C : Memory Op Long PBASE + WRITE Address = 021C
114 cog[0] := cognew(@d0, SyncPtr) + 1
Addr : 2B36: 34 : Constant 0 $FFFFFFFF
Addr : 2B37: C7 0C : Memory Op Long PBASE + ADDRESS Address = 000C
Addr : 2B39: 70 : Variable Operation Local Offset - 4 Read
Addr : 2B3A: 28 : CogInit(Id, Addr, Ptr) Push
Addr : 2B3B: 36 : Constant 2 $00000001
Addr : 2B3C: EC : Math Op +
Addr : 2B3D: 35 : Constant 1 $00000000
Addr : 2B3E: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000
117 if cog[0] and cog[1]
Addr : 2B40: 35 : Constant 1 $00000000
Addr : 2B41: D8 00 : Memory Op Long VBASE + POP Index READ Address = 0000
Addr : 2B43: 36 : Constant 2 $00000001
Addr : 2B44: D8 00 : Memory Op Long VBASE + POP Index READ Address = 0000
Addr : 2B46: F0 : Math Op AND
Addr : 2B47: JZ Label0008
Addr : 2B47: 0A 02 : jz Address = 2B4B 2
118 return true
Addr : 2B49: 34 : Constant 0 $FFFFFFFF
Addr : 2B4A: 33 : Return value
Addr : 2B4B: Label0008
Addr : 2B4B: Label0009
121 stop
Addr : 2B4B: 01 : Drop Anchor
Addr : 2B4C: 05 02 : Call Sub 2
Addr : 2B4E: 32 : Return
|===========================================================================|
Spin Block stop with 0 Parameters and 1 Extra Stack Longs. Method 2
PUB stop | i
Local Parameter DBASE:0000 - Result
Local Variable DBASE:0004 - i
|===========================================================================|
128 repeat i from 0 to 1
Addr : 2B4F: 35 : Constant 1 $00000000
Addr : 2B50: 65 : Variable Operation Local Offset - 1 Write
Addr : 2B51: Label0008
Addr : 2B51: Label0009
Addr : 2B51: 35 : Constant 1 $00000000
Addr : 2B52: 36 : Constant 2 $00000001
Addr : 2B53: Repeat i Step Label0008
Addr : 2B53: 66 02 7B : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 2B51 -5
Addr : 2B56: Label000A
129 if cog[i]
Addr : 2B56: 64 : Variable Operation Local Offset - 1 Read
Addr : 2B57: D8 00 : Memory Op Long VBASE + POP Index READ Address = 0000
Addr : 2B59: JZ Label000B
Addr : 2B59: 0A 00 : jz Address = 2B5B 0
Addr : 2B5B: Label000B
Addr : 2B5B: Label000C
130 cogstop(cog[i]~ - 1)
Addr : 2B5B: 64 : Variable Operation Local Offset - 1 Read
Addr : 2B5C: DA 00 98 : Memory Op Long VBASE + POP Index ASSIGN Address = 0000 VAR~ Post-clear Push
Addr : 2B5F: 36 : Constant 2 $00000001
Addr : 2B60: ED : Math Op -
Addr : 2B61: 21 : CogStop(id)
Addr : 2B62: 32 : Return
|===========================================================================|
Object vt100
Object Base is 2B64
|===========================================================================|
Object Constants
|===========================================================================|
|===========================================================================|
VBASE Global Variables
|===========================================================================|
VBASE : 0000 LONG Size 0004 Variable cog
|===========================================================================|
Object DAT Blocks
|===========================================================================|
2B70(0000) | org 0
2B70(0000) | entry
2B70(0000) F0 69 BC A0 | command_ptr mov t1, PAR
2B74(0001) 34 00 BC 08 | cmd rdlong command_ptr, t1 ' parameter 0
2B78(0002) 04 68 FC 80 | screen_ptr add t1, #4
2B7C(0003) 34 04 BC 08 | screen_end rdlong screen_ptr, t1 ' parameter 1
2B80(0004) 04 68 FC 80 | cursor_ptr add t1, #4
2B84(0005) 34 08 BC 08 | vsync_ptr rdlong cursor_ptr, t1 ' parameter 2
2B88(0006) 04 68 FC 80 | screen_w add t1, #4
2B8C(0007) 34 0A BC 08 | screen_w2 rdlong vsync_ptr, t1 ' parameter 3
2B90(0008) 04 68 FC 80 | screen_h add t1, #4
2B94(0009) 34 0C BC 08 | cur_ptr rdlong screen_w, t1 ' parameter 4
2B98(000A) 04 68 FC 80 | scroll_top add t1, #4
2B9C(000B) 34 10 BC 08 | scroll_bot rdlong screen_h, t1 ' parameter 5
2BA0(000C) 06 0E BC A0 | dst mov screen_w2, screen_w
2BA4(000D) 01 0E FC 28 | src shr screen_w2, #1 ' screen width / 2
2BA8(000E) 06 68 BC A0 | end mov t1, screen_w
2BAC(000F) 08 6A BC A0 | data mov t2, screen_h
2BB0(0010) 79 FF FE 5C | cols call #mul16x16
2BB4(0011) 35 06 BC A0 | rows mov screen_end, t2 ' result in t2
2BB8(0012) 35 06 BC 80 | lmm_pc add screen_end, t2 ' * 2
2BBC(0013) 02 06 BC 80 | cur_x_save add screen_end, screen_ptr
2BC0(0014) 00 14 FC A0 | cur_y_save mov scroll_top, #0
2BC4(0015) 08 16 BC A0 | new_x_save mov scroll_bot, screen_h
2BC8(0016) F1 47 BC A0 | attr_save mov cur_delay, CNT
2BCC(0017) 45 00 7C 5C | jmp #startup
2BD0(0018) A4 31 00 00 | control_ptr long @@@control_table
2BD4(0019) E4 31 00 00 | csi_cmds_ptr long @@@csi_cmds
2BD8(001A) 20 00 20 00 | x00200020 long $00200020
2BDC(001B) 5F 00 00 00 | cur_block long $5f
2BE0(001C) 00 00 00 00 | inverse long 0
2BE4(001D) 00 00 00 00 | cur_x long 0
2BE8(001E) 00 00 00 00 | new_x long 0
2BEC(001F) 00 00 00 00 | cur_y long 0
2BF0(0020) 00 00 00 00 | attr long 0 ' attribute mode
2BF4(0021) 24 00 00 00 | flags long flag_decom | flag_decawm
2BF8(0022) 00 00 00 00 | cur_char long 0
2BFC(0023) 00 00 00 00 | cur_delay long 0
2C00(0024) 07 00 00 00 | fgcol long %0111 ' foreground color
2C04(0025) 00 00 00 00 | bgcol long %0000 ' background color
2C08(0026) 00 07 00 00 | color long %00000111_00000000 ' composed fore- and background
2C0C(0027) 00 00 00 00 | esc_mode long 0
2C10(0028) 00 00 00 00 | csi_mode long 0
2C14(0029) 00 00 00 00 | csi_argc long 0
2C18(002A) 00 00 00 00 | csi_argf long 0
2C1C(002B) 00 00 00 00 | csi_args long 0,0,0,0,0,0,0,0
2C20(002C) 00 00 00 00 |
2C24(002D) 00 00 00 00 |
2C28(002E) 00 00 00 00 |
2C2C(002F) 00 00 00 00 |
2C30(0030) 00 00 00 00 |
2C34(0031) 00 00 00 00 |
2C38(0032) 00 00 00 00 |
2C3C(0033) 00 00 00 00 | question_mark long 0
2C40(0034) 00 00 00 00 | t1 long 0
2C44(0035) 00 00 00 00 | t2 long 0
2C48(0036) 00 00 00 00 | t3 long 0
2C4C(0037) | goto_xay
2C4C(0037) 0A 3E BC 80 | add cur_y, scroll_top
2C50(0038) | validate_cursor
2C50(0038) 1D 3A BC A1 | mov cur_x, cur_x WC ' negative x?
2C54(0039) 00 3A F0 A0 | if_c mov cur_x, #0 ' yes, clip to 0
2C58(003A) 06 3A 3C 87 | cmp cur_x, screen_w WZ, WC
2C5C(003B) 06 3A 8C A0 | if_ae mov cur_x, screen_w ' stay inside the boundaries
2C60(003C) 01 3A CC 84 | if_ae sub cur_x, #1
2C64(003D) 1D 3C BC A0 | mov new_x, cur_x
2C68(003E) 1F 3E BC A1 | mov cur_y, cur_y WC ' negative y?
2C6C(003F) 00 3E F0 A0 | if_c mov cur_y, #0 ' yes, clip to 0
2C70(0040) 08 3E 3C 87 | cmp cur_y, screen_h WZ, WC
2C74(0041) 08 3E 8C A0 | if_ae mov cur_y, screen_h ' stay inside the boundaries
2C78(0042) 01 3E CC 84 | if_ae sub cur_y, #1
2C7C(0043) | cmdloop
2C7C(0043) 00 02 FC A0 | mov cmd, #0
2C80(0044) 00 02 3C 08 | wrlong cmd, command_ptr
2C84(0045) | startup
2C84(0045) 4C 08 7C EC | :loop tjz cursor_ptr, #:cursor ' skip if cursor_ptr is null
2C88(0046) 04 3C 3C 00 | wrbyte new_x, cursor_ptr ' write the (new) cursor position
2C8C(0047) 01 08 FC 80 | add cursor_ptr, #1
2C90(0048) 04 3E 3C 00 | wrbyte cur_y, cursor_ptr ' and the cursor row, too
2C94(0049) 01 08 FC 84 | sub cursor_ptr, #1
2C98(004A) 5A C3 FE 5C | call #calc_cursor
2C9C(004B) 5B 00 7C 5C | jmp #:check_cmd
2CA0(004C) 23 68 BC A0 | :cursor mov t1, cur_delay ' software cursor
2CA4(004D) F1 69 BC 84 | sub t1, CNT
2CA8(004E) 00 68 7C C3 | cmps t1, #0 WZ, WC
2CAC(004F) 5B 00 4C 5C | if_ae jmp #:check_cmd
2CB0(0050) 00 68 FC 08 | rdlong t1, #0 ' get clkfreq
2CB4(0051) 02 68 FC 28 | shr t1, #2 ' / 4
2CB8(0052) 34 46 BC 80 | add cur_delay, t1 ' next cursor flash event
2CBC(0053) 5A C3 FE 5C | call #calc_cursor
2CC0(0054) 06 3C 3C 87 | cmp new_x, screen_w WZ, WC ' new_x beyond last column?
2CC4(0055) 5B 00 4C 5C | if_ae jmp #:check_cmd
2CC8(0056) 22 68 BC A2 | mov t1, cur_char WZ ' get saved character
2CCC(0057) 09 44 A8 00 | if_z rdbyte cur_char, cur_ptr ' none: save character under cursor
2CD0(0058) 09 36 28 00 | if_z wrbyte cur_block, cur_ptr ' display a cursor block
2CD4(0059) 00 44 D4 A0 | if_nz mov cur_char, #0 ' reset saved character
2CD8(005A) 09 68 14 00 | if_nz wrbyte t1, cur_ptr ' restore saved character in screen buffer
2CDC(005B) 00 02 BC 0A | :check_cmd rdlong cmd, command_ptr WZ
2CE0(005C) 45 00 68 5C | if_z jmp #:loop
2CE4(005D) 22 68 BC A2 | mov t1, cur_char WZ ' get saved character
2CE8(005E) 03 12 14 85 | if_nz cmp cur_ptr, screen_end WC
2CEC(005F) 00 44 D0 A0 | if_nz_and_c mov cur_char, #0 ' reset saved character
2CF0(0060) 09 68 10 00 | if_nz_and_c wrbyte t1, cur_ptr ' restore saved character in screen buffer
2CF4(0061) FF 02 FC 60 | and cmd, #$ff
2CF8(0062) 88 50 7C E8 | tjnz csi_mode, #csi ' go to CSI decoding if enabled
2CFC(0063) 7F 4E 7C E8 | tjnz esc_mode, #esc ' go to ESC decoding if enabled
2D00(0064) 20 02 7C 87 | cmp cmd, #$20 WZ, WC ' other control characters?
2D04(0065) 6A 00 4C 5C | if_ae jmp #do_emit ' no, just emit to the screen buffer
2D08(0066) 01 02 FC 2C | shl cmd, #1
2D0C(0067) 18 02 BC 80 | add cmd, control_ptr
2D10(0068) 01 02 BC 04 | rdword cmd, cmd
2D14(0069) 01 00 3C 5C | jmp cmd ' dispatch on control_table
2D18(006A) 4A B3 FE 5C | do_emit call #emit
2D1C(006B) 43 00 7C 5C | jmp #cmdloop
2D20(006C) | do_nul ' NUL - null character
2D20(006C) | do_soh ' SOH - start of header
2D20(006C) | do_stx ' STX - start of text
2D20(006C) | do_etx ' ETX - end of text
2D20(006C) | do_eot ' EOT - end of transmission
2D20(006C) | do_enq ' ENQ - enquiry
2D20(006C) | do_ack ' ACK - acknowledgement
2D20(006C) | do_bel ' BEL - bell
2D20(006C) | do_dle ' DLE - data link escape
2D20(006C) | do_dc1 ' DC1 - device control 1 (XON)
2D20(006C) | do_dc2 ' DC2 - device control 2
2D20(006C) | do_dc3 ' DC3 - device control 3 (XOFF)
2D20(006C) | do_dc4 ' DC4 - device control 4
2D20(006C) | do_nak ' NAK - negative acknowledgement
2D20(006C) | do_syn ' SYN - synchronous idle
2D20(006C) | do_etb ' ETB - end of transmission block
2D20(006C) | do_em ' EM - end of medium
2D20(006C) | do_sub ' SUB - substitute
2D20(006C) | do_fs ' FS - file separator
2D20(006C) | do_gs ' GS - group separator
2D20(006C) | do_rs ' RS - request to send
2D20(006C) | do_us ' US - unit separator
2D20(006C) 43 00 7C 5C | jmp #cmdloop
2D24(006D) C4 8C FD 5C | do_cr call #cr
2D28(006E) 43 00 7C 5C | jmp #cmdloop
2D2C(006F) C7 9A FD 5C | do_bs call #bs
2D30(0070) 43 00 7C 5C | jmp #cmdloop
2D34(0071) D2 AC FD 5C | do_ht call #ht
2D38(0072) 43 00 7C 5C | jmp #cmdloop
2D3C(0073) D7 04 FE 5C | do_lf call #lf
2D40(0074) 43 00 7C 5C | jmp #cmdloop
2D44(0075) 03 59 FE 5C | do_vt call #vt
2D48(0076) 43 00 7C 5C | jmp #cmdloop
2D4C(0077) 2D 73 FE 5C | do_ff call #ff
2D50(0078) 43 00 7C 5C | jmp #cmdloop
2D54(0079) | do_so ' ???
2D54(0079) 43 00 7C 5C | jmp #cmdloop
2D58(007A) | do_si ' ???
2D58(007A) 43 00 7C 5C | jmp #cmdloop
2D5C(007B) | do_can ' CAN - cancel
2D5C(007B) 3E 93 FE 5C | call #can
2D60(007C) 43 00 7C 5C | jmp #cmdloop
2D64(007D) | do_esc
2D64(007D) 01 4E FC A0 | mov esc_mode, #1
2D68(007E) 43 00 7C 5C | jmp #cmdloop
2D6C(007F) | esc
2D6C(007F) 00 4E FC A0 | mov esc_mode, #0
2D70(0080) 5B 02 7C 86 | cmp cmd, #"[" WZ
2D74(0081) 83 00 68 5C | if_z jmp #:csi
2D78(0082) 43 00 7C 5C | jmp #cmdloop
2D7C(0083) | :csi
2D7C(0083) 01 50 FC A0 | mov csi_mode, #1 ' start CSI mode
2D80(0084) 00 52 FC A0 | mov csi_argc, #0 ' argument count = 0
2D84(0085) 00 54 FC A0 | mov csi_argf, #0 ' argument flag = 0
2D88(0086) 00 56 FC A0 | mov csi_args, #0 ' first argument = 0
2D8C(0087) 43 00 7C 5C | jmp #cmdloop
2D90(0088) | csi
2D90(0088) 01 50 7C 86 | cmp csi_mode, #1 WZ ' first character after "["?
2D94(0089) 8E 00 54 5C | if_nz jmp #:not_question ' no, check arguments
2D98(008A) 02 50 FC A0 | mov csi_mode, #2 ' skip this test in the future
2D9C(008B) 3F 02 7C 86 | cmp cmd, #"?" WZ ' "<ESC>[?" mode?
2DA0(008C) 01 66 FC 78 | muxz question_mark, #1
2DA4(008D) 43 00 68 5C | if_z jmp #cmdloop
2DA8(008E) | :not_question
2DA8(008E) 30 02 7C 87 | cmp cmd, #"0" WZ, WC
2DAC(008F) A0 00 70 5C | if_b jmp #:not_numeric
2DB0(0090) 39 02 7C 87 | cmp cmd, #"9" WZ, WC
2DB4(0091) A0 00 44 5C | if_a jmp #:not_numeric
2DB8(0092) 29 68 BC A0 | mov t1, csi_argc
2DBC(0093) 2B 68 FC 80 | add t1, #csi_args
2DC0(0094) 34 2E BD 50 | movs :get_arg, t1
2DC4(0095) 34 3C BD 54 | movd :put_arg, t1
2DC8(0096) 01 54 FC A0 | mov csi_argf, #1 ' set the "seen arguments" flag
2DCC(0097) 00 68 BC A0 | :get_arg mov t1, 0-0 ' get csi_args[csi_argc]
2DD0(0098) 34 6A BC A0 | mov t2, t1 ' to t2 also
2DD4(0099) 02 68 FC 2C | shl t1, #2 ' * 4
2DD8(009A) 35 68 BC 80 | add t1, t2 ' * 5
2DDC(009B) 01 68 FC 2C | shl t1, #1 ' * 10
2DE0(009C) 01 68 BC 80 | add t1, cmd ' + digit
2DE4(009D) 30 68 FC 84 | sub t1, #"0" ' - ASCII for "0"
2DE8(009E) 34 00 BC A0 | :put_arg mov 0-0, t1 ' put csi_args[csi_argc]
2DEC(009F) 43 00 7C 5C | jmp #cmdloop
2DF0(00A0) | :not_numeric
2DF0(00A0) 3B 02 7C 86 | cmp cmd, #";" WZ ' next argument delimiter?
2DF4(00A1) AA 00 54 5C | if_nz jmp #:not_delimiter
2DF8(00A2) 07 52 7C 86 | cmp csi_argc, #7 WZ ' reached maximum number of arguments?
2DFC(00A3) 01 52 D4 80 | if_nz add csi_argc, #1 ' no, use next slot
2E00(00A4) 29 68 BC A0 | mov t1, csi_argc
2E04(00A5) 2B 68 FC 80 | add t1, #csi_args
2E08(00A6) 34 50 BD 54 | movd :clr_arg, t1
2E0C(00A7) 00 00 00 00 | nop
2E10(00A8) 00 00 FC A0 | :clr_arg mov 0-0, #0 ' preset csi_args[csi_argc] to 0
2E14(00A9) 43 00 7C 5C | jmp #cmdloop
2E18(00AA) | :not_delimiter
2E18(00AA) 00 50 FC A0 | mov csi_mode, #0 ' end CSI mode
2E1C(00AB) 2A 52 BC 80 | add csi_argc, csi_argf ' incr. argument count, if any arguments were specified
2E20(00AC) 40 02 7C 87 | cmp cmd, #"@" WZ, WC ' below @?
2E24(00AD) 43 00 70 5C | if_b jmp #cmdloop
2E28(00AE) 7A 02 7C 87 | cmp cmd, #"z" WZ, WC ' above z?
2E2C(00AF) 43 00 4C 5C | if_ae jmp #cmdloop
2E30(00B0) 40 02 FC 84 | sub cmd, #"@"
2E34(00B1) 01 02 FC 2C | shl cmd, #1 ' function word index
2E38(00B2) 19 02 BC 80 | add cmd, csi_cmds_ptr
2E3C(00B3) 01 02 BC 04 | rdword cmd, cmd ' get function pointer
2E40(00B4) FF 03 7C 66 | testn cmd, #$1ff WZ ' any bits outside the cog?
2E44(00B5) 01 00 28 5C | if_z jmp cmd ' cog function
2E48(00B6) 01 24 BC A0 | mov lmm_pc, cmd ' otherwise it's an LMM address
2E4C(00B7) 80 01 7C 5C | jmp #lmm_loop ' execute LMM code
2E50(00B8) | non_zero_args
2E50(00B8) BA 56 7C E8 | tjnz csi_args, #non_zero_args_ret
2E54(00B9) 01 56 FC 80 | add csi_args, #1
2E58(00BA) | non_zero_args_ret
2E58(00BA) 00 00 7C 5C | ret
2E5C(00BB) | shift_csi_args
2E5C(00BB) 2C 56 BC A0 | mov csi_args, csi_args + 1
2E60(00BC) 2D 58 BC A0 | mov csi_args + 1, csi_args + 2
2E64(00BD) 2E 5A BC A0 | mov csi_args + 2, csi_args + 3
2E68(00BE) 2F 5C BC A0 | mov csi_args + 3, csi_args + 4
2E6C(00BF) 30 5E BC A0 | mov csi_args + 4, csi_args + 5
2E70(00C0) 31 60 BC A0 | mov csi_args + 5, csi_args + 6
2E74(00C1) 32 62 BC A0 | mov csi_args + 6, csi_args + 7
2E78(00C2) 00 64 FC A0 | mov csi_args + 7, #0
2E7C(00C3) | shift_csi_args_ret
2E7C(00C3) 00 00 7C 5C | ret
2E80(00C4) | cr
2E80(00C4) 00 3A FC A0 | mov cur_x, #0
2E84(00C5) 00 3C FC A0 | mov new_x, #0
2E88(00C6) | cr_ret
2E88(00C6) 00 00 7C 5C | ret
2E8C(00C7) | bs
2E8C(00C7) 00 3C 7C 86 | cmp new_x, #0 WZ
2E90(00C8) 01 3C D4 84 | if_nz sub new_x, #1
2E94(00C9) CD 00 54 5C | if_nz jmp #bs_ret
2E98(00CA) 06 3C BC A0 | mov new_x, screen_w
2E9C(00CB) 01 3C FC 84 | sub new_x, #1
2EA0(00CC) 03 59 FE 5C | call #vt
2EA4(00CD) | bs_ret
2EA4(00CD) 00 00 7C 5C | ret
2EA8(00CE) | fs
2EA8(00CE) 01 3A FC 80 | add cur_x, #1
2EAC(00CF) 06 3A 3C 86 | cmp cur_x, screen_w WZ
2EB0(00D0) 01 3A E8 84 | if_z sub cur_x, #1 ' stay in last column
2EB4(00D1) | fs_ret
2EB4(00D1) 00 00 7C 5C | ret
2EB8(00D2) | ht
2EB8(00D2) 20 02 FC A0 | mov cmd, #$20
2EBC(00D3) 4A B3 FE 5C | call #emit
2EC0(00D4) 07 3C 7C 62 | test new_x, #7 WZ
2EC4(00D5) D2 00 54 5C | if_nz jmp #ht
2EC8(00D6) | ht_ret
2EC8(00D6) 00 00 7C 5C | ret
2ECC(00D7) | lf
2ECC(00D7) 01 3E FC 80 | add cur_y, #1
2ED0(00D8) 04 42 7C 62 | test flags, #flag_decom WZ ' origin mode enabled?
2ED4(00D9) E2 00 54 5C | if_nz jmp #:origin ' yes, check cursor in scroll range
2ED8(00DA) 08 3E 3C 87 | :screen cmp cur_y, screen_h WZ, WC ' no, check cursor in screen range
2EDC(00DB) 02 01 70 5C | if_b jmp #lf_ret
2EE0(00DC) 08 3E BC A0 | mov cur_y, screen_h
2EE4(00DD) 01 3E FC 84 | sub cur_y, #1
2EE8(00DE) 02 18 BC A0 | mov dst, screen_ptr ' destination = screen buffer
2EEC(00DF) 02 1A BC A0 | mov src, screen_ptr ' source = dito
2EF0(00E0) 08 22 BC A0 | mov rows, screen_h ' screen height
2EF4(00E1) EF 00 7C 5C | jmp #scroll_up_1 ' scroll the entire screen
2EF8(00E2) 0B 3E 3C 87 | :origin cmp cur_y, scroll_bot WZ, WC
2EFC(00E3) 02 01 70 5C | if_b jmp #lf_ret
2F00(00E4) 0B 3E BC A0 | mov cur_y, scroll_bot
2F04(00E5) 01 3E FC 84 | sub cur_y, #1
2F08(00E6) | scroll_up
2F08(00E6) 0A 68 BC A0 | mov t1, scroll_top
2F0C(00E7) 06 6A BC A0 | mov t2, screen_w
2F10(00E8) 79 FF FE 5C | call #mul16x16
2F14(00E9) 01 6A FC 2C | shl t2, #1
2F18(00EA) 02 6A BC 80 | add t2, screen_ptr
2F1C(00EB) 35 18 BC A0 | mov dst, t2 ' destination = scroll_top of screen buffer
2F20(00EC) 35 1A BC A0 | mov src, t2 ' source = dito
2F24(00ED) 0B 22 BC A0 | mov rows, scroll_bot ' scroll range height
2F28(00EE) 0A 22 BC 84 | sub rows, scroll_top
2F2C(00EF) | scroll_up_1
2F2C(00EF) 06 1A BC 80 | add src, screen_w ' copy from one line below
2F30(00F0) 06 1A BC 80 | add src, screen_w
2F34(00F1) 01 22 FC 87 | sub rows, #1 WZ, WC ' - 1 rows to move
2F38(00F2) FA 00 78 5C | if_be jmp #:fill ' nothing left to scroll?
2F3C(00F3) 07 20 BC A0 | :rows mov cols, screen_w2 ' columns = screen width / 2
2F40(00F4) 0D 1E BC 08 | :cols rdlong data, src
2F44(00F5) 04 1A FC 80 | add src, #4
2F48(00F6) 0C 1E 3C 08 | wrlong data, dst
2F4C(00F7) 04 18 FC 80 | add dst, #4
2F50(00F8) F4 20 FC E4 | djnz cols, #:cols
2F54(00F9) F3 22 FC E4 | djnz rows, #:rows
2F58(00FA) 07 20 BC A0 | :fill mov cols, screen_w2 ' columns = screen width / 2
2F5C(00FB) 1A 68 BC A0 | mov t1, x00200020
2F60(00FC) 26 68 BC 68 | or t1, color
2F64(00FD) 10 68 FC 24 | rol t1, #16
2F68(00FE) 26 68 BC 68 | or t1, color
2F6C(00FF) 0C 68 3C 08 | :blank wrlong t1, dst ' fill 4 spaces
2F70(0100) 04 18 FC 80 | add dst, #4
2F74(0101) FF 20 FC E4 | djnz cols, #:blank
2F78(0102) | scroll_up_ret
2F78(0102) | lf_ret
2F78(0102) 00 00 7C 5C | ret
2F7C(0103) | vt
2F7C(0103) 01 3E FC 84 | sub cur_y, #1
2F80(0104) 04 42 7C 62 | test flags, #flag_decom WZ ' origin mode enabled?
2F84(0105) 0D 01 54 5C | if_nz jmp #:origin ' yes, check cursor in scroll range
2F88(0106) | :screen ' no, check cursor in screen range
2F88(0106) 00 3E 7C C3 | cmps cur_y, #0 WZ, WC ' < 0?
2F8C(0107) 2C 01 4C 5C | if_ae jmp #vt_ret ' in range
2F90(0108) 00 3E FC A0 | mov cur_y, #0 ' stay in line 0
2F94(0109) 03 1A BC A0 | mov src, screen_end
2F98(010A) 03 18 BC A0 | mov dst, screen_end
2F9C(010B) 08 22 BC A0 | mov rows, screen_h
2FA0(010C) 19 01 7C 5C | jmp #scroll_down_1
2FA4(010D) | :origin
2FA4(010D) 0A 3E 3C C3 | cmps cur_y, scroll_top WZ, WC
2FA8(010E) 2C 01 4C 5C | if_ae jmp #vt_ret
2FAC(010F) 0A 3E BC A0 | mov cur_y, scroll_top
2FB0(0110) | scroll_down
2FB0(0110) 0B 68 BC A0 | mov t1, scroll_bot
2FB4(0111) 06 6A BC A0 | mov t2, screen_w
2FB8(0112) 79 FF FE 5C | call #mul16x16
2FBC(0113) 01 6A FC 2C | shl t2, #1
2FC0(0114) 02 6A BC 80 | add t2, screen_ptr
2FC4(0115) 35 18 BC A0 | mov dst, t2 ' destination = end of scroll range buffer
2FC8(0116) 35 1A BC A0 | mov src, t2 ' source = last row of scroll range buffer
2FCC(0117) 0B 22 BC A0 | mov rows, scroll_bot ' scroll range height
2FD0(0118) 0A 22 BC 84 | sub rows, scroll_top
2FD4(0119) | scroll_down_1
2FD4(0119) 06 1A BC 84 | sub src, screen_w
2FD8(011A) 06 1A BC 84 | sub src, screen_w
2FDC(011B) 01 22 FC 87 | sub rows, #1 WZ, WC ' - 1 rows to move
2FE0(011C) 24 01 78 5C | if_be jmp #:fill ' nothing left to scroll?
2FE4(011D) 07 20 BC A0 | :rows mov cols, screen_w2 ' columns = screen width / 2
2FE8(011E) 04 1A FC 84 | :cols sub src, #4 ' pre decrement source
2FEC(011F) 0D 1E BC 08 | rdlong data, src
2FF0(0120) 04 18 FC 84 | sub dst, #4 ' pre decrement destination
2FF4(0121) 0C 1E 3C 08 | wrlong data, dst
2FF8(0122) 1E 21 FC E4 | djnz cols, #:cols ' for all columns
2FFC(0123) 1D 23 FC E4 | djnz rows, #:rows ' for all rows
3000(0124) 1A 68 BC A0 | :fill mov t1, x00200020
3004(0125) 26 68 BC 68 | or t1, color
3008(0126) 10 68 FC 24 | rol t1, #16
300C(0127) 26 68 BC 68 | or t1, color
3010(0128) 07 20 BC A0 | mov cols, screen_w2 ' columns = screen width / 2
3014(0129) 04 18 FC 84 | :blank sub dst, #4
3018(012A) 0C 68 3C 08 | wrlong t1, dst
301C(012B) 29 21 FC E4 | djnz cols, #:blank
3020(012C) | scroll_down_ret
3020(012C) | vt_ret
3020(012C) 00 00 7C 5C | ret
3024(012D) | ff
3024(012D) 02 18 BC A0 | mov dst, screen_ptr
3028(012E) 08 22 BC A0 | mov rows, screen_h ' screen height rows
302C(012F) 1A 68 BC A0 | mov t1, x00200020
3030(0130) 26 68 BC 68 | or t1, color
3034(0131) 10 68 FC 24 | rol t1, #16
3038(0132) 26 68 BC 68 | or t1, color
303C(0133) 07 20 BC A0 | :rows mov cols, screen_w2 ' columns = screen width / 2
3040(0134) 0C 68 3C 08 | :cols wrlong t1, dst ' fill with 4 blanks
3044(0135) 04 18 FC 80 | add dst, #4
3048(0136) 34 21 FC E4 | djnz cols, #:cols ' for all columns
304C(0137) 33 23 FC E4 | djnz rows, #:rows ' for all rows
3050(0138) 3A 7B FE 5C | call #home
3054(0139) | ff_ret
3054(0139) 00 00 7C 5C | ret
3058(013A) | home
3058(013A) 00 3A FC A0 | mov cur_x, #0
305C(013B) 00 3C FC A0 | mov new_x, #0
3060(013C) 00 3E FC A0 | mov cur_y, #0
3064(013D) | home_ret
3064(013D) 00 00 7C 5C | ret
3068(013E) | can
3068(013E) 09 18 BC A0 | mov dst, cur_ptr
306C(013F) 06 20 BC A0 | mov cols, screen_w
3070(0140) 1E 20 BC 87 | sub cols, new_x WZ, WC
3074(0141) 49 01 78 5C | if_be jmp #can_ret
3078(0142) 1A 68 BC A0 | mov t1, x00200020
307C(0143) 26 68 BC 68 | or t1, color
3080(0144) 10 68 FC 24 | rol t1, #16
3084(0145) 26 68 BC 68 | or t1, color
3088(0146) 0C 68 3C 04 | :fill wrword t1, dst
308C(0147) 02 18 FC 80 | add dst, #2
3090(0148) 46 21 FC E4 | djnz cols, #:fill
3094(0149) | can_ret
3094(0149) 00 00 7C 5C | ret
3098(014A) | emit
3098(014A) 06 3C 3C 87 | cmp new_x, screen_w WZ, WC ' reached end of line?
309C(014B) 50 01 70 5C | if_b jmp #:in_bounds
30A0(014C) 20 42 7C 62 | test flags, #flag_decawm WZ ' auto wrap mode active?
30A4(014D) 59 01 68 5C | if_z jmp #emit_ret ' no, don't emit character
30A8(014E) C4 8C FD 5C | call #cr
30AC(014F) D7 04 FE 5C | call #lf
30B0(0150) 1E 3A BC A0 | :in_bounds mov cur_x, new_x
30B4(0151) 5A C3 FE 5C | call #calc_cursor
30B8(0152) 26 02 BC 68 | or cmd, color
30BC(0153) 02 40 7C 62 | test attr, #attr_underline WZ
30C0(0154) 80 02 FC 7C | muxnz cmd, #$80
30C4(0155) 09 02 3C 04 | wrword cmd, cur_ptr ' write character to screen RAM
30C8(0156) 1D 3C BC A0 | mov new_x, cur_x
30CC(0157) 01 3C FC 80 | add new_x, #1
30D0(0158) 02 12 FC 80 | add cur_ptr, #2
30D4(0159) | emit_ret
30D4(0159) 00 00 7C 5C | ret
30D8(015A) | calc_cursor
30D8(015A) 1F 68 BC A0 | mov t1, cur_y ' cursor row
30DC(015B) 06 6A BC A0 | mov t2, screen_w ' * screen width
30E0(015C) 79 FF FE 5C | call #mul16x16
30E4(015D) 35 12 BC A0 | mov cur_ptr, t2 ' product in cur_ptr
30E8(015E) 1E 12 BC 80 | add cur_ptr, new_x ' + new cursor column
30EC(015F) 01 12 FC 2C | shl cur_ptr, #1 ' * 2
30F0(0160) 02 12 BC 80 | add cur_ptr, screen_ptr ' + screen buffer address
30F4(0161) | calc_cursor_ret
30F4(0161) 00 00 7C 5C | ret
30F8(0162) | enable_cursor
30F8(0162) 43 08 7C EC | tjz cursor_ptr, #cmdloop
30FC(0163) 01 42 7C 62 | test flags, #flag_deccm WZ ' cursor enabled?
3100(0164) 00 68 E8 A0 | if_z mov t1, #%000 ' cursor off
3104(0165) 06 68 D4 A0 | if_nz mov t1, #%110 ' cursor on, blink slow
3108(0166) 02 08 FC 80 | add cursor_ptr, #2 ' cursor control
310C(0167) 04 68 3C 00 | wrbyte t1, cursor_ptr
3110(0168) 02 08 FC 84 | sub cursor_ptr, #2
3114(0169) 43 00 7C 5C | jmp #cmdloop
3118(016A) | set_color
3118(016A) 04 40 7C 62 | test attr, #attr_inverse WZ
311C(016B) 70 01 68 5C | if_z jmp #:default
3120(016C) | :inverse
3120(016C) 24 4C BC A0 | mov color, fgcol ' compose inverse color
3124(016D) 04 4C FC 2C | shl color, #4
3128(016E) 25 4C BC 68 | or color, bgcol
312C(016F) 73 01 7C 5C | jmp #:cont
3130(0170) | :default
3130(0170) 25 4C BC A0 | mov color, bgcol ' compose default color
3134(0171) 04 4C FC 2C | shl color, #4
3138(0172) 24 4C BC 68 | or color, fgcol
313C(0173) | :cont
313C(0173) 01 40 7C 62 | test attr, #attr_highlite WZ
3140(0174) 08 4C FC 7C | muxnz color, #$08
3144(0175) 08 40 7C 62 | test attr, #attr_blinking WZ
3148(0176) 80 4C FC 7C | muxnz color, #$80
314C(0177) 08 4C FC 2C | shl color, #8 ' in bits 15..8
3150(0178) 43 00 7C 5C | jmp #cmdloop
3154(0179) | mul16x16
3154(0179) 10 68 FC 2C | shl t1, #16 ' multiplicand in bits 31..16
3158(017A) 10 6C FC A0 | mov t3, #16 ' loop 16 times
315C(017B) 01 6A FC 29 | shr t2, #1 WC ' get initial multiplier bit in carry
3160(017C) 34 6A B0 81 | :loop if_c add t2, t1 WC ' if carry set, add multiplicand to product
3164(017D) 01 6A FC 31 | rcr t2, #1 WC ' next multiplier bit to carry, shift product
3168(017E) 7C 6D FC E4 | djnz t3, #:loop ' until done
316C(017F) | mul16x16_ret
316C(017F) 00 00 7C 5C | ret
3170(0180) | lmm_loop
3170(0180) 12 04 BF 08 | rdlong :op1, lmm_pc
3174(0181) 04 24 FC 80 | add lmm_pc, #4
3178(0182) 00 00 00 00 | :op1 nop
317C(0183) 12 0A BF 08 | rdlong :op2, lmm_pc
3180(0184) 04 24 FC 80 | add lmm_pc, #4
3184(0185) 00 00 00 00 | :op2 nop
3188(0186) 12 10 BF 08 | rdlong :op3, lmm_pc
318C(0187) 04 24 FC 80 | add lmm_pc, #4
3190(0188) 00 00 00 00 | :op3 nop
3194(0189) 12 16 BF 08 | rdlong :op4, lmm_pc
3198(018A) 04 24 FC 80 | add lmm_pc, #4
319C(018B) 00 00 00 00 | :op4 nop
31A0(018C) 80 01 7C 5C | jmp #lmm_loop
31A4(018D) | fit $1f0
31A4(018D) | There are 99 ($063) Longs left in the cog
31A4(018D) 6C 00 | control_table word do_nul, do_soh, do_stx, do_etx, do_eot, do_enq, do_ack, do_bel
31A6(018D) 6C 00 |
31A8(018E) 6C 00 |
31AA(018E) 6C 00 |
31AC(018F) 6C 00 |
31AE(018F) 6C 00 |
31B0(0190) 6C 00 |
31B2(0190) 6C 00 |
31B4(0191) 6F 00 | word do_bs, do_ht, do_lf, do_vt, do_ff, do_cr, do_so, do_si
31B6(0191) 71 00 |
31B8(0192) 73 00 |
31BA(0192) 75 00 |
31BC(0193) 77 00 |
31BE(0193) 6D 00 |
31C0(0194) 79 00 |
31C2(0194) 7A 00 |
31C4(0195) 6C 00 | word do_dle, do_dc1, do_dc2, do_dc3, do_dc4, do_nak, do_syn, do_etb
31C6(0195) 6C 00 |
31C8(0196) 6C 00 |
31CA(0196) 6C 00 |
31CC(0197) 6C 00 |
31CE(0197) 6C 00 |
31D0(0198) 6C 00 |
31D2(0198) 6C 00 |
31D4(0199) 7B 00 | word do_can, do_em, do_sub, do_esc, do_fs, do_gs, do_rs, do_us
31D6(0199) 6C 00 |
31D8(019A) 6C 00 |
31DA(019A) 7D 00 |
31DC(019B) 6C 00 |
31DE(019B) 6C 00 |
31E0(019C) 6C 00 |
31E2(019C) 6C 00 |
31E4(019D) 5A 32 | csi_cmds word @@@do_insert_char ' <ESC>[...@
31E6(019D) D4 32 | word @@@do_cursor_up ' <ESC>[...A
31E8(019E) E8 32 | word @@@do_cursor_down ' <ESC>[...B
31EA(019E) F8 32 | word @@@do_cursor_left ' <ESC>[...C
31EC(019F) 0C 33 | word @@@do_cursor_right ' <ESC>[...D
31EE(019F) 1C 33 | word @@@do_rows_up ' <ESC>[...E
31F0(01A0) 34 33 | word @@@do_rows_down ' <ESC>[...F
31F2(01A0) 6C 33 | word @@@do_cursor_column ' <ESC>[...G
31F4(01A1) 48 33 | word @@@do_cursor_address ' <ESC>[...H
31F6(01A1) 43 00 | word cmdloop ' I unused?
31F8(01A2) 7C 33 | word @@@do_clear_screen ' <ESC>[...J
31FA(01A2) DC 33 | word @@@do_clear_row ' <ESC>[...K
31FC(01A3) 50 34 | word @@@do_insert_line ' <ESC>[...L
31FE(01A3) C4 34 | word @@@do_delete_line ' <ESC>[...M
3200(01A4) 43 00 | word cmdloop ' N unused?
3202(01A4) 43 00 | word cmdloop ' O unused?
3204(01A5) 50 35 | word @@@do_delete_char ' P unused?
3206(01A5) 43 00 | word cmdloop ' Q unused?
3208(01A6) 43 00 | word cmdloop ' R unused?
320A(01A6) 43 00 | word cmdloop ' S unused?
320C(01A7) 43 00 | word cmdloop ' T unused?
320E(01A7) 43 00 | word cmdloop ' U unused?
3210(01A8) 43 00 | word cmdloop ' V unused?
3212(01A8) 43 00 | word cmdloop ' W unused?
3214(01A9) C8 35 | word @@@do_blank_chars ' <ESC>[...X
3216(01A9) 43 00 | word cmdloop ' Y unused?
3218(01AA) 43 00 | word cmdloop ' Z unused?
321A(01AA) 43 00 | word cmdloop ' [ unused
321C(01AB) 43 00 | word cmdloop ' \ unused
321E(01AB) 43 00 | word cmdloop ' ] unused
3220(01AC) 43 00 | word cmdloop ' ^ unused
3222(01AC) 43 00 | word cmdloop ' _ unused
3224(01AD) 6C 33 | word @@@do_cursor_column ' <ESC>[...` alternate form for <ESC>[...G
3226(01AD) 43 00 | word cmdloop ' a unused?
3228(01AE) 43 00 | word cmdloop ' b unused?
322A(01AE) 43 00 | word cmdloop ' c unused?
322C(01AF) 43 00 | word cmdloop ' d unused?
322E(01AF) 43 00 | word cmdloop ' e unused?
3230(01B0) 48 33 | word @@@do_cursor_address ' <ESC>[...f alternate form for <ESC>[...H
3232(01B0) 43 00 | word cmdloop ' g unused?
3234(01B1) 08 36 | word @@@do_flag_set ' h unused?
3236(01B1) 43 00 | word cmdloop ' i unused?
3238(01B2) 43 00 | word cmdloop ' j unused?
323A(01B2) 43 00 | word cmdloop ' k unused?
323C(01B3) 78 36 | word @@@do_flag_res ' h unused?
323E(01B3) E8 36 | word @@@do_mode_attributes ' <ESC>[...m
3240(01B4) 43 00 | word cmdloop ' n unused?
3242(01B4) 43 00 | word cmdloop ' o unused?
3244(01B5) 43 00 | word cmdloop ' p unused?
3246(01B5) 43 00 | word cmdloop ' q unused?
3248(01B6) 28 38 | word @@@do_scroll_range ' <ESC>[...r
324A(01B6) 78 38 | word @@@do_save_cursor ' <ESC>[?...s
324C(01B7) 43 00 | word cmdloop ' t unused?
324E(01B7) 8C 38 | word @@@do_restore_cursor ' <ESC>[?...u
3250(01B8) 43 00 | word cmdloop ' v unused?
3252(01B8) 43 00 | word cmdloop ' w unused?
3254(01B9) 43 00 | word cmdloop ' x unused?
3256(01B9) 43 00 | word cmdloop ' y unused?
3258(01BA) 43 00 | word cmdloop ' z unused?
325A(01BA) | do_insert_char
325A(01BA) B8 74 FD 5C | call #non_zero_args
3260(01BC) 06 3C 3C 87 | cmp new_x, screen_w WZ, WC
3264(01BD) 43 00 4C 5C | if_ae jmp #cmdloop
3268(01BE) 1F 68 BC A0 | :loop mov t1, cur_y
326C(01BF) 06 6A BC A0 | mov t2, screen_w
3270(01C0) 79 FF FE 5C | call #mul16x16
3274(01C1) 1E 6A BC 80 | add t2, new_x
3278(01C2) 01 6A FC 2C | shl t2, #1
327C(01C3) 02 6A BC 80 | add t2, screen_ptr
3280(01C4) 35 18 BC A0 | mov dst, t2
3284(01C5) 02 18 FC 80 | add dst, #2
3288(01C6) 35 1A BC A0 | mov src, t2
328C(01C7) 06 20 BC A0 | mov cols, screen_w
3290(01C8) 1E 20 BC 84 | sub cols, new_x
3294(01C9) 01 20 FC 87 | sub cols, #1 WZ, WC
3298(01CA) 28 24 F8 80 | if_be add lmm_pc, #4*(:blank - $ - 1)
329C(01CB) 0D 1E BC 04 | :insert rdword data, src
32A0(01CC) 02 1A FC 80 | add src, #2
32A4(01CD) 0C 1E 3C 04 | wrword data, dst
32A8(01CE) 02 18 FC 80 | add dst, #2
32AC(01CF) 01 20 FC 86 | sub cols, #1 WZ
32B0(01D0) 18 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :insert)
32B4(01D1) 1A 68 BC A0 | mov t1, x00200020
32B8(01D2) 26 68 BC 68 | or t1, color
32BC(01D3) 10 68 FC 24 | rol t1, #16
32C0(01D4) 26 68 BC 68 | or t1, color
32C4(01D5) 35 68 3C 04 | :blank wrword t1, t2
32C8(01D6) 01 56 FC 86 | sub csi_args, #1 WZ
32CC(01D7) 68 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :loop)
32D0(01D8) 43 00 7C 5C | jmp #cmdloop
32D4(01D9) | do_cursor_up
32D4(01D9) B8 74 FD 5C | call #non_zero_args
32D8(01DA) 03 59 FE 5C | :loop call #vt
32DC(01DB) 01 56 FC 86 | sub csi_args, #1 WZ
32E0(01DC) 0C 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :loop)
32E4(01DD) 43 00 7C 5C | jmp #cmdloop
32E8(01DE) | do_cursor_down
32E8(01DE) B8 74 FD 5C | call #non_zero_args
32EC(01DF) D7 04 FE 5C | :loop call #lf
32F0(01E0) DF 57 FC E4 | djnz csi_args, #:loop
32F4(01E1) 43 00 7C 5C | jmp #cmdloop
32F8(01E2) | do_cursor_left
32F8(01E2) B8 74 FD 5C | call #non_zero_args
32FC(01E3) 1E 3A BC A0 | mov cur_x, new_x
3300(01E4) 2B 3A BC 85 | sub cur_x, csi_args WC
3304(01E5) 00 3A F0 A0 | if_c mov cur_x, #0
3308(01E6) 38 00 7C 5C | jmp #validate_cursor
330C(01E7) | do_cursor_right
330C(01E7) B8 74 FD 5C | call #non_zero_args
3310(01E8) 1E 3A BC A0 | mov cur_x, new_x
3314(01E9) 2B 3A BC 80 | add cur_x, csi_args
3318(01EA) 38 00 7C 5C | jmp #validate_cursor
331C(01EB) | do_rows_up
331C(01EB) B8 74 FD 5C | call #non_zero_args
3320(01EC) 00 3A FC A0 | mov cur_x, #0
3324(01ED) 00 3C FC A0 | mov new_x, #0
3328(01EE) 2B 3E BC 85 | sub cur_y, csi_args WC
332C(01EF) 00 3E F0 A0 | if_c mov cur_y, #0
3330(01F0) 38 00 7C 5C | jmp #validate_cursor
3334(01F1) | do_rows_down
3334(01F1) B8 74 FD 5C | call #non_zero_args
3338(01F2) 00 3A FC A0 | mov cur_x, #0
333C(01F3) 00 3C FC A0 | mov new_x, #0
3340(01F4) 2B 3E BC 80 | add cur_y, csi_args
3344(01F5) 38 00 7C 5C | jmp #validate_cursor
3348(01F6) | do_cursor_address
3348(01F6) 00 54 7C 86 | cmp csi_argf, #0 WZ ' nor arguments at all?
334C(01F7) 3A 7B EA 5C | if_z call #home
3350(01F8) 43 00 68 5C | if_z jmp #cmdloop
3354(01F9) B8 74 FD 5C | call #non_zero_args
3358(01FA) 2B 3E BC A0 | mov cur_y, csi_args
335C(01FB) 01 3E FC 84 | sub cur_y, #1
3360(01FC) 01 52 7C 87 | cmp csi_argc, #1 WZ, WC ' the caller specified just a row?
3364(01FD) 38 00 78 5C | if_be jmp #validate_cursor
3368(01FE) BB 86 FD 5C | call #shift_csi_args
336C(01FF) | do_cursor_column
336C(01FF) B8 74 FD 5C | call #non_zero_args
3370(0200) 2B 3A BC A0 | mov cur_x, csi_args
3374(0201) 01 3A FC 84 | sub cur_x, #1
3378(0202) 38 00 7C 5C | jmp #validate_cursor
337C(0203) | do_clear_screen
337C(0203) 5A C3 FE 5C | call #calc_cursor
3380(0204) 00 56 7C 86 | cmp csi_args, #0 WZ ' cursor to end of screen?
3384(0205) 0C 24 D4 80 | if_nz add lmm_pc, #4*(:not_0 - $ - 1)
3388(0206) 09 18 BC A0 | mov dst, cur_ptr
338C(0207) 03 1C BC A0 | mov end, screen_end
3390(0208) 24 24 FC 80 | add lmm_pc, #4*(:fill - $ - 1)
3394(0209) 01 56 7C 86 | :not_0 cmp csi_args, #1 WZ ' start of screen to cursor?
3398(020A) 0C 24 D4 80 | if_nz add lmm_pc, #4*(:not_1 - $ - 1)
339C(020B) 02 18 BC A0 | mov dst, screen_ptr
33A0(020C) 09 1C BC A0 | mov end, cur_ptr
33A4(020D) 10 24 FC 80 | add lmm_pc, #4*(:fill - $ - 1)
33A8(020E) 02 56 7C 86 | :not_1 cmp csi_args, #2 WZ ' entire screen?
33AC(020F) 43 00 54 5C | if_nz jmp #cmdloop ' invalid argument
33B0(0210) 02 18 BC A0 | mov dst, screen_ptr ' default = entire screen
33B4(0211) 03 1C BC A0 | mov end, screen_end
33B8(0212) 1A 68 BC A0 | :fill mov t1, x00200020
33BC(0213) 26 68 BC 68 | or t1, color
33C0(0214) 10 68 FC 24 | rol t1, #16
33C4(0215) 26 68 BC 68 | or t1, color
33C8(0216) 0C 68 3C 04 | :loop wrword t1, dst ' fill a word
33CC(0217) 02 18 FC 80 | add dst, #2
33D0(0218) 0E 18 3C 87 | cmp dst, end WZ, WC
33D4(0219) 10 24 F0 84 | if_b sub lmm_pc, #4*($ + 1 - :loop)
33D8(021A) 43 00 7C 5C | jmp #cmdloop
33DC(021B) | do_clear_row
33DC(021B) 5A C3 FE 5C | call #calc_cursor
33E0(021C) 00 56 7C 86 | cmp csi_args, #0 WZ ' cursor to end of row?
33E4(021D) 14 24 D4 80 | if_nz add lmm_pc, #4*(:not_0 - $ - 1)
33E8(021E) 09 18 BC A0 | mov dst, cur_ptr ' default = cursor to end of row
33EC(021F) 09 1C BC A0 | mov end, cur_ptr
33F0(0220) 1E 1C BC 84 | sub end, new_x
33F4(0221) 06 1C BC 80 | add end, screen_w ' end of row
33F8(0222) 30 24 FC 80 | add lmm_pc, #4*(:fill - $ - 1)
33FC(0223) 01 56 7C 86 | :not_0 cmp csi_args, #1 WZ ' start of row to cursor?
3400(0224) 10 24 D4 80 | if_nz add lmm_pc, #4*(:not_1 - $ - 1)
3404(0225) 09 18 BC A0 | mov dst, cur_ptr
3408(0226) 1E 18 BC 84 | sub dst, new_x ' start of row
340C(0227) 09 1C BC A0 | mov end, cur_ptr ' to cursor
3410(0228) 18 24 FC 80 | add lmm_pc, #4*(:fill - $ - 1)
3414(0229) 02 56 7C 86 | :not_1 cmp csi_args, #2 WZ ' entire row?
3418(022A) 43 00 54 5C | if_nz jmp #cmdloop ' invalid argument
341C(022B) 09 18 BC A0 | mov dst, cur_ptr
3420(022C) 1E 18 BC 84 | sub dst, new_x ' start of row
3424(022D) 0C 1C BC A0 | mov end, dst
3428(022E) 06 1C BC 80 | add end, screen_w ' end of row
342C(022F) 1A 68 BC A0 | :fill mov t1, x00200020
3430(0230) 26 68 BC 68 | or t1, color
3434(0231) 10 68 FC 24 | rol t1, #16
3438(0232) 26 68 BC 68 | or t1, color
343C(0233) 0C 68 3C 04 | :loop wrword t1, dst ' fill a word
3440(0234) 02 18 FC 80 | add dst, #2
3444(0235) 0E 18 3C 87 | cmp dst, end WZ, WC
3448(0236) 10 24 F0 84 | if_b sub lmm_pc, #4*($ + 1 - :loop)
344C(0237) 43 00 7C 5C | jmp #cmdloop
3450(0238) | do_insert_line
3450(0238) B8 74 FD 5C | call #non_zero_args
3454(0239) 03 18 BC A0 | :loop mov dst, screen_end
3458(023A) 03 1A BC A0 | mov src, screen_end
345C(023B) 06 1A BC 84 | sub src, screen_w
3460(023C) 08 22 BC A0 | mov rows, screen_h ' screen rows
3464(023D) 1F 22 BC 84 | sub rows, cur_y ' - cursor row
3468(023E) 01 22 FC 87 | sub rows, #1 WZ, WC ' - 1
346C(023F) 24 24 F8 80 | if_be add lmm_pc, #4*(:fill - $ - 1) ' nothing left to move?
3470(0240) 07 20 BC A0 | :rows mov cols, screen_w2 ' columns = screen width / 2
3474(0241) 04 1A FC 84 | :cols sub src, #4
3478(0242) 0D 1E BC 08 | rdlong data, src
347C(0243) 04 18 FC 84 | sub dst, #4
3480(0244) 0C 1E 3C 08 | wrlong data, dst
3484(0245) 01 20 FC 86 | sub cols, #1 WZ
3488(0246) 18 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :cols)
348C(0247) 01 22 FC 86 | sub rows, #1 WZ
3490(0248) 24 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :rows)
3494(0249) 1A 68 BC A0 | :fill mov t1, x00200020
3498(024A) 26 68 BC 68 | or t1, color
349C(024B) 10 68 FC 24 | rol t1, #16
34A0(024C) 26 68 BC 68 | or t1, color
34A4(024D) 07 20 BC A0 | mov cols, screen_w2 ' columns = screen width / 2
34A8(024E) 04 18 FC 84 | :blank sub dst, #4
34AC(024F) 0C 68 3C 08 | wrlong t1, dst
34B0(0250) 01 20 FC 86 | sub cols, #1 WZ
34B4(0251) 10 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :blank) ' for all columns
34B8(0252) 01 56 FC 86 | sub csi_args, #1 WZ ' more lines to insert?
34BC(0253) 6C 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :loop)
34C0(0254) 43 00 7C 5C | jmp #cmdloop
34C4(0255) | do_delete_line
34C4(0255) B8 74 FD 5C | call #non_zero_args
34C8(0256) 1F 68 BC A0 | :loop mov t1, cur_y
34CC(0257) 06 6A BC A0 | mov t2, screen_w
34D0(0258) 79 FF FE 5C | call #mul16x16
34D4(0259) 01 6A FC 2C | shl t2, #1
34D8(025A) 02 6A BC 80 | add t2, screen_ptr ' cursor row address
34DC(025B) 35 18 BC A0 | mov dst, t2
34E0(025C) 35 1A BC A0 | mov src, t2
34E4(025D) 06 1A BC 80 | add src, screen_w ' one row down
34E8(025E) 06 1A BC 80 | add src, screen_w
34EC(025F) 08 22 BC A0 | mov rows, screen_h ' screen rows
34F0(0260) 1F 22 BC 84 | sub rows, cur_y ' - cursor row
34F4(0261) 01 22 FC 87 | sub rows, #1 WZ, WC ' - 1
34F8(0262) 24 24 F8 80 | if_be add lmm_pc, #4*(:fill - $ - 1) ' nothing left to move?
34FC(0263) 07 20 BC A0 | :rows mov cols, screen_w2 ' columns = screen width / 2
3500(0264) 0D 1E BC 08 | :cols rdlong data, src
3504(0265) 04 1A FC 80 | add src, #4
3508(0266) 0C 1E 3C 08 | wrlong data, dst
350C(0267) 04 18 FC 80 | add dst, #4
3510(0268) 01 20 FC 86 | sub cols, #1 WZ
3514(0269) 18 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :cols)
3518(026A) 01 22 FC 86 | sub rows, #1 WZ
351C(026B) 24 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :rows)
3520(026C) 1A 68 BC A0 | :fill mov t1, x00200020
3524(026D) 26 68 BC 68 | or t1, color
3528(026E) 10 68 FC 24 | rol t1, #16
352C(026F) 26 68 BC 68 | or t1, color
3530(0270) 07 20 BC A0 | mov cols, screen_w2 ' columns = screen width / 2
3534(0271) 0C 68 3C 08 | :blank wrlong t1, dst
3538(0272) 04 18 FC 80 | add dst, #4
353C(0273) 01 20 FC 86 | sub cols, #1 WZ
3540(0274) 10 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :blank) ' for all columns
3544(0275) 01 56 FC 86 | sub csi_args, #1 WZ ' more lines to insert?
3548(0276) 84 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :loop)
354C(0277) 43 00 7C 5C | jmp #cmdloop
3550(0278) | do_delete_char
3550(0278) B8 74 FD 5C | call #non_zero_args
3554(0279) 06 3C 3C 87 | cmp new_x, screen_w WZ, WC
3558(027A) 43 00 4C 5C | if_ae jmp #cmdloop ' can't delete beyond last column
355C(027B) 1F 68 BC A0 | :loop mov t1, cur_y
3560(027C) 06 6A BC A0 | mov t2, screen_w
3564(027D) 79 FF FE 5C | call #mul16x16
3568(027E) 1E 6A BC 80 | add t2, new_x
356C(027F) 01 6A FC 2C | shl t2, #1
3570(0280) 02 6A BC 80 | add t2, screen_ptr
3574(0281) 35 18 BC A0 | mov dst, t2
3578(0282) 35 1A BC A0 | mov src, t2
357C(0283) 02 1A FC 80 | add src, #2
3580(0284) 06 20 BC A0 | mov cols, screen_w
3584(0285) 1E 20 BC 84 | sub cols, new_x
3588(0286) 01 20 FC 87 | sub cols, #1 WZ, WC
358C(0287) 18 24 F8 80 | if_be add lmm_pc, #4*(:blank - $ - 1) ' new_x is beyond the last column
3590(0288) 0D 1E BC 04 | :insert rdword data, src
3594(0289) 02 1A FC 80 | add src, #2
3598(028A) 0C 1E 3C 04 | wrword data, dst
359C(028B) 02 18 FC 80 | add dst, #2
35A0(028C) 01 20 FC 86 | sub cols, #1 WZ
35A4(028D) 18 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :insert)
35A8(028E) 1A 68 BC A0 | :blank mov t1, x00200020
35AC(028F) 26 68 BC 68 | or t1, color
35B0(0290) 10 68 FC 24 | rol t1, #16
35B4(0291) 26 68 BC 68 | or t1, color
35B8(0292) 0C 68 3C 04 | wrword t1, dst ' clear the last character in the row
35BC(0293) 01 56 FC 86 | sub csi_args, #1 WZ
35C0(0294) 68 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :loop)
35C4(0295) 43 00 7C 5C | jmp #cmdloop
35C8(0296) | do_blank_chars
35C8(0296) B8 74 FD 5C | call #non_zero_args
35CC(0297) 09 18 BC A0 | mov dst, cur_ptr
35D0(0298) 06 20 BC A0 | mov cols, screen_w
35D4(0299) 1E 20 BC 87 | sub cols, new_x WZ, WC
35D8(029A) 43 00 78 5C | if_be jmp #cmdloop
35DC(029B) 1A 68 BC A0 | mov t1, x00200020
35E0(029C) 26 68 BC 68 | or t1, color
35E4(029D) 10 68 FC 24 | rol t1, #16
35E8(029E) 26 68 BC 68 | or t1, color
35EC(029F) 0C 68 3C 04 | :fill wrword t1, dst
35F0(02A0) 02 18 FC 80 | add dst, #2
35F4(02A1) 01 56 FC 86 | sub csi_args, #1 WZ
35F8(02A2) 43 00 68 5C | if_z jmp #cmdloop
35FC(02A3) 01 20 FC 86 | sub cols, #1 WZ
3600(02A4) 18 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :fill)
3604(02A5) 43 00 7C 5C | jmp #cmdloop
3608(02A6) | do_flag_set
3608(02A6) | :loop
3608(02A6) 2B 02 BC A0 | mov cmd, csi_args
360C(02A7) 01 66 7C 86 | cmp question_mark, #1 WZ ' <ESC>[? sequence?
3610(02A8) 1C 24 E8 80 | if_z add lmm_pc, #4*(:ques - $ - 1)
3614(02A9) 03 02 7C 86 | cmp cmd, #3 WZ ' <ESC>[3h - display control characters
3618(02AA) 00 43 E8 68 | if_z or flags, #flag_ctrl
361C(02AB) 04 02 7C 86 | cmp cmd, #4 WZ ' <ESC>[4h - set insert mode
3620(02AC) 02 42 E8 68 | if_z or flags, #flag_decim
3624(02AD) 14 02 7C 86 | cmp cmd, #20 WZ ' <ESC>[20h - set auto CR mode
3628(02AE) 08 42 E8 68 | if_z or flags, #flag_deccr
362C(02AF) 30 24 FC 80 | add lmm_pc, #4*(:next - $ - 1)
3630(02B0) | :ques
3630(02B0) 01 02 7C 86 | cmp cmd, #1 WZ ' <ESC>[?1h - enable cursor keys
3634(02B1) 10 42 E8 68 | if_z or flags, #flag_decck
3638(02B2) 05 02 7C 86 | cmp cmd, #5 WZ ' <ESC>[?5h - inverse terminal on
363C(02B3) 01 38 E8 68 | if_z or inverse, #1
3640(02B4) 06 02 7C 86 | cmp cmd, #6 WZ ' <ESC>[?6h - enable origin mode
3644(02B5) 04 42 E8 68 | if_z or flags, #flag_decom
3648(02B6) 07 02 7C 86 | cmp cmd, #7 WZ ' <ESC>[?7h - enable auto wrap mode
364C(02B7) 20 42 E8 68 | if_z or flags, #flag_decawm
3650(02B8) 08 02 7C 86 | cmp cmd, #8 WZ ' <ESC>[?8h - enable auto repeat mode
3654(02B9) 40 42 E8 68 | if_z or flags, #flag_decarm
3658(02BA) 19 02 7C 86 | cmp cmd, #25 WZ ' <ESC>[?25h - enable cursor
365C(02BB) 01 42 E8 68 | if_z or flags, #flag_deccm
3660(02BC) | :next
3660(02BC) 00 54 7C 86 | cmp csi_argf, #0 WZ ' no arguments specified?
3664(02BD) 43 00 68 5C | if_z jmp #cmdloop
3668(02BE) BB 86 FD 5C | call #shift_csi_args
366C(02BF) 01 52 FC 86 | sub csi_argc, #1 WZ
3670(02C0) 6C 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :loop)
3674(02C1) 62 01 7C 5C | jmp #enable_cursor
3678(02C2) | do_flag_res
3678(02C2) | :loop
3678(02C2) 2B 02 BC A0 | mov cmd, csi_args
367C(02C3) 01 66 7C 86 | cmp question_mark, #1 WZ ' <ESC>[? sequence?
3680(02C4) 1C 24 E8 80 | if_z add lmm_pc, #4*(:ques - $ - 1)
3684(02C5) 03 02 7C 86 | cmp cmd, #3 WZ ' <ESC>[3l - don't display control characters
3688(02C6) 00 43 E8 64 | if_z andn flags, #flag_ctrl
368C(02C7) 04 02 7C 86 | cmp cmd, #4 WZ ' <ESC>[4l - reset insert mode
3690(02C8) 02 42 E8 64 | if_z andn flags, #flag_decim
3694(02C9) 14 02 7C 86 | cmp cmd, #20 WZ ' <ESC>[20l - reset auto CR mode
3698(02CA) 08 42 E8 64 | if_z andn flags, #flag_deccr
369C(02CB) 30 24 FC 80 | add lmm_pc, #4*(:next - $ - 1)
36A0(02CC) | :ques
36A0(02CC) 01 02 7C 86 | cmp cmd, #1 WZ ' <ESC>[?1l - disable cursor keys
36A4(02CD) 10 42 E8 64 | if_z andn flags, #flag_decck
36A8(02CE) 05 02 7C 86 | cmp cmd, #5 WZ ' <ESC>[?5l - inverse terminal off
36AC(02CF) 01 38 E8 64 | if_z andn inverse, #1
36B0(02D0) 06 02 7C 86 | cmp cmd, #6 WZ ' <ESC>[?6l - disable origin mode
36B4(02D1) 04 42 E8 64 | if_z andn flags, #flag_decom
36B8(02D2) 07 02 7C 86 | cmp cmd, #7 WZ ' <ESC>[?7l - disable auto wrap mode
36BC(02D3) 20 42 E8 64 | if_z andn flags, #flag_decawm
36C0(02D4) 08 02 7C 86 | cmp cmd, #8 WZ ' <ESC>[?8l - disable auto repeat mode
36C4(02D5) 40 42 E8 64 | if_z andn flags, #flag_decarm
36C8(02D6) 19 02 7C 86 | cmp cmd, #25 WZ ' <ESC>[?25l - disable cursor
36CC(02D7) 01 42 E8 64 | if_z andn flags, #flag_deccm
36D0(02D8) | :next
36D0(02D8) 00 54 7C 86 | cmp csi_argf, #0 WZ ' no arguments specified?
36D4(02D9) 43 00 68 5C | if_z jmp #cmdloop
36D8(02DA) BB 86 FD 5C | call #shift_csi_args
36DC(02DB) 01 52 FC 86 | sub csi_argc, #1 WZ
36E0(02DC) 6C 24 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :loop)
36E4(02DD) 62 01 7C 5C | jmp #enable_cursor
36E8(02DE) | do_mode_attributes
36E8(02DE) 2B 02 BC A0 | :get_arg mov cmd, csi_args ' get next argument
36EC(02DF) 00 02 7C 86 | cmp cmd, #0 WZ ' 0 = reset all attributes
36F0(02E0) 00 40 E8 A0 | if_z mov attr, #0
36F4(02E1) 00 4A E8 A0 | if_z mov bgcol, #%0000
36F8(02E2) 07 48 E8 A0 | if_z mov fgcol, #%0111
36FC(02E3) 01 02 7C 86 | cmp cmd, #1 WZ ' 1 = highlight on
3700(02E4) 01 40 E8 68 | if_z or attr, #attr_highlite
3704(02E5) 02 02 7C 86 | cmp cmd, #2 WZ ' 2 = highlight off
3708(02E6) 01 40 E8 64 | if_z andn attr, #attr_highlite
370C(02E7) 04 02 7C 86 | cmp cmd, #4 WZ ' 4 = underline on
3710(02E8) 02 40 E8 68 | if_z or attr, #attr_underline
3714(02E9) 05 02 7C 86 | cmp cmd, #5 WZ ' 5 = blinking on
3718(02EA) 08 40 E8 68 | if_z or attr, #attr_blinking
371C(02EB) 07 02 7C 86 | cmp cmd, #7 WZ ' 7 = inverse on
3720(02EC) 04 40 E8 68 | if_z or attr, #attr_inverse
3724(02ED) 0A 02 7C 86 | cmp cmd, #10 WZ ' 10 = primary font, no ctrl, no meta
3728(02EE) 00 43 E8 64 | if_z andn flags, #flag_ctrl
372C(02EF) 80 42 E8 64 | if_z andn flags, #flag_meta
3730(02F0) 0B 02 7C 86 | cmp cmd, #11 WZ ' 11 = alternate font, ctrl chars, low half, meta off
3734(02F1) 00 43 E8 68 | if_z or flags, #flag_ctrl
3738(02F2) 80 42 E8 64 | if_z andn flags, #flag_meta
373C(02F3) 0C 02 7C 86 | cmp cmd, #12 WZ ' 12 = alternate font, ctrl chars, low half, meta on
3740(02F4) 00 43 E8 68 | if_z or flags, #flag_ctrl
3744(02F5) 80 42 E8 68 | if_z or flags, #flag_meta
3748(02F6) 15 02 7C 86 | cmp cmd, #21 WZ ' 21 = highlight on
374C(02F7) 01 40 E8 68 | if_z or attr, #attr_highlite
3750(02F8) 16 02 7C 86 | cmp cmd, #22 WZ ' 22 = highlight on
3754(02F9) 01 40 E8 68 | if_z or attr, #attr_highlite
3758(02FA) 18 02 7C 86 | cmp cmd, #24 WZ ' 24 = underline off
375C(02FB) 02 40 E8 64 | if_z andn attr, #attr_underline
3760(02FC) 19 02 7C 86 | cmp cmd, #25 WZ ' 25 = blinking off
3764(02FD) 08 40 E8 64 | if_z andn attr, #attr_blinking
3768(02FE) 1B 02 7C 86 | cmp cmd, #27 WZ ' 27 = inverse off
376C(02FF) 04 40 E8 64 | if_z andn attr, #attr_inverse
3770(0300) 1E 02 7C 86 | cmp cmd, #30 WZ ' 30 = foreground color 0
3774(0301) 00 48 E8 A0 | if_z mov fgcol, #%0000
3778(0302) 1F 02 7C 86 | cmp cmd, #31 WZ ' 31 = foreground color 1
377C(0303) 01 48 E8 A0 | if_z mov fgcol, #%0001
3780(0304) 20 02 7C 86 | cmp cmd, #32 WZ ' 32 = foreground color 2
3784(0305) 02 48 E8 A0 | if_z mov fgcol, #%0010
3788(0306) 21 02 7C 86 | cmp cmd, #33 WZ ' 33 = foreground color 3
378C(0307) 03 48 E8 A0 | if_z mov fgcol, #%0011
3790(0308) 22 02 7C 86 | cmp cmd, #34 WZ ' 34 = foreground color 4
3794(0309) 04 48 E8 A0 | if_z mov fgcol, #%0100
3798(030A) 23 02 7C 86 | cmp cmd, #35 WZ ' 35 = foreground color 5
379C(030B) 05 48 E8 A0 | if_z mov fgcol, #%0101
37A0(030C) 24 02 7C 86 | cmp cmd, #36 WZ ' 36 = foreground color 6
37A4(030D) 06 48 E8 A0 | if_z mov fgcol, #%0110
37A8(030E) 25 02 7C 86 | cmp cmd, #37 WZ ' 37 = foreground color 7
37AC(030F) 07 48 E8 A0 | if_z mov fgcol, #%0111
37B0(0310) 26 02 7C 86 | cmp cmd, #38 WZ ' 38 = default color and underline on
37B4(0311) 07 48 E8 A0 | if_z mov fgcol, #%0111
37B8(0312) 02 40 E8 68 | if_z or attr, #attr_underline
37BC(0313) 27 02 7C 86 | cmp cmd, #39 WZ ' 39 = default color and underline off
37C0(0314) 07 48 E8 A0 | if_z mov fgcol, #%0111
37C4(0315) 02 40 E8 64 | if_z andn attr, #attr_underline
37C8(0316) 28 02 7C 86 | cmp cmd, #40 WZ ' 40 = default background
37CC(0317) 00 4A E8 A0 | if_z mov bgcol, #%0000 ' black
37D0(0318) 29 02 7C 86 | cmp cmd, #41 WZ ' 41 = background color 1
37D4(0319) 01 4A E8 A0 | if_z mov bgcol, #%0001
37D8(031A) 2A 02 7C 86 | cmp cmd, #42 WZ ' 42 = background color 2
37DC(031B) 02 4A E8 A0 | if_z mov bgcol, #%0010
37E0(031C) 2B 02 7C 86 | cmp cmd, #43 WZ ' 43 = background color 3
37E4(031D) 03 4A E8 A0 | if_z mov bgcol, #%0011
37E8(031E) 2C 02 7C 86 | cmp cmd, #44 WZ ' 44 = background color 4
37EC(031F) 04 4A E8 A0 | if_z mov bgcol, #%0100
37F0(0320) 2D 02 7C 86 | cmp cmd, #45 WZ ' 45 = background color 5
37F4(0321) 05 4A E8 A0 | if_z mov bgcol, #%0101
37F8(0322) 2E 02 7C 86 | cmp cmd, #46 WZ ' 46 = background color 6
37FC(0323) 06 4A E8 A0 | if_z mov bgcol, #%0110
3800(0324) 2F 02 7C 86 | cmp cmd, #47 WZ ' 47 = background color 7
3804(0325) 07 4A E8 A0 | if_z mov bgcol, #%0111
3808(0326) 31 02 7C 86 | cmp cmd, #49 WZ ' 49 = default background
380C(0327) 00 4A E8 A0 | if_z mov bgcol, #%0000 ' black
3810(0328) 00 54 7C 86 | cmp csi_argf, #0 WZ ' no arguments specified?
3814(0329) 43 00 68 5C | if_z jmp #cmdloop
3818(032A) BB 86 FD 5C | call #shift_csi_args
381C(032B) 01 52 FC 86 | sub csi_argc, #1 WZ
3820(032C) 3C 25 D4 84 | if_nz sub lmm_pc, #4*($ + 1 - :get_arg)
3824(032D) 6A 01 7C 5C | jmp #set_color
3828(032E) | do_scroll_range
3828(032E) 02 52 7C 87 | cmp csi_argc, #2 WZ, WC ' 2 arguments specified?
382C(032F) 0C 24 CC 80 | if_ae add lmm_pc, #4*(:set_range - $ - 1)
3830(0330) 01 14 FC A0 | mov scroll_top, #1
3834(0331) 08 16 BC A0 | mov scroll_bot, screen_h
3838(0332) 2C 24 FC 80 | add lmm_pc, #4*(:bottom_ok - $ - 1)
383C(0333) | :set_range
383C(0333) 2B 14 BC A0 | mov scroll_top, csi_args
3840(0334) 2C 16 BC A0 | mov scroll_bot, csi_args + 1
3844(0335) 0B 14 3C 87 | cmp scroll_top, scroll_bot WZ, WC ' bottom => top?
3848(0336) 0C 24 F8 80 | if_be add lmm_pc, #4*(:order_ok - $ - 1)
384C(0337) 01 14 FC A0 | mov scroll_top, #1
3850(0338) 08 16 BC A0 | mov scroll_bot, screen_h
3854(0339) 10 24 FC 80 | add lmm_pc, #4*(:bottom_ok - $ - 1)
3858(033A) | :order_ok
3858(033A) 08 16 3C 87 | cmp scroll_bot, screen_h WZ, WC ' bottom > screen height?
385C(033B) 08 24 F8 80 | if_be add lmm_pc, #4*(:bottom_ok - $ - 1)
3860(033C) 01 14 FC A0 | mov scroll_top, #1
3864(033D) 08 16 BC A0 | mov scroll_bot, screen_h
3868(033E) | :bottom_ok
3868(033E) 01 14 FC 84 | sub scroll_top, #1
386C(033F) 00 3A FC A0 | mov cur_x, #0
3870(0340) 00 3E FC A0 | mov cur_y, #0
3874(0341) 37 00 7C 5C | jmp #goto_xay
3878(0342) | do_save_cursor
3878(0342) 1D 26 BC A0 | mov cur_x_save, cur_x
387C(0343) 1E 2A BC A0 | mov new_x_save, new_x
3880(0344) 1F 28 BC A0 | mov cur_y_save, cur_y
3884(0345) 20 2C BC A0 | mov attr_save, attr
3888(0346) 43 00 7C 5C | jmp #cmdloop
388C(0347) | do_restore_cursor
388C(0347) 13 3A BC A0 | mov cur_x, cur_x_save
3890(0348) 15 3C BC A0 | mov new_x, new_x_save
3894(0349) 14 3E BC A0 | mov cur_y, cur_y_save
3898(034A) 16 40 BC A0 | mov attr, attr_save
389C(034B) 43 00 7C 5C | jmp #cmdloop
|===========================================================================|
|===========================================================================|
Spin Block start with 1 Parameters and 0 Extra Stack Longs. Method 1
PUB start(params) : okay
Local Parameter DBASE:0000 - Result
Local Parameter DBASE:0004 - params
|===========================================================================|
29 stop
Addr : 38A0: 01 : Drop Anchor
Addr : 38A1: 05 02 : Call Sub 2
30 okay := cog := COGNEW(@entry, params) + 1
Addr : 38A3: 34 : Constant 0 $FFFFFFFF
Addr : 38A4: C7 0C : Memory Op Long PBASE + ADDRESS Address = 000C
Addr : 38A6: 64 : Variable Operation Local Offset - 1 Read
Addr : 38A7: 28 : CogInit(Id, Addr, Ptr) Push
Addr : 38A8: 36 : Constant 2 $00000001
Addr : 38A9: EC : Math Op +
Addr : 38AA: 42 80 : Variable Operation Global Offset - 0 Assign Write Push
Addr : 38AC: 61 : Variable Operation Local Offset - 0 Write
Addr : 38AD: 32 : Return
|===========================================================================|
Spin Block stop with 0 Parameters and 0 Extra Stack Longs. Method 2
PUB stop : okay
Local Parameter DBASE:0000 - Result
|===========================================================================|
33 if cog
Addr : 38AE: 40 : Variable Operation Global Offset - 0 Read
Addr : 38AF: JZ Label0008
Addr : 38AF: 0A 05 : jz Address = 38B6 5
34 COGSTOP(cog~~ - 1)
Addr : 38B1: 42 9C : Variable Operation Global Offset - 0 Assign VAR~~ Post-set Push
Addr : 38B3: 36 : Constant 2 $00000001
Addr : 38B4: ED : Math Op -
Addr : 38B5: 21 : CogStop(id)
Addr : 38B6: Label0008
Addr : 38B6: Label0009
Addr : 38B6: 32 : Return