📄 postfix.asl
字号:
0A0B 1296 .MemToMem:
+ 1297
0A0B F5 00 1298 lda0 .DataBuf
0A0D F9 00 1299 sta0 .Buf1
0A0F 20 0F BF 1300 call .ClosEndPS
0A12 20 0E 8B 1301 call .StoFuncPS
0A15 F3 A6 1302 lda #.MUL
0A17 F9 00 1303 sta0 .DataBuf
0A19 20 0F BF 1304 call .ClosEndPS
0A1C 20 0E 8B 1305 call .StoFuncPS
0A1F 02 00 0A 1306 br .IN2PS
+ 1307 ;-------------------------------------------
0A22 1308 .Sign:
0A22 F5 00 1309 lda0 .DataBuf
0A24 A7 A4 1310 cmpe #.ADD
0A26 06 0A 2E 1311 brz .IsADD
0A29 F5 00 1312 lda0 .DecFlag
0A2B 1F 1313 inca
0A2C F9 00 1314 sta0 .DecFlag
0A2E 1315 .IsADD:
0A2E F5 00 1316 lda0 .DataBuf
0A30 F9 00 1317 sta0 .Buf1
0A32 02 00 0A 1318 br .IN2PS
+ 1319 ;-------------------------------------------
0A35 1320 .PushTOStack:
0A35 F5 00 1321 lda0 .DecFlag
0A37 CB 01 1322 anda #01h
0A39 06 0A 56 1323 brz .1$
0A3C F3 03 1324 lda #.STPP
0A3E FC 28 1325 sta PP
0A40 F5 00 1326 lda0 .STDP
0A42 FC 21 1327 sta DP
0A44 F2 1328 lda i
0A45 A7 00 1329 cmpe #0h
0A47 06 0A 4F 1330 brz .NoAdddp
0A4A 18 1331 incdp
0A4B F0 21 1332 lda DP
0A4D F9 00 1333 sta0 .STDP
0A4F 1334 .NoAdddp:
0A4F F3 A8 1335 lda #.Negative
0A51 FE 1336 sta i
0A52 F3 00 1337 lda #0h
0A54 F9 00 1338 sta0 .DecFlag
0A56 1339 .1$:
0A56 20 0D 6B 1340 call .StoStack
0A59 F5 00 1341 lda0 .AfterPari
0A5B F9 00 1342 sta0 .BeforePari
0A5D F5 00 1343 lda0 .DataBuf
0A5F F9 00 1344 sta0 .Buf1
0A61 02 00 0A 1345 br .IN2PS
+ 1346 ;===========================================
0A64 1347 .CheckPari::
0A64 F5 01 1348 lda0 .DataBuf+1
0A66 A7 A0 1349 cmpe #.Point
0A68 07 0A 72 1350 brnz .CheckNum
0A6B F3 02 1351 lda #02h
0A6D F9 00 1352 sta0 .AfterPari
0A6F 02 0C 1C 1353 br .EndCheckPari
0A72 1354 .CheckNum:
0A72 A7 10 1355 cmpe #10h
0A74 04 0A 7E 1356 brc .CKAdd
0A77 F3 02 1357 lda #02h
0A79 F9 00 1358 sta0 .AfterPari
0A7B 02 0C 1C 1359 br .EndCheckPari
0A7E 1360 .CKAdd:
0A7E A7 A4 1361 cmpe #.ADD
0A80 07 0A 8A 1362 brnz .CKDec
0A83 F3 03 1363 lda #03h
0A85 F9 00 1364 sta0 .AfterPari
0A87 02 0C 1C 1365 br .EndCheckPari
0A8A 1366 .CKDec:
0A8A F5 01 1367 lda0 .DataBuf+1
0A8C A7 A5 1368 cmpe #.DEC
0A8E 07 0A 98 1369 brnz .CKMul
0A91 F3 03 1370 lda #03h
0A93 F9 00 1371 sta0 .AfterPari
0A95 02 0C 1C 1372 br .EndCheckPari
0A98 1373 .CKMul:
0A98 F5 01 1374 lda0 .DataBuf+1
0A9A A7 A6 1375 cmpe #.MUL
0A9C 07 0A A6 1376 brnz .CKDiv
0A9F F3 04 1377 lda #04h
0AA1 F9 00 1378 sta0 .AfterPari
0AA3 02 0C 1C 1379 br .EndCheckPari
0AA6 1380 .CKDiv:
0AA6 F5 01 1381 lda0 .DataBuf+1
0AA8 A7 A7 1382 cmpe #.DIV
0AAA 07 0A B4 1383 brnz .SPadd
0AAD F3 04 1384 lda #04h
0AAF F9 00 1385 sta0 .AfterPari
0AB1 02 0C 1C 1386 br .EndCheckPari
0AB4 1387 .SPadd:
0AB4 F5 01 1388 lda0 .DataBuf+1
0AB6 A7 DF 1389 cmpe #0dfh
0AB8 07 0A C2 1390 brnz .CKLC
0ABB F3 07 1391 lda #07h ;06
0ABD F9 00 1392 sta0 .AfterPari
0ABF 02 0C 1C 1393 br .EndCheckPari
0AC2 1394 .CKLC:
0AC2 F5 01 1395 lda0 .DataBuf+1
0AC4 A7 B2 1396 cmpe #.LC
0AC6 07 0A D0 1397 brnz .CKRC
0AC9 F3 00 1398 lda #0h
0ACB F9 00 1399 sta0 .AfterPari
0ACD 02 0C 1C 1400 br .EndCheckPari
0AD0 1401 .CKRC:
0AD0 F5 01 1402 lda0 .DataBuf+1
0AD2 A7 B3 1403 cmpe #.RC
0AD4 07 0A DE 1404 brnz .CKFun5
0AD7 F3 00 1405 lda #0h
0AD9 F9 00 1406 sta0 .AfterPari
0ADB 02 0C 1C 1407 br .EndCheckPari
0ADE 1408 .CKFun5:
0ADE F5 01 1409 lda0 .DataBuf+1
0AE0 A7 D5 1410 cmpe #.NPR
0AE2 07 0A EC 1411 brnz .CKFun6
0AE5 F3 05 1412 lda #05h ;9h
0AE7 F9 00 1413 sta0 .AfterPari
0AE9 02 0C 1C 1414 br .EndCheckPari
0AEC 1415 .CKFun6:
0AEC F5 01 1416 lda0 .DataBuf+1
0AEE A7 C9 1417 cmpe #.NCR
0AF0 07 0A FA 1418 brnz .CKFun1
0AF3 F3 05 1419 lda #05h ;9h
0AF5 F9 00 1420 sta0 .AfterPari
0AF7 02 0C 1C 1421 br .EndCheckPari
0AFA 1422 .CKFun1:
0AFA F5 01 1423 lda0 .DataBuf+1
0AFC A7 D3 1424 cmpe #.XY
0AFE 07 0B 08 1425 brnz .CKFun2
0B01 F3 09 1426 lda #09h
0B03 F9 00 1427 sta0 .AfterPari
0B05 02 0C 1C 1428 br .EndCheckPari
0B08 1429 .CKFun2:
0B08 F5 01 1430 lda0 .DataBuf+1
0B0A A7 D7 1431 cmpe #.SQUX
0B0C 07 0B 16 1432 brnz .CKFun3
0B0F F3 09 1433 lda #09h
0B11 F9 00 1434 sta0 .AfterPari
0B13 02 0C 1C 1435 br .EndCheckPari
0B16 1436 .CKFun3:
0B16 F5 01 1437 lda0 .DataBuf+1
0B18 A7 D0 1438 cmpe #.POL
0B1A 07 0B 24 1439 brnz .CKFun4
0B1D F3 0C 1440 lda #0ch
0B1F F9 00 1441 sta0 .AfterPari
0B21 02 0C 1C 1442 br .EndCheckPari
0B24 1443 .CKFun4:
0B24 F5 01 1444 lda0 .DataBuf+1
0B26 A7 D6 1445 cmpe #.REC
0B28 07 0B 32 1446 brnz .CKFun7
0B2B F3 0C 1447 lda #0ch
0B2D F9 00 1448 sta0 .AfterPari
0B2F 02 0C 1C 1449 br .EndCheckPari
0B32 1450 .CKFun7:
0B32 F5 01 1451 lda0 .DataBuf+1
0B34 A7 B1 1452 cmpe #.REG
0B36 07 0B 40 1453 brnz .LCmul
0B39 F3 00 1454 lda #0h
0B3B F9 00 1455 sta0 .AfterPari
0B3D 02 0C 1C 1456 br .EndCheckPari
0B40 1457 .LCmul:
0B40 F5 01 1458 lda0 .DataBuf+1
0B42 A7 EC 1459 cmpe #0ech
0B44 07 0B 4E 1460 brnz .MemMul
0B47 F3 05 1461 lda #05h
0B49 F9 00 1462 sta0 .AfterPari
0B4B 02 0C 1C 1463 br .EndCheckPari
+ 1464
+ 1465
0B4E 1466 .MemMul:
0B4E F5 01 1467 lda0 .DataBuf+1
0B50 A7 CD 1468 cmpe #0cdh ;mem *
0B52 07 0B 5C 1469 brnz .MemDiv
0B55 F3 07 1470 lda #07h ;06h
0B57 F9 00 1471 sta0 .AfterPari
0B59 02 0C 1C 1472 br .EndCheckPari
0B5C 1473 .MemDiv:
0B5C F5 01 1474 lda0 .DataBuf+1
0B5E A7 DE 1475 cmpe #0deh ;mem /
0B60 07 0B 6A 1476 brnz .DmsAdd
0B63 F3 08 1477 lda #08h ;7
0B65 F9 00 1478 sta0 .AfterPari
0B67 02 0C 1C 1479 br .EndCheckPari
+ 1480
0B6A 1481 .DmsAdd:
0B6A F5 01 1482 lda0 .DataBuf+1
0B6C A7 AE 1483 cmpe #0aeh ;dms +
0B6E 07 0B 78 1484 brnz .D_M_S
0B71 F3 09 1485 lda #09h ;06h
0B73 F9 00 1486 sta0 .AfterPari
0B75 02 0C 1C 1487 br .EndCheckPari
0B78 1488 .D_M_S:
0B78 F5 01 1489 lda0 .DataBuf+1
0B7A A7 B7 1490 cmpe #.DMS
0B7C 07 0B 86 1491 brnz .Degrees ;dms degree
0B7F F3 0A 1492 lda #0ah
0B81 F9 00 1493 sta0 .AfterPari
0B83 02 0C 1C 1494 br .EndCheckPari
0B86 1495 .Degrees:
0B86 F5 01 1496 lda0 .DataBuf+1
0B88 A7 AA 1497 cmpe #0aah
0B8A 07 0B 94 1498 brnz .Degrees1
0B8D F3 0A 1499 lda #0ah
0B8F F9 00 1500 sta0 .AfterPari
0B91 02 0C 1C 1501 br .EndCheckPari
0B94 1502 .Degrees1:
0B94 F5 01 1503 lda0 .DataBuf+1
0B96 A7 AB 1504 cmpe #.Degree
0B98 07 0B A2 1505 brnz .Mins
0B9B F3 0A 1506 lda #0ah
0B9D F9 00 1507 sta0 .AfterPari
0B9F 02 0C 1C 1508 br .EndCheckPari
0BA2 1509 .Mins:
0BA2 F5 01 1510 lda0 .DataBuf+1
0BA4 A7 AC 1511 cmpe #.Minute
0BA6 07 0B B0 1512 brnz .Secs
0BA9 F3 0A 1513 lda #0ah
0BAB F9 00 1514 sta0 .AfterPari
0BAD 02 0C 1C 1515 br .EndCheckPari
0BB0 1516 .Secs:
0BB0 F5 01 1517 lda0 .DataBuf+1
0BB2 A7 AD 1518 cmpe #.Second
0BB4 07 0B BE 1519 brnz .EXP
0BB7 F3 0A 1520 lda #0ah
0BB9 F9 00 1521 sta0 .AfterPari
0BBB 02 0C 1C 1522 br .EndCheckPari
0BBE 1523 .EXP:
0BBE F5 01 1524 lda0 .DataBuf+1
0BC0 A7 A1 1525 cmpe #0a1h
0BC2 07 0B CC 1526 brnz .CommaP
0BC5 F3 0B 1527 lda #0bh
0BC7 F9 00 1528 sta0 .AfterPari
0BC9 02 0C 1C 1529 br .EndCheckPari
0BCC 1530 .CommaP:
0BCC F5 01 1531 lda0 .DataBuf+1
0BCE A7 B4 1532 cmpe #0b4h
0BD0 07 0B DA 1533 brnz .Sime
0BD3 F3 02 1534 lda #02h
0BD5 F9 00 1535 sta0 .AfterPari
0BD7 02 0C 1C 1536 br .EndCheckPari
0BDA 1537 .Sime:
0BDA F5 01 1538 lda0 .DataBuf+1
0BDC A7 B0 1539 cmpe #0b0h
0BDE 07 0B E8 1540 brnz .CKBaseN
0BE1 F3 02 1541 lda #02h
0BE3 F9 00 1542 sta0 .AfterPari
0BE5 02 0C 1C 1543 br .EndCheckPari
+ 1544
+ 1545
0BE8 1546 .CKBaseN:
0BE8 F5 01 1547 lda0 .DataBuf+1
0BEA A7 20 1548 cmpe #20h ;and
0BEC 06 0C 0B 1549 brz .Paris9
0BEF A7 21 1550 cmpe #21h ;or
0BF1 06 0C 0B 1551 brz .Paris9
0BF4 A7 22 1552 cmpe #22h ;xnor
0BF6 06 0C 0B 1553 brz .Paris9
0BF9 A7 23 1554 cmpe #23h ;xor
0BFB 06 0C 0B 1555 brz .Paris9
0BFE A7 24 1556 cmpe #24h ;not
0C00 06 0C 12 1557 brz .Paris5
0C03 A7 25 1558 cmpe #25h ;neg
0C05 06 0C 12 1559 brz .Paris5
0C08 02 0C 19 1560 br .CKFunc
0C0B 1561 .Paris9:
0C0B F3 09 1562 lda #09h
0C0D F9 00 1563 sta0 .AfterPari
0C0F 02 0C 1C 1564 br .EndCheckPari
0C12 1565 .Paris5:
0C12 F3 06 1566 lda #06h ;05h
0C14 F9 00 1567 sta0 .AfterPari
0C16 02 0C 1C 1568 br .EndCheckPari
0C19 1569 .CKFunc:
+ 1570
0C19 20 0E C2 1571 call .CheckFuncd
+ 1572
0C1C 1573 .EndCheckPari:
0C1C 24 1574 ret
+ 1575 ;-------------------------------------------
0C1D 1576 .PushStackCls:
+ 1577
0C1D 20 0F BF 1578 call .ClosEndPS
0C20 1579 .PushStack:
0C20 F5 00 1580 lda0 .DataBuf
0C22 F9 00 1581 sta0 .Buf1
0C24 20 0C 2A 1582 call .PushData
+ 1583
0C27 02 00 0A 1584 br .IN2PS
+ 1585
+ 1586 ;-------------------------------------------
0C2A 1587 .PushData::
0C2A F5 00 1588 lda0 .DataBuf
0C2C F9 00 1589 sta0 Temp2
0C2E F3 03 1590 lda #.STPP
0C30 FC 28 1591 sta PP
0C32 F5 00 1592 lda0 .STDP
0C34 FC 21 1593 sta DP
0C36 A7 FF 1594 cmpe #0ffh
0C38 06 0C 68 1595 brz .Push2Stack
0C3B F2 1596 lda i
0C3C F9 00 1597 sta0 .DataBuf
0C3E F9 01 1598 sta0 .DataBuf+1
0C40 A7 00 1599 cmpe #0h
0C42 06 0C 68 1600 brz .Push2Stack
0C45 A7 B2 1601 cmpe #.LC
0C47 06 0C 68 1602 brz .Push2Stack
0C4A 20 0A 64 1603 call .CheckPari
0C4D F5 00 1604 lda0 .AfterPari
0C4F F9 00 1605 sta0 .BeforePari ;-12/16
0C51 F5 00 1606 lda0 Temp2
0C53 F9 00 1607 sta0 .DataBuf
0C55 F9 01 1608 sta0 .DataBuf+1
0C57 20 0A 64 1609 call .CheckPari
0C5A F3 00 1610 lda #0h
0C5C FC 28 1611 sta PP
0C5E F5 00 1612 lda0 .AfterPari
0C60 A9 00 1613 suba .BeforePari
0C62 05 0C 81 1614 brnc .PopDataEQU
0C65 06 0C 81 1615 brz .PopDataEQU
0C68 1616 .Push2Stack:
0C68 F5 00 1617 lda0 Temp2
0C6
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -