diff --git a/software/asm/1Z-013A-KM.asm b/software/asm/1z-013a-km.asm similarity index 100% rename from software/asm/1Z-013A-KM.asm rename to software/asm/1z-013a-km.asm diff --git a/software/asm/1Z-013A.asm b/software/asm/1z-013a.asm similarity index 100% rename from software/asm/1Z-013A.asm rename to software/asm/1z-013a.asm diff --git a/software/asm/5Z009-1B.asm b/software/asm/5z009-1b.asm similarity index 100% rename from software/asm/5Z009-1B.asm rename to software/asm/5z009-1b.asm diff --git a/software/asm/basic_sp-5025.asm b/software/asm/basic_sp-5025.asm new file mode 100644 index 0000000..f9c08ea --- /dev/null +++ b/software/asm/basic_sp-5025.asm @@ -0,0 +1,5908 @@ +;---------------------------------------------------- +; Project: BASIC_SP-5025.MZF +; Main File: BASIC_SP-5025.MZF.ASM +; Date: 09/05/2021 10:03:22 +; +; Created with SUC vbDISX. +; +;---------------------------------------------------- +; With repeat autotrace from execute address +; With added unused space analysis +; includes find word tables (selected the 2 highest blocks) +; includes find all words with preceding JPs or CALL opcode value +; +; Followed by more unused space analysis for text +; includes keyword table search +; includes text search + +; Followed by more unused space analysis for text +; Finally more unused space analysis for unused block start address link search + + + ORG 01200H + + XOR A ;1200 AF + LD (L3D26),A ;1201 32263D + LD (0FFFFH),A ;1204 32FFFF + LD HL,043FFH ;1207 21FF43 + LD D,208 ;120A 16D0 +L120C: INC HL ;120C 23 + LD A,H ;120D 7C + CP D ;120E BA + JR Z,L121B ;120F 280A + LD A,255 ;1211 3EFF + LD (HL),A ;1213 77 + SUB (HL) ;1214 96 + JR NZ,L121B ;1215 2004 + LD (HL),A ;1217 77 + CP (HL) ;1218 BE + JR Z,L120C ;1219 28F1 +L121B: LD (04561H),HL ;121B 226145 + LD (04563H),HL ;121E 226345 + LD SP,HL ;1221 F9 + CALL CRLF2 ;1222 CD0600 + LD DE,L12E2 ;1225 11E212 + CALL MESSAGE ;1228 CD1500 + CALL L1832 ;122B CD3218 + LD BC,L000A ;122E 010A00 + CALL L173F ;1231 CD3F17 + LD DE,L4400 ;1234 110044 + PUSH DE ;1237 D5 + CALL L16F7 ;1238 CDF716 + POP DE ;123B D1 + CALL L1357 ;123C CD5713 + LD DE,L1326 ;123F 112613 + CALL MESSAGE ;1242 CD1500 + XOR A ;1245 AF + LD D,A ;1246 57 + LD E,A ;1247 5F + CALL SETCLOCK ;1248 CD3300 +L124B: LD DE,L12FE ;124B 11FE12 + CALL MUSIC ;124E CD3000 + LD DE,L12F9 ;1251 11F912 + CALL L1357 ;1254 CD5713 +L1257: LD A,(L4565) ;1257 3A6545 + OR A ;125A B7 + JP Z,L1274 ;125B CA7412 + LD HL,(L47FF) ;125E 2AFF47 + LD A,H ;1261 7C + OR L ;1262 B5 + JP Z,L1278 ;1263 CA7812 + LD BC,CRLF2 ;1266 010600 + LD DE,L4566 ;1269 116645 + LD HL,L47FD ;126C 21FD47 + CALL L1799 ;126F CD9917 + JR L1278 ;1272 1804 + +L1274: LD HL,(04563H) ;1274 2A6345 + LD SP,HL ;1277 F9 +L1278: CALL L184E ;1278 CD4E18 + CALL CRLF ;127B CD0900 + LD DE,L4400 ;127E 110044 + CALL USER ;1281 CD0300 + CALL L13CE ;1284 CDCE13 + CALL L1443 ;1287 CD4314 + LD HL,(L4457) ;128A 2A5744 + LD A,L ;128D 7D + OR H ;128E B4 + JR NZ,L12A0 ;128F 200F + LD HL,L4459 ;1291 215944 + LD (L4801),HL ;1294 220148 + CALL L168B ;1297 CD8B16 + DEC C ;129A 0D + POP HL ;129B E1 + ADD HL,DE ;129C 19 + JP L1278 ;129D C37812 + +L12A0: CALL L1987 ;12A0 CD8719 + CALL L13C1 ;12A3 CDC113 + CALL L17A5 ;12A6 CDA517 + CP (HL) ;12A9 BE + LD (DE),A ;12AA 12 + JR NZ,L12BE ;12AB 2011 + CALL L17E8 ;12AD CDE817 + EX DE,HL ;12B0 EB + CALL L1766 ;12B1 CD6617 + CALL L1651 ;12B4 CD5116 + CALL L189C ;12B7 CD9C18 + EX DE,HL ;12BA EB + CALL L17E0 ;12BB CDE017 +L12BE: LD A,(L4459) ;12BE 3A5944 + CP 13 ;12C1 FE0D + JP Z,L1257 ;12C3 CA5712 + CALL L17A8 ;12C6 CDA817 + RL D ;12C9 CB12 + LD (L4455),HL ;12CB 225544 + EX DE,HL ;12CE EB + LD HL,L4455 ;12CF 215544 + CALL L17E8 ;12D2 CDE817 + CALL L1796 ;12D5 CD9617 + CALL L189C ;12D8 CD9C18 + EX DE,HL ;12DB EB + CALL L17E0 ;12DC CDE017 + JP L1257 ;12DF C35712 + +L12E2: DB " * SHARP BAS" ;12E2 202A20534841525020424153 + DB "IC SP-5025" ;12EE 49432053502D35303235 + DB 0DH ;12F8 0D +L12F9: DB "READY" ;12F9 5245414459 +L12FE: DB 0DH ;12FE 0D +L12FF: DB " ERR" ;12FF 20455252 + DB 4FH,52H,0DH ;1303 4F520D +L1306: DB " IN" ;1306 20494E + DB 0DH ;1309 0D +L130A: DB "SYNTAX" ;130A 53594E544158 + DB 0DH ;1310 0D +L1311: DB "MEMORY" ;1311 4D454D4F5259 + DB 0DH ;1317 0D +L1318: DB "DATA" ;1318 44415441 + DB 0DH ;131C 0D +L131D: DB "MISMATCH" ;131D 4D49534D41544348 + DB 0DH ;1325 0D +L1326: DB " BYTES" ;1326 204259544553 + DB 0DH ;132C 0D +L132D: DB "BREAK" ;132D 425245414B + DB 0DH ;1332 0D +L1333: DB "16FOR" ;1333 3136464F52 + DB 0DH ;1338 0D +L1339: DB "16GOSUB" ;1339 3136474F535542 + DB 0DH ;1340 0D +L1341: DB "6FN" ;1341 36464E + DB 0DH ;1344 0D +L1345: DB "CONT" ;1345 434F4E54 + DB 0DH ;1349 0D +L134A: DB "FILE" ;134A 46494C45 + DB 0DH ;134E 0D +L134F: DB "OVERLAY" ;134F 4F5645524C4159 + DB 0DH ;1356 0D +L1357: CALL CRLF ;1357 CD0900 + JP MESSAGE ;135A C31500 + +L135D: CALL L187C ;135D CD7C18 + CALL L1357 ;1360 CD5713 + LD DE,L12FF ;1363 11FF12 +L1366: CALL MESSAGE ;1366 CD1500 + LD HL,(L47FF) ;1369 2AFF47 + LD A,L ;136C 7D + OR H ;136D B4 + JP Z,L124B ;136E CA4B12 + LD DE,L4400 ;1371 110044 + PUSH DE ;1374 D5 + CALL L16F7 ;1375 CDF716 + LD DE,L1306 ;1378 110613 + CALL MESSAGE ;137B CD1500 + POP DE ;137E D1 + CALL MESSAGE ;137F CD1500 + JP L124B ;1382 C34B12 + +L1385: CALL CRLF ;1385 CD0900 + LD DE,L132D ;1388 112D13 + JP L1366 ;138B C36613 + +L138E: LD DE,L130A ;138E 110A13 + JR L1396 ;1391 1803 + +L1393: LD DE,L1311 ;1393 111113 +L1396: JR L139B ;1396 1803 + +L1398: LD DE,L1318 ;1398 111813 +L139B: JR L13A0 ;139B 1803 + +L139D: LD DE,L131D ;139D 111D13 +L13A0: JR L13A5 ;13A0 1803 + +L13A2: LD DE,L1333 ;13A2 113313 +L13A5: JR L13AA ;13A5 1803 + +L13A7: LD DE,L1339 ;13A7 113913 +L13AA: JR L13AF ;13AA 1803 + +L13AC: LD DE,L1341 ;13AC 114113 +L13AF: JR L13B4 ;13AF 1803 + +L13B1: LD DE,L134A ;13B1 114A13 +L13B4: JR L13B9 ;13B4 1803 + +L13B6: LD DE,L134F ;13B6 114F13 +L13B9: JR L13BE ;13B9 1803 + +L13BB: LD DE,L1345 ;13BB 114513 +L13BE: JP L135D ;13BE C35D13 + +L13C1: XOR A ;13C1 AF + JR L13C6 ;13C2 1802 + +L13C4: LD A,1 ;13C4 3E01 +L13C6: JR L13CA ;13C6 1802 + +L13C8: LD A,2 ;13C8 3E02 +L13CA: LD (L4565),A ;13CA 326545 + RET ;13CD C9 + +L13CE: LD HL,L4400 ;13CE 210044 + CALL L16F1 ;13D1 CDF116 + EX DE,HL ;13D4 EB + LD (L4457),HL ;13D5 225744 + LD HL,L4459 ;13D8 215944 + LD C,0 ;13DB 0E00 + EX DE,HL ;13DD EB + CALL L162D ;13DE CD2D16 +L13E1: CALL L1491 ;13E1 CD9114 + RET Z ;13E4 C8 + DEC DE ;13E5 1B + CP 63 ;13E6 FE3F + JR NZ,L13F0 ;13E8 2006 + LD A,133 ;13EA 3E85 + LD (DE),A ;13EC 12 + INC DE ;13ED 13 + JR L13E1 ;13EE 18F1 + +L13F0: DEC HL ;13F0 2B + EX DE,HL ;13F1 EB + PUSH HL ;13F2 E5 + LD HL,L14D8 ;13F3 21D814 + LD B,128 ;13F6 0680 +L13F8: PUSH DE ;13F8 D5 +L13F9: CALL L162D ;13F9 CD2D16 + EX DE,HL ;13FC EB + CALL L162D ;13FD CD2D16 + EX DE,HL ;1400 EB + CP (HL) ;1401 BE + INC HL ;1402 23 + INC DE ;1403 13 + JR Z,L13F9 ;1404 28F3 + DEC HL ;1406 2B + CP 255 ;1407 FEFF + JP Z,L1415 ;1409 CA1514 + ADD A,128 ;140C C680 + JP C,L138E ;140E DA8E13 + CP (HL) ;1411 BE + JP Z,L1427 ;1412 CA2714 +L1415: INC B ;1415 04 + LD A,220 ;1416 3EDC + CP B ;1418 B8 + JP Z,L143B ;1419 CA3B14 + LD A,127 ;141C 3E7F +L141E: CP (HL) ;141E BE + INC HL ;141F 23 + JP NC,L141E ;1420 D21E14 + POP DE ;1423 D1 + JP L13F8 ;1424 C3F813 + +L1427: POP AF ;1427 F1 + POP HL ;1428 E1 + LD (HL),B ;1429 70 + INC HL ;142A 23 + EX DE,HL ;142B EB + LD A,B ;142C 78 + CP 130 ;142D FE82 + JP NC,L13E1 ;142F D2E113 + CALL L14C5 ;1432 CDC514 + CP 58 ;1435 FE3A + JP Z,L13E1 ;1437 CAE113 + RET ;143A C9 + +L143B: POP DE ;143B D1 + POP HL ;143C E1 + INC DE ;143D 13 + INC HL ;143E 23 + EX DE,HL ;143F EB + JP L13E1 ;1440 C3E113 + +L1443: LD HL,(L4457) ;1443 2A5744 + LD DE,L4400 ;1446 110044 + LD C,178 ;1449 0EB2 + CALL L16F9 ;144B CDF916 + LD A,32 ;144E 3E20 + LD (DE),A ;1450 12 + INC DE ;1451 13 + LD HL,L4459 ;1452 215944 +L1455: CALL L1491 ;1455 CD9114 + RET Z ;1458 C8 + SUB 128 ;1459 D680 + JP M,L1455 ;145B FA5514 + DEC C ;145E 0D + PUSH AF ;145F F5 + DEC DE ;1460 1B + PUSH HL ;1461 E5 + LD HL,L14D8 ;1462 21D814 +L1465: OR A ;1465 B7 + JP Z,L1475 ;1466 CA7514 + PUSH AF ;1469 F5 + LD A,127 ;146A 3E7F +L146C: CP (HL) ;146C BE + INC HL ;146D 23 + JR NC,L146C ;146E 30FC + POP AF ;1470 F1 + DEC A ;1471 3D + JP L1465 ;1472 C36514 + +L1475: CALL L14BA ;1475 CDBA14 + OR A ;1478 B7 + JP P,L1475 ;1479 F27514 + DEC DE ;147C 1B + AND 127 ;147D E67F + LD (DE),A ;147F 12 + INC DE ;1480 13 + POP HL ;1481 E1 + POP AF ;1482 F1 + CP 2 ;1483 FE02 + JP NC,L1455 ;1485 D25514 + CALL L14C5 ;1488 CDC514 + CP 58 ;148B FE3A + JP Z,L1455 ;148D CA5514 + RET ;1490 C9 + +L1491: CALL L14BA ;1491 CDBA14 + RET Z ;1494 C8 + CALL L14A5 ;1495 CDA514 + JR Z,L1491 ;1498 28F7 + CP 34 ;149A FE22 + RET NZ ;149C C0 + CALL L14B1 ;149D CDB114 + CP 13 ;14A0 FE0D + JR NZ,L1491 ;14A2 20ED + RET ;14A4 C9 + +L14A5: CP 32 ;14A5 FE20 + RET Z ;14A7 C8 + CP 255 ;14A8 FEFF + RET Z ;14AA C8 + CP 40 ;14AB FE28 + RET Z ;14AD C8 + CP 41 ;14AE FE29 + RET ;14B0 C9 + +L14B1: CALL L14BA ;14B1 CDBA14 + RET Z ;14B4 C8 + CP 34 ;14B5 FE22 + JR NZ,L14B1 ;14B7 20F8 + RET ;14B9 C9 + +L14BA: LD A,(HL) ;14BA 7E + LD (DE),A ;14BB 12 + INC HL ;14BC 23 + INC DE ;14BD 13 + INC C ;14BE 0C + JP Z,L1398 ;14BF CA9813 + CP 13 ;14C2 FE0D + RET ;14C4 C9 + +L14C5: CALL L14BA ;14C5 CDBA14 + RET Z ;14C8 C8 + CP 58 ;14C9 FE3A + RET Z ;14CB C8 + CP 34 ;14CC FE22 + JR NZ,L14C5 ;14CE 20F5 + CALL L14B1 ;14D0 CDB114 + CP 13 ;14D3 FE0D + JR NZ,L14C5 ;14D5 20EE + RET ;14D7 C9 + +L14D8: DB "RE" ;14D8 5245 + DB BRC ;14DA CD + DB "DAT" ;14DB 444154 + DB 0C1H ;14DE C1 + DB "LIS" ;14DF 4C4953 + DB 0D4H ;14E2 D4 + DB "RU" ;14E3 5255 + DB TLC ;14E5 CE + DB "NE" ;14E6 4E45 + DB 0D7H ;14E8 D7 + DB "PRIN" ;14E9 5052494E + DB 0D4H ;14ED D4 + DB "LE" ;14EE 4C45 + DB 0D4H ;14F0 D4 + DB "FO" ;14F1 464F + DB TCT ;14F3 D2 + DB "I" ;14F4 49 + DB 0C6H ;14F5 C6 + DB "GOT" ;14F6 474F54 + DB 0CFH ;14F9 CF + DB "REA" ;14FA 524541 + DB 0C4H ;14FD C4 + DB "GOSU" ;14FE 474F5355 + DB 0C2H ;1502 C2 + DB "RETUR" ;1503 5245545552 + DB TLC ;1508 CE + DB "NEX" ;1509 4E4558 + DB 0D4H ;150C D4 + DB "STO" ;150D 53544F + DB TRC ;1510 D0 + DB "EN" ;1511 454E + DB 0C4H ;1513 C4 + DB "O" ;1514 4F + DB TLC ;1515 CE + DB "LOA" ;1516 4C4F41 + DB 0C4H ;1519 C4 + DB "SAV" ;151A 534156 + DB 0C5H ;151D C5 + DB "VERIF" ;151E 5645524946 + DB 0D9H ;1523 D9 + DB "POK" ;1524 504F4B + DB 0C5H ;1527 C5 + DB "DI" ;1528 4449 + DB BRC ;152A CD + DB "DEF F" ;152B 4445462046 + DB TLC ;1530 CE + DB "INPU" ;1531 494E5055 + DB 0D4H ;1535 D4 + DB "RESTOR" ;1536 524553544F52 + DB 0C5H ;153C C5 + DB "CL" ;153D 434C + DB TCT ;153F D2 + DB "MUSI" ;1540 4D555349 + DB 0C3H ;1544 C3 + DB "TEMP" ;1545 54454D50 + DB 0CFH ;1549 CF + DB "USR" ;154A 555352 + DB 0A8H ;154D A8 + DB "WOPE" ;154E 574F5045 + DB TLC ;1552 CE + DB "ROPE" ;1553 524F5045 + DB TLC ;1557 CE + DB "CLOS" ;1558 434C4F53 + DB 0C5H ;155C C5 + DB "BY" ;155D 4259 + DB 0C5H ;155F C5 + DB "LIMI" ;1560 4C494D49 + DB 0D4H ;1564 D4 + DB "CON" ;1565 434F4E + DB 0D4H ;1568 D4 + DB "SE" ;1569 5345 + DB 0D4H ;156B D4 + DB "RESE" ;156C 52455345 + DB 0D4H ;1570 D4 + DB "GE" ;1571 4745 + DB 0D4H ;1573 D4 + DB "INP" ;1574 494E50 + DB 0A3H ;1577 A3 + DB "OUT" ;1578 4F5554 + DB 0A3H,0FFH,0FFH,0FFH ;157B A3FFFFFF + DB 0FFH,0FFH ;157F FFFF + DB "THE" ;1581 544845 + DB TLC ;1584 CE + DB "T" ;1585 54 + DB 0CFH ;1586 CF + DB "STE" ;1587 535445 + DB TRC ;158A D0 + DB ">" ;158B 3E + DB 0BCH ;158C BC + DB "<" ;158D 3C + DB 0BEH ;158E BE + DB "=" ;158F 3D + DB 0BCH ;1590 BC + DB "<" ;1591 3C + DB 0BDH ;1592 BD + DB "=" ;1593 3D + DB 0BEH ;1594 BE + DB ">" ;1595 3E + DB 0BDH,0BDH,0BEH,0BCH ;1596 BDBDBEBC + DB "AN" ;159A 414E + DB 0C4H ;159C C4 + DB "O" ;159D 4F + DB TCT ;159E D2 + DB "NO" ;159F 4E4F + DB 0D4H,0ABH,0ADH,0AAH ;15A1 D4ABADAA + DB 0AFH ;15A5 AF + DB "LEFT$" ;15A6 4C45465424 + DB 0A8H ;15AB A8 + DB "RIGHT$" ;15AC 524947485424 + DB 0A8H ;15B2 A8 + DB "MID$" ;15B3 4D494424 + DB 0A8H ;15B7 A8 + DB "LEN" ;15B8 4C454E + DB 0A8H ;15BB A8 + DB "CHR$" ;15BC 43485224 + DB 0A8H ;15C0 A8 + DB "STR$" ;15C1 53545224 + DB 0A8H ;15C5 A8 + DB "ASC" ;15C6 415343 + DB 0A8H ;15C9 A8 + DB "VAL" ;15CA 56414C + DB 0A8H ;15CD A8 + DB "PEEK" ;15CE 5045454B + DB 0A8H ;15D2 A8 + DB "TAB" ;15D3 544142 + DB 0A8H ;15D6 A8 + DB "SPC" ;15D7 535043 + DB 0A8H ;15DA A8 + DB "SIZ" ;15DB 53495A + DB 0C5H,0FFH,0FFH,0FFH ;15DE C5FFFFFF + DB 0DEH ;15E2 DE + DB "RND" ;15E3 524E44 + DB 0A8H ;15E6 A8 + DB "SIN" ;15E7 53494E + DB 0A8H ;15EA A8 + DB "COS" ;15EB 434F53 + DB 0A8H ;15EE A8 + DB "TAN" ;15EF 54414E + DB 0A8H ;15F2 A8 + DB "ATN" ;15F3 41544E + DB 0A8H ;15F6 A8 + DB "EXP" ;15F7 455850 + DB 0A8H ;15FA A8 + DB "INT" ;15FB 494E54 + DB 0A8H ;15FE A8 + DB "LOG" ;15FF 4C4F47 + DB 0A8H ;1602 A8 + DB "LN" ;1603 4C4E + DB 0A8H ;1605 A8 + DB "ABS" ;1606 414253 + DB 0A8H ;1609 A8 + DB "SGN" ;160A 53474E + DB 0A8H ;160D A8 + DB "SQR" ;160E 535152 + DB 0A8H,0FFH,0FFH ;1611 A8FFFF +L1614: DB 0C1H,00H,00H,00H ;1614 C1000000 + DB 80H ;1618 80 +L1619: DB 80H,00H,00H,00H ;1619 80000000 + DB 00H ;161D 00 +L161E: DB "A" ;161E 41 + DB 00H,00H,00H,80H ;161F 00000080 +L1623: DB 0C2H,0A1H,0DAH,0FH ;1623 C2A1DA0F + DB 0C9H ;1627 C9 + DB "*" ;1628 2A + DB 01H ;1629 01 + DB "H+" ;162A 482B +L162C: DB "#" ;162C 23 +L162D: DB "~" ;162D 7E + DB 0FEH ;162E FE + DB " " ;162F 20 + DB 0C0H,18H,0F9H ;1630 C018F9 +L1633: DB 0F5H ;1633 F5 + DB ">" ;1634 3E + DB 0DH ;1635 0D +L1636: DB 0BEH ;1636 BE + DB "# " ;1637 2320 + DB 0FCH,0F1H,0C9H ;1639 FCF1C9 +L163C: DB "#" ;163C 23 +L163D: DB BRC ;163D CD + DB ")" ;163E 29 + DB 18H,0C8H,0FEH,22H ;163F 18C8FE22 + DB " " ;1643 20 + DB 0F7H ;1644 F7 +L1645: DB BRC ;1645 CD + DB "," ;1646 2C + DB 16H,0FEH ;1647 16FE + DB 0DH ;1649 0D + DB 0C8H,0FEH,22H ;164A C8FE22 + DB " " ;164D 20 + DB 0F6H,18H,0EBH ;164E F618EB +L1651: DB "y/Ox/G" ;1651 792F4F782F47 + DB 03H,0C9H ;1657 03C9 +L1659: DB BRC ;1659 CD + DB "-" ;165A 2D + DB CSN,0D6H ;165B 16D6 + DB "0" ;165D 30 + DB 0FEH,0AH ;165E FE0A + DB "~" ;1660 7E + DB 0C9H ;1661 C9 +L1662: DB "|" ;1662 7C + DB 92H,0C0H ;1663 92C0 + DB "}" ;1665 7D + DB 93H,0C9H ;1666 93C9 +L1668: DB "{" ;1668 7B + DB 95H ;1669 95 + DB "oz" ;166A 6F7A + DB 9CH ;166C 9C + DB "g" ;166D 67 + DB 0C9H ;166E C9 +L166F: DB 0E1H ;166F E1 +L1670: DB 0E3H ;1670 E3 +L1671: DB 0F5H ;1671 F5 + DB "~#fo" ;1672 7E23666F + DB 0F1H,0E3H,0C9H ;1676 F1E3C9 +L1679: DB 0E1H ;1679 E1 +L167A: DB 0E3H ;167A E3 + DB "##" ;167B 2323 + DB 0E3H,0C9H ;167D E3C9 +L167F: DB "*DF#####" ;167F 2A44462323232323 + DB 0C9H ;1687 C9 +L1688: DB "*" ;1688 2A + DB 01H ;1689 01 + DB "H" ;168A 48 +L168B: DB BRC ;168B CD + DB "-" ;168C 2D + DB CSN,0E3H,0BEH ;168D 16E3BE + DB "#" ;1690 23 + DB 0C2H ;1691 C2 + DB "q" ;1692 71 + DB CSN ;1693 16 + DB "#" ;1694 23 + DB 18H,0BH ;1695 180B +L1697: DB "*" ;1697 2A + DB 01H ;1698 01 + DB "H" ;1699 48 +L169A: DB BRC ;169A CD + DB "-" ;169B 2D + DB CSN,0E3H,0BEH,0C2H ;169C 16E3BEC2 + DB 8EH,CMR ;16A0 8E13 +L16A2: DB "#" ;16A2 23 + DB 0E3H,0C3H ;16A3 E3C3 + DB "," ;16A5 2C + DB CSN ;16A6 16 +L16A7: DB 0AFH,0BCH ;16A7 AFBC + DB "(" ;16A9 28 + DB 05H,0EBH,0BCH,0C2H ;16AA 05EBBCC2 + DB "p" ;16AE 70 + DB CSN ;16AF 16 +L16B0: DB "}l" ;16B0 7D6C +L16B2: DB 0B7H ;16B2 B7 + DB " " ;16B3 20 + DB 04H,0EBH,0C3H ;16B4 04EBC3 + DB "z" ;16B7 7A + DB CSN ;16B8 16 +L16B9: DB LCT ;16B9 CB + DB "?0" ;16BA 3F30 + DB 04H,19H,0DAH ;16BC 0419DA + DB "p" ;16BF 70 + DB CSN ;16C0 16 +L16C1: DB LCT ;16C1 CB + DB "#" ;16C2 23 + DB LCT,CMU,0C3H,0B2H ;16C3 CB12C3B2 + DB CSN ;16C7 16 +L16C8: DB BRC,0A7H,CSN,98H ;16C8 CDA71698 + DB CMR,0C9H ;16CC 13C9 +L16CE: DB CMD,00H,00H ;16CE 110000 +L16D1: DB BRC ;16D1 CD + DB "Y" ;16D2 59 + DB CSN,TCT ;16D3 16D2 + DB "z" ;16D5 7A + DB CSN,0E5H ;16D6 16E5 + DB "!" ;16D8 21 + DB 0AH,00H,BRC,0A7H ;16D9 0A00CDA7 + DB CSN ;16DD 16 + DB "o" ;16DE 6F + DB CSN,0E1H ;16DF 16E1 + DB "~" ;16E1 7E + DB 0E6H,0FH,83H ;16E2 E60F83 + DB "_z" ;16E5 5F7A + DB TLC,00H ;16E7 CE00 + DB "W" ;16E9 57 + DB 0DAH ;16EA DA + DB "p" ;16EB 70 + DB CSN ;16EC 16 + DB "#" ;16ED 23 + DB 0C3H,BCT,CSN ;16EE C3D116 +L16F1: DB BRC,TLC,CSN,8EH ;16F1 CDCE168E + DB CMR,0C9H ;16F5 13C9 +L16F7: DB 0EH,00H ;16F7 0E00 +L16F9: DB "> " ;16F9 3E20 + DB CMU,CMR,0D5H,06H ;16FB 1213D506 + DB 00H,CMD,10H ;16FF 001110 + DB "'" ;1702 27 + DB BRC,22H,17H,CMD ;1703 CD221711 + DB 0E8H,03H,BRC,22H ;1707 E803CD22 + DB 17H,CMD ;170B 1711 + DB "d" ;170D 64 + DB 00H,BRC,22H,17H ;170E 00CD2217 + DB CMD,0AH,00H,BRC ;1712 110A00CD + DB 22H,17H ;1716 2217 + DB "}" ;1718 7D + DB BCT,0F6H ;1719 D1F6 + DB "0" ;171B 30 + DB CMU,CMR ;171C 1213 + DB ">" ;171E 3E + DB 0DH ;171F 0D + DB CMU,0C9H ;1720 12C9 +L1722: DB ">" ;1722 3E + DB 0FFH ;1723 FF +L1724: DB "<" ;1724 3C + DB 0B7H,0EDH ;1725 B7ED + DB "R0" ;1727 5230 + DB 0FAH,19H,0B7H ;1729 FA19B7 + DB " " ;172C 20 + DB 03H,0B0H,0C8H,0AFH ;172D 03B0C8AF +L1731: DB 04H,0F6H ;1731 04F6 + DB "0" ;1733 30 + DB BCT,0E3H ;1734 D1E3 + DB "w#" ;1736 7723 + DB 0E3H,0D5H,0CH,0C9H ;1738 E3D50CC9 +L173C: DB 01H,00H,00H ;173C 010000 +L173F: DB "*DF" ;173F 2A4446 +L1742: DB 09H,0DAH,93H,CMR ;1742 09DA9313 + DB 0EBH ;1746 EB + DB "!" ;1747 21 + DB 9CH,0FFH ;1748 9CFF + DB "9" ;174A 39 + DB 0AFH,0EDH ;174B AFED + DB "R" ;174D 52 + DB TRC,0C3H,93H,CMR ;174E D0C39313 +L1752: PUSH HL ;1752 E5 + PUSH DE ;1753 D5 + CALL L173F ;1754 CD3F17 + POP DE ;1757 D1 + POP HL ;1758 E1 + RET ;1759 C9 + +L175A: LD E,(HL) ;175A 5E + INC HL ;175B 23 + LD D,(HL) ;175C 56 + INC HL ;175D 23 + LD A,(HL) ;175E 7E + INC HL ;175F 23 + LD H,(HL) ;1760 66 + LD L,A ;1761 6F + EX DE,HL ;1762 EB + LD A,L ;1763 7D + OR H ;1764 B4 + RET ;1765 C9 + +L1766: PUSH BC ;1766 C5 + PUSH HL ;1767 E5 + PUSH DE ;1768 D5 + EX DE,HL ;1769 EB + ADD HL,BC ;176A 09 + EX DE,HL ;176B EB + CALL L167F ;176C CD7F16 + LD A,L ;176F 7D + SUB E ;1770 93 + LD C,A ;1771 4F + LD A,H ;1772 7C + SBC A,D ;1773 9A + LD B,A ;1774 47 + INC BC ;1775 03 + POP HL ;1776 E1 + PUSH HL ;1777 E5 + EX DE,HL ;1778 EB + JP L179C ;1779 C39C17 + +L177C: CALL L1752 ;177C CD5217 + PUSH BC ;177F C5 + PUSH HL ;1780 E5 + PUSH DE ;1781 D5 + CALL L167F ;1782 CD7F16 + PUSH HL ;1785 E5 + ADD HL,BC ;1786 09 + EX (SP),HL ;1787 E3 + LD A,L ;1788 7D + SUB E ;1789 93 + LD C,A ;178A 4F + LD A,H ;178B 7C + SBC A,D ;178C 9A + LD B,A ;178D 47 + INC BC ;178E 03 + POP DE ;178F D1 + LDDR ;1790 EDB8 +L1792: POP DE ;1792 D1 + POP HL ;1793 E1 + POP BC ;1794 C1 + RET ;1795 C9 + +L1796: CALL L177C ;1796 CD7C17 +L1799: PUSH BC ;1799 C5 + PUSH HL ;179A E5 + PUSH DE ;179B D5 +L179C: LD A,C ;179C 79 + OR B ;179D B0 + JR Z,L17A2 ;179E 2802 + LDIR ;17A0 EDB0 +L17A2: JP L1792 ;17A2 C39217 + +L17A5: LD (L462E),HL ;17A5 222E46 +L17A8: LD HL,L4806 ;17A8 210648 +L17AB: PUSH HL ;17AB E5 + CALL L175A ;17AC CD5A17 + JP Z,L166F ;17AF CA6F16 + PUSH HL ;17B2 E5 + LD HL,(L462E) ;17B3 2A2E46 + CALL L1662 ;17B6 CD6216 + POP HL ;17B9 E1 + JP Z,L1679 ;17BA CA7916 + JP C,L1679 ;17BD DA7916 + POP AF ;17C0 F1 + JP L17AB ;17C1 C3AB17 + +L17C4: PUSH HL ;17C4 E5 + LD E,(HL) ;17C5 5E + INC HL ;17C6 23 + LD D,(HL) ;17C7 56 + LD A,E ;17C8 7B + OR D ;17C9 B2 + JP Z,L166F ;17CA CA6F16 + LD HL,(L4630) ;17CD 2A3046 + CALL L1662 ;17D0 CD6216 + POP HL ;17D3 E1 + INC HL ;17D4 23 + INC HL ;17D5 23 + JP L167A ;17D6 C37A16 + +L17D9: ADD HL,BC ;17D9 09 + EX DE,HL ;17DA EB + POP HL ;17DB E1 + LD (HL),E ;17DC 73 + INC HL ;17DD 23 + LD (HL),D ;17DE 72 + EX DE,HL ;17DF EB +L17E0: PUSH HL ;17E0 E5 + CALL L175A ;17E1 CD5A17 + JR NZ,L17D9 ;17E4 20F3 + POP HL ;17E6 E1 + RET ;17E7 C9 + +L17E8: PUSH HL ;17E8 E5 + LD BC,L0004 ;17E9 010400 + ADD HL,BC ;17EC 09 + CALL L17F6 ;17ED CDF617 + INC BC ;17F0 03 + POP HL ;17F1 E1 + RET ;17F2 C9 + +L17F3: LD BC,COLDSTART ;17F3 010000 +L17F6: PUSH HL ;17F6 E5 + LD A,13 ;17F7 3E0D +L17F9: CP (HL) ;17F9 BE + INC HL ;17FA 23 + INC BC ;17FB 03 + JR NZ,L17F9 ;17FC 20FB + DEC BC ;17FE 0B + POP HL ;17FF E1 + RET ;1800 C9 + +L1801: LD A,E ;1801 7B + EX DE,HL ;1802 EB + LD HL,(L4642) ;1803 2A4246 + INC A ;1806 3C +L1807: DEC A ;1807 3D + CALL NZ,L1633 ;1808 C43316 + JR NZ,L1807 ;180B 20FA + EX DE,HL ;180D EB + RET ;180E C9 + +L180F: LD A,D ;180F 7A + OR A ;1810 B7 + RET NZ ;1811 C0 + JR L1817 ;1812 1803 + +L1814: LD A,D ;1814 7A + OR A ;1815 B7 + RET Z ;1816 C8 +L1817: JP L139D ;1817 C39D13 + +L181A: LD HL,(L4644) ;181A 2A4446 + EX DE,HL ;181D EB +L181E: LD BC,L0005 ;181E 010500 + LDIR ;1821 EDB0 + RET ;1823 C9 + +L1824: LD HL,(L4644) ;1824 2A4446 + JR L181E ;1827 18F5 + +L1829: CALL L162D ;1829 CD2D16 + CP 13 ;182C FE0D + RET Z ;182E C8 + CP 58 ;182F FE3A + RET ;1831 C9 + +L1832: LD HL,COLDSTART ;1832 210000 + LD (L4632),HL ;1835 223246 + LD HL,L4806 ;1838 210648 + CALL L1896 ;183B CD9618 + LD (L4634),HL ;183E 223446 + XOR A ;1841 AF + LD (L29B8),A ;1842 32B829 + CALL L13C1 ;1845 CDC113 + CALL L1857 ;1848 CD5718 + CALL L187C ;184B CD7C18 +L184E: LD HL,L47FD ;184E 21FD47 + CALL L1896 ;1851 CD9618 + JP L1896 ;1854 C39618 + +L1857: LD HL,(L4634) ;1857 2A3446 + LD B,9 ;185A 0609 +L185C: CALL L1896 ;185C CD9618 + DJNZ L185C ;185F 10FB + LD DE,L4636 ;1861 113646 + LD HL,(L4634) ;1864 2A3446 + EX DE,HL ;1867 EB + LD B,7 ;1868 0607 +L186A: INC DE ;186A 13 + INC DE ;186B 13 + LD (HL),E ;186C 73 + INC HL ;186D 23 + LD (HL),D ;186E 72 + INC HL ;186F 23 + DJNZ L186A ;1870 10F8 +L1872: LD HL,(L4642) ;1872 2A4246 + CALL L1896 ;1875 CD9618 + LD (L4644),HL ;1878 224446 + RET ;187B C9 + +L187C: LD HL,L47F0 ;187C 21F047 + LD (L464A),HL ;187F 224A46 + LD HL,L4787 ;1882 218747 + LD (L4648),HL ;1885 224846 + LD HL,L466A ;1888 216A46 + LD (L4646),HL ;188B 224646 + LD HL,L4803 ;188E 210348 + CALL L1896 ;1891 CD9618 + LD (HL),A ;1894 77 + RET ;1895 C9 + +L1896: XOR A ;1896 AF +L1897: LD (HL),A ;1897 77 + INC HL ;1898 23 + LD (HL),A ;1899 77 + INC HL ;189A 23 + RET ;189B C9 + +L189C: PUSH HL ;189C E5 + LD A,E ;189D 7B + EX AF,AF' ;189E 08 + LD A,D ;189F 7A + LD HL,L4644 ;18A0 214446 +L18A3: LD E,(HL) ;18A3 5E + INC HL ;18A4 23 + LD D,(HL) ;18A5 56 + CP D ;18A6 BA + JP C,L18B3 ;18A7 DAB318 + JP NZ,L18BF ;18AA C2BF18 + EX AF,AF' ;18AD 08 + CP E ;18AE BB + JP NC,L18BE ;18AF D2BE18 + EX AF,AF' ;18B2 08 +L18B3: EX DE,HL ;18B3 EB + ADD HL,BC ;18B4 09 + EX DE,HL ;18B5 EB + LD (HL),D ;18B6 72 + DEC HL ;18B7 2B + LD (HL),E ;18B8 73 + DEC HL ;18B9 2B + DEC HL ;18BA 2B + JP L18A3 ;18BB C3A318 + +L18BE: EX AF,AF' ;18BE 08 +L18BF: LD D,A ;18BF 57 + EX AF,AF' ;18C0 08 + LD E,A ;18C1 5F + POP HL ;18C2 E1 + RET ;18C3 C9 + +L18C4: CALL L162D ;18C4 CD2D16 +L18C7: LD BC,COLDSTART ;18C7 010000 + LD DE,L0D2C ;18CA 112C0D + CP 34 ;18CD FE22 + JR NZ,L18D3 ;18CF 2002 + LD E,A ;18D1 5F + INC HL ;18D2 23 +L18D3: PUSH HL ;18D3 E5 +L18D4: LD A,(HL) ;18D4 7E + CP D ;18D5 BA + JR Z,L18E0 ;18D6 2808 + CP E ;18D8 BB + INC HL ;18D9 23 + JR Z,L18E0 ;18DA 2804 + INC BC ;18DC 03 + JR L18D4 ;18DD 18F5 + +L18DF: PUSH HL ;18DF E5 +L18E0: EX (SP),HL ;18E0 E3 + EX DE,HL ;18E1 EB + LD HL,(L4642) ;18E2 2A4246 + XOR A ;18E5 AF +L18E6: PUSH AF ;18E6 F5 + LD A,(HL) ;18E7 7E + OR A ;18E8 B7 + JR Z,L18F2 ;18E9 2807 + CALL L1633 ;18EB CD3316 + POP AF ;18EE F1 + INC A ;18EF 3C + JR L18E6 ;18F0 18F4 + +L18F2: EX DE,HL ;18F2 EB + INC BC ;18F3 03 + CALL L1796 ;18F4 CD9617 + PUSH HL ;18F7 E5 + LD HL,(L4644) ;18F8 2A4446 + ADD HL,BC ;18FB 09 + LD (L4644),HL ;18FC 224446 + POP HL ;18FF E1 + EX DE,HL ;1900 EB + DEC BC ;1901 0B + ADD HL,BC ;1902 09 + LD (HL),13 ;1903 360D + POP AF ;1905 F1 + LD E,A ;1906 5F + LD D,1 ;1907 1601 + POP HL ;1909 E1 + JP L162D ;190A C32D16 + +L190D: CALL L162D ;190D CD2D16 + CP 13 ;1910 FE0D + JP Z,L1670 ;1912 CA7016 + PUSH HL ;1915 E5 + DEC HL ;1916 2B +L1917: INC HL ;1917 23 + CALL L162D ;1918 CD2D16 + CP 43 ;191B FE2B + JR NZ,L1921 ;191D 2002 + LD A,188 ;191F 3EBC +L1921: CP 45 ;1921 FE2D + JR NZ,L1927 ;1923 2002 + LD A,189 ;1925 3EBD +L1927: LD (HL),A ;1927 77 + CALL L193D ;1928 CD3D19 + JR Z,L1917 ;192B 28EA + CP 69 ;192D FE45 + JR Z,L1917 ;192F 28E6 + CP 13 ;1931 FE0D + JP NZ,L166F ;1933 C26F16 + POP HL ;1936 E1 + CALL L22AF ;1937 CDAF22 + JP L167A ;193A C37A16 + +L193D: CALL L1659 ;193D CD5916 + JR NC,L1944 ;1940 3002 + CP (HL) ;1942 BE + RET ;1943 C9 + +L1944: CP 46 ;1944 FE2E + RET Z ;1946 C8 + CP 189 ;1947 FEBD + RET Z ;1949 C8 + CP 188 ;194A FEBC + RET ;194C C9 + +L194D: PUSH HL ;194D E5 + LD HL,(L4644) ;194E 2A4446 + LD DE,COLDSTART ;1951 110000 + LD A,(HL) ;1954 7E + OR A ;1955 B7 + JP P,L1398 ;1956 F29813 + CP 193 ;1959 FEC1 + JP C,L1974 ;195B DA7419 + SUB 209 ;195E D6D1 + JP NC,L1398 ;1960 D29813 +L1963: LD E,3 ;1963 1E03 + ADD HL,DE ;1965 19 + LD E,(HL) ;1966 5E + INC HL ;1967 23 + LD D,(HL) ;1968 56 + JP L1970 ;1969 C37019 + +L196C: SRL D ;196C CB3A + RR E ;196E CB1B +L1970: INC A ;1970 3C + JP NZ,L196C ;1971 C26C19 +L1974: POP HL ;1974 E1 + RET ;1975 C9 + +L1976: LD HL,L456C ;1976 216C45 + JR L197E ;1979 1803 + +L197B: LD HL,L4570 ;197B 217045 +L197E: LD (HL),C ;197E 71 + INC HL ;197F 23 + LD (HL),B ;1980 70 + INC HL ;1981 23 + LD (HL),E ;1982 73 + INC HL ;1983 23 + LD (HL),D ;1984 72 + INC HL ;1985 23 + RET ;1986 C9 + +L1987: XOR A ;1987 AF + LD (L4577),A ;1988 327745 + RET ;198B C9 + +L198C: EXX ;198C D9 + LD BC,L0005 ;198D 010500 + CALL L19A0 ;1990 CDA019 + CALL L22AF ;1993 CDAF22 + CALL L1814 ;1996 CD1418 + CALL L194D ;1999 CD4D19 + EXX ;199C D9 + LD BC,LFFFB ;199D 01FBFF +L19A0: LD HL,(L4644) ;19A0 2A4446 + ADD HL,BC ;19A3 09 + LD (L4644),HL ;19A4 224446 + EXX ;19A7 D9 + RET ;19A8 C9 + +L19A9: CALL L198C ;19A9 CD8C19 + LD A,D ;19AC 7A + OR A ;19AD B7 + RET Z ;19AE C8 + JP L1398 ;19AF C39813 + +L19B2: LD HL,(L4801) ;19B2 2A0148 +L19B5: CALL L162D ;19B5 CD2D16 +L19B8: CP 13 ;19B8 FE0D + JP Z,L19C7 ;19BA CAC719 + CALL L169A ;19BD CD9A16 + LD A,(L0122) ;19C0 3A2201 + LD C,B ;19C3 48 + JP L19E1 ;19C4 C3E119 + +L19C7: LD HL,(L47FD) ;19C7 2AFD47 + XOR A ;19CA AF + OR H ;19CB B4 + JP Z,L124B ;19CC CA4B12 +L19CF: LD DE,L47FD ;19CF 11FD47 + LD BC,L0004 ;19D2 010400 + LDIR ;19D5 EDB0 + LD (L4801),HL ;19D7 220148 + LD A,(L47FE) ;19DA 3AFE47 + OR A ;19DD B7 + JP Z,L1B2D ;19DE CA2D1B +L19E1: LD HL,PORT0 ;19E1 2100E0 + LD (HL),248 ;19E4 36F8 + INC HL ;19E6 23 + LD A,(HL) ;19E7 7E + INC A ;19E8 3C + JP Z,L19F7 ;19E9 CAF719 + CALL BREAK ;19EC CD1E00 + JR NZ,L19F7 ;19EF 2006 + CALL L13C8 ;19F1 CDC813 + JP L1385 ;19F4 C38513 + +L19F7: LD HL,(L4642) ;19F7 2A4246 + XOR A ;19FA AF + LD (HL),A ;19FB 77 + INC HL ;19FC 23 + LD (HL),A ;19FD 77 + INC HL ;19FE 23 + LD (L4644),HL ;19FF 224446 + LD HL,(L4801) ;1A02 2A0148 + LD A,(HL) ;1A05 7E + OR A ;1A06 B7 + JP P,L1B3F ;1A07 F23F1B + CP 170 ;1A0A FEAA + JP NC,L138E ;1A0C D28E13 + LD DE,L1A1F ;1A0F 111F1A +L1A12: INC HL ;1A12 23 + EX DE,HL ;1A13 EB + ADD A,A ;1A14 87 + LD C,A ;1A15 4F + LD B,0 ;1A16 0600 + ADD HL,BC ;1A18 09 + LD C,(HL) ;1A19 4E + INC HL ;1A1A 23 + LD B,(HL) ;1A1B 46 + EX DE,HL ;1A1C EB + PUSH BC ;1A1D C5 + RET ;1A1E C9 + +L1A1F: DW L1B27 ;1A1F 271B + DW L1B27 ;1A21 271B + DW L1A76 ;1A23 761A + DW L1CCB ;1A25 CB1C + DW L1A6F ;1A27 6F1A + DW L1C2F ;1A29 2F1C + DW L1B3F ;1A2B 3F1B + DW L1D5C ;1A2D 5C1D + DW L2182 ;1A2F 8221 + DW L1CDB ;1A31 DB1C + DW L1FAF ;1A33 AF1F + DW L1CF6 ;1A35 F61C + DW L1D2A ;1A37 2A1D + DW L1DF4 ;1A39 F41D + DW L1B36 ;1A3B 361B + DW L1B2D ;1A3D 2D1B + DW L1FF6 ;1A3F F61F + DW L2A36 ;1A41 362A + DW L29BB ;1A43 BB29 + DW L298F ;1A45 8F29 + DW L2166 ;1A47 6621 + DW L2050 ;1A49 5020 + DW L21B0 ;1A4B B021 + DW L1E7C ;1A4D 7C1E + DW L1B24 ;1A4F 241B + DW L2177 ;1A51 7721 + DW L2226 ;1A53 2622 + DW L2246 ;1A55 4622 + DW L28B2 ;1A57 B228 + DW L2BA7 ;1A59 A72B + DW L2BD7 ;1A5B D72B + DW L2C05 ;1A5D 052C + DW L2854 ;1A5F 5428 + DW L28C2 ;1A61 C228 + DW L28FC ;1A63 FC28 + DW L292A ;1A65 2A29 + DW L292E ;1A67 2E29 + DW L2857 ;1A69 5728 + DW L2CD8 ;1A6B D82C + DW L2D2E ;1A6D 2E2D +L1A6F: CALL L1832 ;1A6F CD3218 + JP L124B ;1A72 C34B12 + +L1A75: DB 0FEH ;1A75 FE +L1A76: LD A,(L29B8) ;1A76 3AB829 + OR A ;1A79 B7 + JP NZ,L124B ;1A7A C24B12 + LD B,A ;1A7D 47 + CALL L168B ;1A7E CD8B16 + CP A ;1A81 BF + ADC A,H ;1A82 8C + LD A,(DE) ;1A83 1A + CALL L169A ;1A84 CD9A16 + LD D,B ;1A87 50 + CALL L3C85 ;1A88 CD853C + INC B ;1A8B 04 + LD A,B ;1A8C 78 + LD (L1A75),A ;1A8D 32751A + PUSH HL ;1A90 E5 + CALL L1B08 ;1A91 CD081B + LD HL,L457E ;1A94 217E45 + CALL L1896 ;1A97 CD9618 + DEC A ;1A9A 3D + CALL L1897 ;1A9B CD9718 + POP HL ;1A9E E1 + CALL L168B ;1A9F CD8B16 + DEC C ;1AA2 0D + PUSH HL ;1AA3 E5 + LD A,(DE) ;1AA4 1A + LD HL,L4806 ;1AA5 210648 +L1AA8: PUSH HL ;1AA8 E5 + CALL L175A ;1AA9 CD5A17 + POP HL ;1AAC E1 + JP Z,L124B ;1AAD CA4B12 + CALL L17E8 ;1AB0 CDE817 + LD DE,L4455 ;1AB3 115544 + CALL L1799 ;1AB6 CD9917 + LD HL,(L457E) ;1AB9 2A7E45 + EX DE,HL ;1ABC EB + LD HL,(L4457) ;1ABD 2A5744 + CALL L1662 ;1AC0 CD6216 + JP C,L1ADF ;1AC3 DADF1A + EX DE,HL ;1AC6 EB + LD HL,(L4580) ;1AC7 2A8045 + CALL L1662 ;1ACA CD6216 + JP C,L1ADF ;1ACD DADF1A + CALL L1443 ;1AD0 CD4314 + LD DE,L4400 ;1AD3 110044 + CALL L1B12 ;1AD6 CD121B + CALL BREAK ;1AD9 CD1E00 + JP Z,L124B ;1ADC CA4B12 +L1ADF: LD HL,(L4455) ;1ADF 2A5544 + JP L1AA8 ;1AE2 C3A81A + + DB 0CDH,0F1H,16H,0EDH ;1AE5 CDF116ED Link 1AE5 found at , $1AA3 + DB 53H,7EH,45H,0CDH ;1AE9 537E45CD + DB 8BH,16H,0DH,0F9H ;1AED 8B160DF9 + DB 1AH,0EBH,22H,80H ;1AF1 1AEB2280 + DB 45H,0C3H,0A5H,1AH ;1AF5 45C3A51A + DB 0CDH,9AH,16H,0BDH ;1AF9 CD9A16BD + DB 0FEH,0DH,0CAH,0A5H ;1AFD FE0DCAA5 + DB 1AH,0CDH,0F1H,16H ;1B01 1ACDF116 + DB 0C3H,0F2H,1AH ;1B05 C3F21A +L1B08: LD A,(L1A75) ;1B08 3A751A + OR A ;1B0B B7 + JP Z,CRLF ;1B0C CA0900 + JP L3BA1 ;1B0F C3A13B + +L1B12: LD A,(L1A75) ;1B12 3A751A + OR A ;1B15 B7 + JR NZ,L1B1E ;1B16 2006 + CALL STRING ;1B18 CD1800 + JP CRLF ;1B1B C30900 + +L1B1E: CALL L3C05 ;1B1E CD053C + JP L3BA1 ;1B21 C3A13B + +L1B24: CALL L1987 ;1B24 CD8719 +L1B27: CALL L163D ;1B27 CD3D16 + JP L19B8 ;1B2A C3B819 + +L1B2D: CALL L13C4 ;1B2D CDC413 + LD (L4801),HL ;1B30 220148 + JP L124B ;1B33 C34B12 + +L1B36: CALL L13C4 ;1B36 CDC413 +L1B39: LD (L4801),HL ;1B39 220148 + JP L1385 ;1B3C C38513 + +L1B3F: PUSH HL ;1B3F E5 +L1B40: CALL L1829 ;1B40 CD2918 + JP Z,L138E ;1B43 CA8E13 + CP 182 ;1B46 FEB6 + INC HL ;1B48 23 + JR NZ,L1B40 ;1B49 20F5 + CALL L22AF ;1B4B CDAF22 + LD (L4801),HL ;1B4E 220148 + CALL L1976 ;1B51 CD7619 + POP HL ;1B54 E1 + CALL L2613 ;1B55 CD1326 + CALL L2436 ;1B58 CD3624 + CALL L169A ;1B5B CD9A16 + OR (HL) ;1B5E B6 + CALL L197B ;1B5F CD7B19 + CALL L1B6A ;1B62 CD6A1B + SBC A,L ;1B65 9D + INC DE ;1B66 13 + JP L19B2 ;1B67 C3B219 + +L1B6A: LD HL,L456F ;1B6A 216F45 + LD B,(HL) ;1B6D 46 + INC HL ;1B6E 23 + LD C,(HL) ;1B6F 4E + INC HL ;1B70 23 + LD A,(HL) ;1B71 7E + LD DE,(L4572) ;1B72 ED5B7245 + OR A ;1B76 B7 + JP NZ,L1B84 ;1B77 C2841B + OR B ;1B7A B0 + JP NZ,L1670 ;1B7B C27016 + CALL L1824 ;1B7E CD2418 + JP L167A ;1B81 C37A16 + +L1B84: XOR A ;1B84 AF + OR B ;1B85 B0 + JP Z,L1670 ;1B86 CA7016 + LD HL,L4559 ;1B89 215945 + XOR A ;1B8C AF + LD B,A ;1B8D 47 + SBC HL,DE ;1B8E ED52 + JP Z,L1BC0 ;1B90 CAC01B + LD HL,(L456C) ;1B93 2A6C45 + PUSH HL ;1B96 E5 + XOR A ;1B97 AF + SBC HL,BC ;1B98 ED42 + LD B,H ;1B9A 44 + LD C,L ;1B9B 4D + JR C,L1BA3 ;1B9C 3805 + CALL L177C ;1B9E CD7C17 + JR L1BAB ;1BA1 1808 + +L1BA3: PUSH BC ;1BA3 C5 + CALL L1651 ;1BA4 CD5116 + CALL L1766 ;1BA7 CD6617 + POP BC ;1BAA C1 +L1BAB: CALL L189C ;1BAB CD9C18 + LD HL,(L456E) ;1BAE 2A6E45 + EX DE,HL ;1BB1 EB + CALL L1801 ;1BB2 CD0118 + EX DE,HL ;1BB5 EB + POP BC ;1BB6 C1 + LD A,C ;1BB7 79 + OR A ;1BB8 B7 + JR Z,L1BBD ;1BB9 2802 + LDIR ;1BBB EDB0 +L1BBD: JP L167A ;1BBD C37A16 + +L1BC0: LD HL,(L456E) ;1BC0 2A6E45 + EX DE,HL ;1BC3 EB + CALL L1801 ;1BC4 CD0118 + EX DE,HL ;1BC7 EB + LD DE,L4557 ;1BC8 115745 + PUSH DE ;1BCB D5 + LD B,3 ;1BCC 0603 +L1BCE: LD C,2 ;1BCE 0E02 +L1BD0: CALL L1659 ;1BD0 CD5916 + JP NC,L1398 ;1BD3 D29813 + LD (DE),A ;1BD6 12 + INC DE ;1BD7 13 + INC HL ;1BD8 23 + DEC C ;1BD9 0D + JR NZ,L1BD0 ;1BDA 20F4 + LD A,13 ;1BDC 3E0D + LD (DE),A ;1BDE 12 + INC DE ;1BDF 13 + DEC B ;1BE0 05 + JR NZ,L1BCE ;1BE1 20EB + CALL L168B ;1BE3 CD8B16 + DEC C ;1BE6 0D + SBC A,B ;1BE7 98 + INC DE ;1BE8 13 + POP HL ;1BE9 E1 + CALL L198C ;1BEA CD8C19 + LD B,0 ;1BED 0600 + LD A,E ;1BEF 7B + CP 24 ;1BF0 FE18 + JP NC,L1398 ;1BF2 D29813 + SUB 12 ;1BF5 D60C + JR C,L1BFB ;1BF7 3802 + LD E,A ;1BF9 5F + INC B ;1BFA 04 +L1BFB: LD A,B ;1BFB 78 + PUSH AF ;1BFC F5 + PUSH HL ;1BFD E5 + LD HL,L0E10 ;1BFE 21100E + CALL L16C8 ;1C01 CDC816 + POP HL ;1C04 E1 + PUSH DE ;1C05 D5 + INC HL ;1C06 23 + CALL L198C ;1C07 CD8C19 + LD A,E ;1C0A 7B + CP 60 ;1C0B FE3C + JP NC,L1398 ;1C0D D29813 + PUSH HL ;1C10 E5 + LD HL,L003C ;1C11 213C00 + CALL L16C8 ;1C14 CDC816 + POP HL ;1C17 E1 + EX (SP),HL ;1C18 E3 + ADD HL,DE ;1C19 19 + EX (SP),HL ;1C1A E3 + INC HL ;1C1B 23 + CALL L198C ;1C1C CD8C19 + LD A,E ;1C1F 7B + CP 60 ;1C20 FE3C + JP NC,L1398 ;1C22 D29813 + POP HL ;1C25 E1 + ADD HL,DE ;1C26 19 + EX DE,HL ;1C27 EB + POP AF ;1C28 F1 + CALL SETCLOCK ;1C29 CD3300 + JP L167A ;1C2C C37A16 + +L1C2F: LD B,0 ;1C2F 0600 + CALL L168B ;1C31 CD8B16 + CP A ;1C34 BF + LD B,L ;1C35 45 + INC E ;1C36 1C + INC HL ;1C37 23 + INC B ;1C38 04 + CP 84 ;1C39 FE54 + JP Z,L1C45 ;1C3B CA451C + CP 80 ;1C3E FE50 + JP NZ,L138E ;1C40 C28E13 + LD B,128 ;1C43 0680 +L1C45: LD A,B ;1C45 78 + LD (L457D),A ;1C46 327D45 + CALL L1829 ;1C49 CD2918 + JP NZ,L1C60 ;1C4C C2601C + LD A,(L457D) ;1C4F 3A7D45 + LD BC,L19B5 ;1C52 01B519 + PUSH BC ;1C55 C5 + CP 1 ;1C56 FE01 + RET Z ;1C58 C8 + OR A ;1C59 B7 + JP Z,CRLF2 ;1C5A CA0600 + JP L3BA6 ;1C5D C3A63B + +L1C60: CALL L168B ;1C60 CD8B16 + DEC SP ;1C63 3B + LD H,(HL) ;1C64 66 + INC E ;1C65 1C + CALL L168B ;1C66 CD8B16 + INC L ;1C69 2C + LD A,L ;1C6A 7D + INC E ;1C6B 1C + LD A,(L457D) ;1C6C 3A7D45 + LD BC,L1C7D ;1C6F 017D1C + PUSH BC ;1C72 C5 + CP 1 ;1C73 FE01 + RET Z ;1C75 C8 + OR A ;1C76 B7 + JP Z,TAB ;1C77 CA0F00 + JP L3C4A ;1C7A C34A3C + +L1C7D: DB 0CDH,29H,18H,0CAH ;1C7D CD2918CA Link 1C7D found at , $1C6A, $1C70 + DB 0B5H,19H,0FEH,3BH ;1C81 B519FE3B + DB 28H,02H,0FEH,2CH ;1C85 2802FE2C + DB 0CAH,60H,1CH,0CDH ;1C89 CA601CCD + DB 0AFH,22H,0E5H,7AH ;1C8D AF22E57A + DB 0B7H,0C2H,0C5H,1CH ;1C91 B7C2C51C + DB 2AH,44H,46H,11H ;1C95 2A444611 + DB 00H,44H,0D5H,0CDH ;1C99 0044D5CD + DB 2DH,32H,0D1H,3AH ;1C9D 2D32D13A + DB 7DH,45H,01H,0B3H ;1CA1 7D4501B3 + DB 1CH,0C5H,0FEH,01H ;1CA5 1CC5FE01 + DB 0CAH,4EH,2CH,0B7H ;1CA9 CA4E2CB7 + DB 0CAH,27H,3DH,0C3H ;1CAD CA273DC3 + DB 0B6H,3BH,0E1H,0CDH ;1CB1 B63BE1CD + DB 29H,18H,28H,06H ;1CB5 29182806 + DB 0FEH,3BH,28H,02H ;1CB9 FE3B2802 + DB 0FEH,2CH,0CAH,49H ;1CBD FE2CCA49 + DB 1CH,0C3H,8EH,13H ;1CC1 1CC38E13 + DB 0CDH,01H,18H,0C3H ;1CC5 CD0118C3 + DB 0A0H,1CH ;1CC9 A01C +L1CCB: CALL L1987 ;1CCB CD8719 + XOR A ;1CCE AF + LD (L457A),A ;1CCF 327A45 + LD (L4565),A ;1CD2 326545 + CALL L1659 ;1CD5 CD5916 + JP NC,L1CEA ;1CD8 D2EA1C +L1CDB: CALL L16F1 ;1CDB CDF116 +L1CDE: EX DE,HL ;1CDE EB + CALL L17A5 ;1CDF CDA517 + ADC A,(HL) ;1CE2 8E + INC DE ;1CE3 13 + JP NZ,L138E ;1CE4 C28E13 + JP L19CF ;1CE7 C3CF19 + +L1CEA: CALL L1857 ;1CEA CD5718 + CALL L187C ;1CED CD7C18 + LD HL,L4806 ;1CF0 210648 + JP L19CF ;1CF3 C3CF19 + +L1CF6: CALL L16F1 ;1CF6 CDF116 +L1CF9: LD (L4801),HL ;1CF9 220148 + EX DE,HL ;1CFC EB + CALL L17A5 ;1CFD CDA517 + ADC A,(HL) ;1D00 8E + INC DE ;1D01 13 + JP NZ,L138E ;1D02 C28E13 + EXX ;1D05 D9 + LD HL,L4805 ;1D06 210548 + LD A,(HL) ;1D09 7E + CP 15 ;1D0A FE0F + JP Z,L13A7 ;1D0C CAA713 + INC (HL) ;1D0F 34 + DEC HL ;1D10 2B + DEC HL ;1D11 2B + LD DE,(L464A) ;1D12 ED5B4A46 + DEC DE ;1D16 1B + LD BC,L0007 ;1D17 010700 + LDDR ;1D1A EDB8 + INC DE ;1D1C 13 + LD (L464A),DE ;1D1D ED534A46 + LD C,7 ;1D21 0E07 + ADD HL,BC ;1D23 09 + LD (HL),0 ;1D24 3600 + EXX ;1D26 D9 + JP L19CF ;1D27 C3CF19 + +L1D2A: LD HL,L4805 ;1D2A 210548 + XOR A ;1D2D AF + CP (HL) ;1D2E BE + JP Z,L138E ;1D2F CA8E13 + DEC (HL) ;1D32 35 +L1D33: LD HL,L4803 ;1D33 210348 + LD A,(HL) ;1D36 7E + OR A ;1D37 B7 + JP Z,L1D4B ;1D38 CA4B1D + DEC (HL) ;1D3B 35 + INC HL ;1D3C 23 + DEC (HL) ;1D3D 35 + LD HL,(L4648) ;1D3E 2A4846 + LD BC,L0013 ;1D41 011300 + ADD HL,BC ;1D44 09 + LD (L4648),HL ;1D45 224846 + JP L1D33 ;1D48 C3331D + +L1D4B: LD HL,(L464A) ;1D4B 2A4A46 + LD DE,L47FD ;1D4E 11FD47 + LD BC,L0007 ;1D51 010700 + LDIR ;1D54 EDB0 + LD (L464A),HL ;1D56 224A46 + JP L19B2 ;1D59 C3B219 + +L1D5C: CALL L2613 ;1D5C CD1326 + CALL L169A ;1D5F CD9A16 + OR (HL) ;1D62 B6 + PUSH DE ;1D63 D5 + CALL L1DEB ;1D64 CDEB1D + POP HL ;1D67 E1 + LD (L47F0),HL ;1D68 22F047 + EX DE,HL ;1D6B EB + CALL L2441 ;1D6C CD4124 + CALL L1824 ;1D6F CD2418 + CALL L1697 ;1D72 CD9716 + XOR (HL) ;1D75 AE + CALL L1DEB ;1D76 CDEB1D + LD DE,L47F8 ;1D79 11F847 + CALL L1824 ;1D7C CD2418 + CALL L1688 ;1D7F CD8816 + XOR A ;1D82 AF + ADC A,L ;1D83 8D + DEC E ;1D84 1D + CALL L1DEB ;1D85 CDEB1D + LD HL,(L4644) ;1D88 2A4446 + JR L1D90 ;1D8B 1803 + + DB 21H,14H,16H ;1D8D 211416 +L1D90: LD DE,L47F2 ;1D90 11F247 + LD A,(HL) ;1D93 7E + LD (L47F7),A ;1D94 32F747 + LD BC,L0005 ;1D97 010500 + LDIR ;1D9A EDB0 + LD HL,(L4648) ;1D9C 2A4846 + LD DE,(L47F0) ;1D9F ED5BF047 + LD A,(L4803) ;1DA3 3A0348 + INC A ;1DA6 3C +L1DA7: DEC A ;1DA7 3D + JP Z,L1DCC ;1DA8 CACC1D + EX AF,AF' ;1DAB 08 + LD A,(HL) ;1DAC 7E + SUB E ;1DAD 93 + LD B,A ;1DAE 47 + INC HL ;1DAF 23 + LD A,(HL) ;1DB0 7E + SUB D ;1DB1 92 + OR B ;1DB2 B0 + LD BC,VIDEO ;1DB3 011200 + ADD HL,BC ;1DB6 09 + JP Z,L1DBE ;1DB7 CABE1D + EX AF,AF' ;1DBA 08 + JP L1DA7 ;1DBB C3A71D + +L1DBE: LD (L4648),HL ;1DBE 224846 + EX AF,AF' ;1DC1 08 + DEC A ;1DC2 3D + LD HL,L4803 ;1DC3 210348 + LD B,(HL) ;1DC6 46 + LD (HL),A ;1DC7 77 + SUB B ;1DC8 90 + INC HL ;1DC9 23 + ADD A,(HL) ;1DCA 86 + LD (HL),A ;1DCB 77 +L1DCC: LD HL,L4804 ;1DCC 210448 + LD A,(HL) ;1DCF 7E + CP 15 ;1DD0 FE0F + JP Z,L13A2 ;1DD2 CAA213 + INC (HL) ;1DD5 34 + DEC HL ;1DD6 2B + INC (HL) ;1DD7 34 + DEC HL ;1DD8 2B + LD DE,(L4648) ;1DD9 ED5B4846 + LD BC,L0013 ;1DDD 011300 + DEC DE ;1DE0 1B + LDDR ;1DE1 EDB8 + INC DE ;1DE3 13 + EX DE,HL ;1DE4 EB + LD (L4648),HL ;1DE5 224846 + JP L19B2 ;1DE8 C3B219 + +L1DEB: CALL L22AF ;1DEB CDAF22 + LD (L4801),HL ;1DEE 220148 + JP L1814 ;1DF1 C31418 + +L1DF4: LD A,(L4803) ;1DF4 3A0348 + OR A ;1DF7 B7 + JP Z,L138E ;1DF8 CA8E13 + CALL L25CD ;1DFB CDCD25 + LD (L4801),HL ;1DFE 220148 + LD HL,(L4648) ;1E01 2A4846 + CALL NC,L1E77 ;1E04 D4771E +L1E07: LD A,E ;1E07 7B + SUB (HL) ;1E08 96 + INC HL ;1E09 23 + LD B,A ;1E0A 47 + LD A,D ;1E0B 7A + SUB (HL) ;1E0C 96 + OR B ;1E0D B0 + JP Z,L1E28 ;1E0E CA281E + EXX ;1E11 D9 + LD HL,L4803 ;1E12 210348 + LD A,(HL) ;1E15 7E + DEC A ;1E16 3D + JP Z,L138E ;1E17 CA8E13 + LD (HL),A ;1E1A 77 + INC HL ;1E1B 23 + DEC (HL) ;1E1C 35 + EXX ;1E1D D9 + LD BC,VIDEO ;1E1E 011200 + ADD HL,BC ;1E21 09 + LD (L4648),HL ;1E22 224846 + JP L1E07 ;1E25 C3071E + +L1E28: INC HL ;1E28 23 + CALL L2441 ;1E29 CD4124 + PUSH DE ;1E2C D5 + PUSH HL ;1E2D E5 + CALL L2D4D ;1E2E CD4D2D + POP HL ;1E31 E1 + POP DE ;1E32 D1 + LD BC,L0005 ;1E33 010500 + ADD HL,BC ;1E36 09 + LD A,(HL) ;1E37 7E + INC HL ;1E38 23 + PUSH HL ;1E39 E5 + OR A ;1E3A B7 + JP P,L1E57 ;1E3B F2571E + EX DE,HL ;1E3E EB + CALL L33EE ;1E3F CDEE33 + POP HL ;1E42 E1 + LD BC,L0005 ;1E43 010500 + JP C,L1E62 ;1E46 DA621E +L1E49: ADD HL,BC ;1E49 09 + LD DE,L47FD ;1E4A 11FD47 + INC C ;1E4D 0C + LDIR ;1E4E EDB0 + LD HL,(L4801) ;1E50 2A0148 + LD A,(HL) ;1E53 7E + JP L19B8 ;1E54 C3B819 + +L1E57: CALL L33EE ;1E57 CDEE33 + POP HL ;1E5A E1 + LD BC,L0005 ;1E5B 010500 + CCF ;1E5E 3F + JP C,L1E49 ;1E5F DA491E +L1E62: LD C,11 ;1E62 0E0B + ADD HL,BC ;1E64 09 + LD (L4648),HL ;1E65 224846 + LD HL,L4803 ;1E68 210348 + DEC (HL) ;1E6B 35 + INC HL ;1E6C 23 + DEC (HL) ;1E6D 35 + CALL L1688 ;1E6E CD8816 + INC L ;1E71 2C + OR D ;1E72 B2 + ADD HL,DE ;1E73 19 + JP L1DF4 ;1E74 C3F41D + +L1E77: LD E,(HL) ;1E77 5E + INC HL ;1E78 23 + LD D,(HL) ;1E79 56 + DEC HL ;1E7A 2B + RET ;1E7B C9 + +L1E7C: CALL L2C39 ;1E7C CD392C + PUSH HL ;1E7F E5 + LD HL,(L47FF) ;1E80 2AFF47 + LD A,L ;1E83 7D + OR H ;1E84 B4 + JP Z,L138E ;1E85 CA8E13 + XOR A ;1E88 AF + LD (L4574),A ;1E89 327445 + POP HL ;1E8C E1 + LD (L4801),HL ;1E8D 220148 + PUSH HL ;1E90 E5 + CALL L162D ;1E91 CD2D16 + CP 34 ;1E94 FE22 + LD DE,L1EAF ;1E96 11AF1E + JP NZ,L1EA9 ;1E99 C2A91E + CALL L2383 ;1E9C CD8323 + CALL L169A ;1E9F CD9A16 + DEC SP ;1EA2 3B + LD (L4801),HL ;1EA3 220148 + CALL L1801 ;1EA6 CD0118 +L1EA9: CALL L1EC1 ;1EA9 CDC11E + JP L1F06 ;1EAC C3061F + +L1EAF: DB "? " ;1EAF 3F20 + DB 0DH ;1EB1 0D +L1EB2: XOR A ;1EB2 AF + LD (CHARCOUNT),A ;1EB3 329411 + RET ;1EB6 C9 + +L1EB7: LD A,(L457D) ;1EB7 3A7D45 + OR A ;1EBA B7 + CALL Z,CRLF ;1EBB CC0900 + LD DE,L1EAF ;1EBE 11AF1E +L1EC1: LD A,(L457D) ;1EC1 3A7D45 + OR A ;1EC4 B7 + CALL Z,MESSAGE ;1EC5 CC1500 + CALL NZ,L1EB2 ;1EC8 C4B21E + LD DE,L4455 ;1ECB 115544 + LD A,(CHARCOUNT) ;1ECE 3A9411 + CALL L2C7A ;1ED1 CD7A2C + CALL USER ;1ED4 CD0300 + EX DE,HL ;1ED7 EB + LD A,(L457D) ;1ED8 3A7D45 + OR A ;1EDB B7 + JP NZ,L1EF8 ;1EDC C2F81E + LD A,27 ;1EDF 3E1B + CP (HL) ;1EE1 BE + JP Z,L1EFC ;1EE2 CAFC1E + LD A,13 ;1EE5 3E0D +L1EE7: CP (HL) ;1EE7 BE + JP Z,L1EB7 ;1EE8 CAB71E + INC HL ;1EEB 23 + DEC C ;1EEC 0D + JR NZ,L1EE7 ;1EED 20F8 + CALL L168B ;1EEF CD8B16 + DEC C ;1EF2 0D + RET M ;1EF3 F8 + LD E,195 ;1EF4 1EC3 + OR A ;1EF6 B7 + LD E,34 ;1EF7 1E22 + LD (HL),L ;1EF9 75 + LD B,L ;1EFA 45 + RET ;1EFB C9 + +L1EFC: LD A,129 ;1EFC 3E81 + LD (L4565),A ;1EFE 326545 + POP AF ;1F01 F1 + POP HL ;1F02 E1 + JP L1B39 ;1F03 C3391B + +L1F06: LD HL,(L4801) ;1F06 2A0148 + CALL L1829 ;1F09 CD2918 + JP Z,L1FA4 ;1F0C CAA41F + CALL L2613 ;1F0F CD1326 + CALL L2436 ;1F12 CD3624 + CALL L1829 ;1F15 CD2918 + JR Z,L1F1E ;1F18 2804 + CALL L169A ;1F1A CD9A16 + INC L ;1F1D 2C +L1F1E: LD (L4801),HL ;1F1E 220148 + CALL L197B ;1F21 CD7B19 + LD HL,(L4575) ;1F24 2A7545 + CALL L168B ;1F27 CD8B16 + INC L ;1F2A 2C + DEC L ;1F2B 2D + RRA ;1F2C 1F + LD (L4575),HL ;1F2D 227545 + LD A,(L457D) ;1F30 3A7D45 + OR A ;1F33 B7 + JP NZ,L1F3D ;1F34 C23D1F + CALL L1829 ;1F37 CD2918 + CALL Z,L1F9A ;1F3A CC9A1F +L1F3D: LD HL,(L4575) ;1F3D 2A7545 + CALL L18C4 ;1F40 CDC418 + LD A,(L4574) ;1F43 3A7445 + OR A ;1F46 B7 + JP Z,L1F4D ;1F47 CA4D1F + LD (L4578),HL ;1F4A 227845 +L1F4D: LD (L4575),HL ;1F4D 227545 + LD A,(L4571) ;1F50 3A7145 + OR A ;1F53 B7 + CALL Z,L1F72 ;1F54 CC721F + CALL L1976 ;1F57 CD7619 + CALL L1B6A ;1F5A CD6A1B + SBC A,L ;1F5D 9D + INC DE ;1F5E 13 + LD A,(L457D) ;1F5F 3A7D45 + OR A ;1F62 B7 + JP Z,L1F06 ;1F63 CA061F + LD HL,(L4801) ;1F66 2A0148 + CALL L1829 ;1F69 CD2918 + CALL NZ,L1EC1 ;1F6C C4C11E + JP L1F06 ;1F6F C3061F + +L1F72: CALL L1801 ;1F72 CD0118 + EX DE,HL ;1F75 EB + CALL L190D ;1F76 CD0D19 + LD A,H ;1F79 7C + RRA ;1F7A 1F + RET ;1F7B C9 + + DB 0F1H,3AH,74H,45H ;1F7C F13A7445 Link 1F7C found at , $1F79 + DB 0B7H,0C2H,98H,13H ;1F80 B7C29813 + DB 3AH,7DH,45H,0B7H ;1F84 3A7D45B7 + DB 0C2H,98H,13H,11H ;1F88 C2981311 + DB 18H,13H,0CDH,57H ;1F8C 1813CD57 + DB 13H,11H,0FFH,12H ;1F90 1311FF12 + DB 0CDH,15H,00H,0C3H ;1F94 CD1500C3 + DB 8CH,1EH ;1F98 8C1E +L1F9A: LD A,(L4574) ;1F9A 3A7445 + OR A ;1F9D B7 + JP Z,L1EB7 ;1F9E CAB71E + JP L1FD4 ;1FA1 C3D41F + +L1FA4: LD A,(L4574) ;1FA4 3A7445 + OR A ;1FA7 B7 + JP NZ,L19B2 ;1FA8 C2B219 + POP AF ;1FAB F1 + JP L19B2 ;1FAC C3B219 + +L1FAF: LD (L4801),HL ;1FAF 220148 + LD A,(L4577) ;1FB2 3A7745 + OR A ;1FB5 B7 + CALL Z,L1FCA ;1FB6 CCCA1F + LD HL,(L4578) ;1FB9 2A7845 + LD (L4575),HL ;1FBC 227545 + XOR A ;1FBF AF + LD (L457D),A ;1FC0 327D45 + INC A ;1FC3 3C + LD (L4574),A ;1FC4 327445 + JP L1F06 ;1FC7 C3061F + +L1FCA: INC A ;1FCA 3C + LD (L4577),A ;1FCB 327745 + LD HL,L4806 ;1FCE 210648 + JP L1FE0 ;1FD1 C3E01F + +L1FD4: LD HL,(L4575) ;1FD4 2A7545 + CALL L163D ;1FD7 CD3D16 + INC HL ;1FDA 23 + CP 58 ;1FDB FE3A + JP Z,L1FE9 ;1FDD CAE91F +L1FE0: LD A,(HL) ;1FE0 7E + INC HL ;1FE1 23 + OR (HL) ;1FE2 B6 + JP Z,L1385 ;1FE3 CA8513 + INC HL ;1FE6 23 + INC HL ;1FE7 23 + INC HL ;1FE8 23 +L1FE9: CALL L168B ;1FE9 CD8B16 + ADD A,C ;1FEC 81 + RST 10H ;16 ;1FED D7 + RRA ;1FEE 1F + LD (L4578),HL ;1FEF 227845 + LD (L4575),HL ;1FF2 227545 + RET ;1FF5 C9 + +L1FF6: CALL L22AF ;1FF6 CDAF22 + CALL L1814 ;1FF9 CD1418 + LD DE,(L4644) ;1FFC ED5B4446 + LD A,(DE) ;2000 1A + LD DE,COLDSTART ;2001 110000 + CP 193 ;2004 FEC1 + JP C,L2019 ;2006 DA1920 + SUB 209 ;2009 D6D1 + JP NC,L2019 ;200B D21920 + LD BC,L2019 ;200E 011920 + PUSH BC ;2011 C5 + PUSH HL ;2012 E5 + LD HL,(L4644) ;2013 2A4446 + JP L1963 ;2016 C36319 + +L2019: LD A,(HL) ;2019 7E + INC HL ;201A 23 + SUB 137 ;201B D689 + JR Z,L2024 ;201D 2805 + CP 2 ;201F FE02 + JP NZ,L138E ;2021 C28E13 +L2024: EX AF,AF' ;2024 08 + LD A,E ;2025 7B +L2026: OR A ;2026 B7 + JP Z,L1B27 ;2027 CA271B + LD A,D ;202A 7A + OR A ;202B B7 + JP NZ,L1B27 ;202C C2271B +L202F: DEC E ;202F 1D + JP Z,L2042 ;2030 CA4220 +L2033: CALL L1829 ;2033 CD2918 + JP Z,L19B8 ;2036 CAB819 + CP 44 ;2039 FE2C + INC HL ;203B 23 + JP NZ,L2033 ;203C C23320 + JP L202F ;203F C32F20 + +L2042: CALL L16F1 ;2042 CDF116 + CALL L163D ;2045 CD3D16 + EX AF,AF' ;2048 08 + OR A ;2049 B7 + JP NZ,L1CF9 ;204A C2F91C + JP L1CDE ;204D C3DE1C + +L2050: CALL L2613 ;2050 CD1326 + LD BC,COLDSTART ;2053 010000 + CP 36 ;2056 FE24 + JR NZ,L205C ;2058 2002 + INC HL ;205A 23 + INC B ;205B 04 +L205C: CALL L169A ;205C CD9A16 + JR Z,L202E ;205F 28CD + EXX ;2061 D9 + JR NZ,L2026 ;2062 20C2 + OR L ;2064 B5 + JR NZ,L204C ;2065 20E5 + LD HL,(L20D7) ;2067 2AD720 + LD E,H ;206A 5C + LD D,A ;206B 57 + LD H,A ;206C 67 + INC HL ;206D 23 + INC DE ;206E 13 + CALL L16A7 ;206F CDA716 + SUB E ;2072 93 + INC DE ;2073 13 + LD A,(L20D6) ;2074 3AD620 + OR A ;2077 B7 + POP HL ;2078 E1 + PUSH DE ;2079 D5 + PUSH HL ;207A E5 + JR NZ,L2085 ;207B 2008 + LD HL,L0005 ;207D 210500 + CALL L16A7 ;2080 CDA716 + SUB E ;2083 93 + INC DE ;2084 13 +L2085: LD HL,L0004 ;2085 210400 + ADD HL,DE ;2088 19 + JP C,L1393 ;2089 DA9313 + LD B,H ;208C 44 + LD C,L ;208D 4D + POP DE ;208E D1 + CALL L177C ;208F CD7C17 + CALL L189C ;2092 CD9C18 + LD HL,(L4630) ;2095 2A3046 + EX DE,HL ;2098 EB + LD (HL),E ;2099 73 + INC HL ;209A 23 + LD (HL),D ;209B 72 + INC HL ;209C 23 + LD DE,(L20D7) ;209D ED5BD720 + LD (HL),E ;20A1 73 + INC HL ;20A2 23 + LD (HL),D ;20A3 72 + INC HL ;20A4 23 + POP BC ;20A5 C1 + LD A,(L20D6) ;20A6 3AD620 + OR A ;20A9 B7 + JP Z,L20C1 ;20AA CAC120 +L20AD: LD (HL),13 ;20AD 360D + INC HL ;20AF 23 + DEC BC ;20B0 0B + LD A,B ;20B1 78 + OR C ;20B2 B1 + JR NZ,L20AD ;20B3 20F8 +L20B5: LD HL,(L20D4) ;20B5 2AD420 + CALL L168B ;20B8 CD8B16 + INC L ;20BB 2C + OR L ;20BC B5 + ADD HL,DE ;20BD 19 + JP L2050 ;20BE C35020 + +L20C1: EX DE,HL ;20C1 EB +L20C2: PUSH BC ;20C2 C5 + LD HL,L1619 ;20C3 211916 + LD BC,L0005 ;20C6 010500 + LDIR ;20C9 EDB0 + POP BC ;20CB C1 + DEC BC ;20CC 0B + LD A,B ;20CD 78 + OR C ;20CE B1 + JR NZ,L20C2 ;20CF 20F1 + JP L20B5 ;20D1 C3B520 + +L20D4: DW 0A323H ;20D4 23A3 +L20D6: DB 33H ;20D6 33 +L20D7: DW 09E3EH ;20D7 3E9E +L20D9: PUSH DE ;20D9 D5 + PUSH BC ;20DA C5 + CALL L19A9 ;20DB CDA919 + POP BC ;20DE C1 + LD A,(HL) ;20DF 7E + CP 44 ;20E0 FE2C + CALL Z,L215A ;20E2 CC5A21 + CALL L169A ;20E5 CD9A16 + ADD HL,HL ;20E8 29 + LD (L20D4),HL ;20E9 22D420 + POP HL ;20EC E1 + LD (L4630),HL ;20ED 223046 + EX DE,HL ;20F0 EB + LD (L20D7),HL ;20F1 22D720 + LD A,B ;20F4 78 + LD (L20D6),A ;20F5 32D620 + LD HL,L4636 ;20F8 213646 + LD DE,CRLF2 ;20FB 110600 + OR A ;20FE B7 + JR NZ,L2102 ;20FF 2001 + ADD HL,DE ;2101 19 +L2102: LD A,C ;2102 79 + LD E,2 ;2103 1E02 + OR A ;2105 B7 + JR NZ,L2109 ;2106 2001 + ADD HL,DE ;2108 19 +L2109: LD E,(HL) ;2109 5E + INC HL ;210A 23 + LD D,(HL) ;210B 56 + EX DE,HL ;210C EB +L210D: CALL L17C4 ;210D CDC417 + LD B,E ;2110 43 + LD HL,L45CA ;2111 21CA45 + LD HL,L235E ;2114 215E23 + PUSH HL ;2117 E5 + LD L,(HL) ;2118 6E + LD D,0 ;2119 1600 + LD H,D ;211B 62 + INC HL ;211C 23 + INC DE ;211D 13 + CALL L16C8 ;211E CDC816 + LD A,(L20D6) ;2121 3AD620 + OR A ;2124 B7 + JP NZ,L2134 ;2125 C23421 + LD HL,L0005 ;2128 210500 + CALL L16C8 ;212B CDC816 + POP HL ;212E E1 + ADD HL,DE ;212F 19 +L2130: INC HL ;2130 23 + JP L210D ;2131 C30D21 + +L2134: POP HL ;2134 E1 +L2135: LD A,13 ;2135 3E0D +L2137: INC HL ;2137 23 + CP (HL) ;2138 BE + JR NZ,L2137 ;2139 20FC + DEC DE ;213B 1B + LD A,D ;213C 7A + OR E ;213D B3 + JR NZ,L2135 ;213E 20F5 + JP L2130 ;2140 C33021 + + DB 0AFH,0C9H,4EH,23H ;2143 AFC94E23 Link 2143 found at , $2110 + DB 46H,23H,0EDH,5BH ;2147 4623ED5B + DB 0D7H,20H,78H,0BAH ;214B D72078BA + DB 38H,02H,79H,0BBH ;214F 380279BB + DB 0DAH,8EH,13H,3EH ;2153 DA8E133E + DB 01H,0B7H,0C9H ;2157 01B7C9 +L215A: INC C ;215A 0C + PUSH BC ;215B C5 + PUSH DE ;215C D5 + INC HL ;215D 23 + CALL L19A9 ;215E CDA919 + LD A,E ;2161 7B + POP DE ;2162 D1 + LD D,A ;2163 57 + POP BC ;2164 C1 + RET ;2165 C9 + +L2166: CALL L198C ;2166 CD8C19 + PUSH DE ;2169 D5 + CALL L169A ;216A CD9A16 + INC L ;216D 2C + CALL L19A9 ;216E CDA919 + EX (SP),HL ;2171 E3 + LD (HL),E ;2172 73 + POP HL ;2173 E1 + JP L19B5 ;2174 C3B519 + +L2177: PUSH HL ;2177 E5 + CALL L1857 ;2178 CD5718 + CALL L1872 ;217B CD7218 + POP HL ;217E E1 + JP L19B5 ;217F C3B519 + +L2182: CALL L2258 ;2182 CD5822 + CALL L1814 ;2185 CD1418 + LD IX,(L4644) ;2188 DD2A4446 + BIT 7,(IX+4) ;218C DDCB047E + JP Z,L19C7 ;2190 CAC719 + LD A,(HL) ;2193 7E + INC HL ;2194 23 + CP 137 ;2195 FE89 +L2197: JP Z,L1CDB ;2197 CADB1C + CP 139 ;219A FE8B + JP Z,L1CF6 ;219C CAF61C + CP 173 ;219F FEAD + JP NZ,L138E ;21A1 C28E13 + CALL L1659 ;21A4 CD5916 + JP C,L1CDB ;21A7 DADB1C + LD (L4801),HL ;21AA 220148 + JP L19E1 ;21AD C3E119 + +L21B0: CALL L162D ;21B0 CD2D16 + SUB 65 ;21B3 D641 + CP 26 ;21B5 FE1A + JP NC,L138E ;21B7 D28E13 + LD E,(HL) ;21BA 5E + INC HL ;21BB 23 + CALL L169A ;21BC CD9A16 + JR Z,L2197 ;21BF 28D6 + LD B,C ;21C1 41 + CP 26 ;21C2 FE1A + JP NC,L138E ;21C4 D28E13 + LD D,(HL) ;21C7 56 + INC HL ;21C8 23 + CALL L169A ;21C9 CD9A16 + ADD HL,HL ;21CC 29 + CALL L169A ;21CD CD9A16 + OR (HL) ;21D0 B6 + PUSH HL ;21D1 E5 + CALL L163D ;21D2 CD3D16 + POP BC ;21D5 C1 + PUSH HL ;21D6 E5 + XOR A ;21D7 AF + SBC HL,BC ;21D8 ED42 + PUSH BC ;21DA C5 + PUSH HL ;21DB E5 + LD HL,(L4634) ;21DC 2A3446 +L21DF: LD A,(HL) ;21DF 7E + CP E ;21E0 BB + JP Z,L2204 ;21E1 CA0422 + CP 0 ;21E4 FE00 + JR Z,L21EF ;21E6 2807 + INC HL ;21E8 23 + INC HL ;21E9 23 + CALL L1633 ;21EA CD3316 + JR L21DF ;21ED 18F0 + +L21EF: EX DE,HL ;21EF EB + LD BC,USER ;21F0 010300 + CALL L177C ;21F3 CD7C17 + CALL L189C ;21F6 CD9C18 + EX DE,HL ;21F9 EB + LD (HL),E ;21FA 73 + INC HL ;21FB 23 + LD (HL),D ;21FC 72 + INC HL ;21FD 23 + LD (HL),13 ;21FE 360D + EX DE,HL ;2200 EB + JP L221A ;2201 C31A22 + +L2204: INC HL ;2204 23 + LD (HL),D ;2205 72 + INC HL ;2206 23 + PUSH HL ;2207 E5 + CALL L163D ;2208 CD3D16 + POP DE ;220B D1 + XOR A ;220C AF + SBC HL,DE ;220D ED52 + LD B,H ;220F 44 + LD C,L ;2210 4D + CALL L1766 ;2211 CD6617 + CALL L1651 ;2214 CD5116 + CALL L189C ;2217 CD9C18 +L221A: POP BC ;221A C1 + POP HL ;221B E1 + CALL L1796 ;221C CD9617 + CALL L189C ;221F CD9C18 + POP HL ;2222 E1 + JP L19B5 ;2223 C3B519 + +L2226: CALL L1829 ;2226 CD2918 + JP Z,L19B5 ;2229 CAB519 + CALL L22AF ;222C CDAF22 + CALL L1829 ;222F CD2918 + JR Z,L2235 ;2232 2801 + INC HL ;2234 23 +L2235: PUSH HL ;2235 E5 + CALL L180F ;2236 CD0F18 + CALL L1801 ;2239 CD0118 + CALL MUSIC ;223C CD3000 + JP C,L1385 ;223F DA8513 + POP HL ;2242 E1 + JP L2226 ;2243 C32622 + +L2246: CALL L19A9 ;2246 CDA919 + LD A,E ;2249 7B + DEC A ;224A 3D + CP 7 ;224B FE07 + JP NC,L1398 ;224D D29813 + INC A ;2250 3C + CALL SPEED ;2251 CD4100 + JP L1B27 ;2254 C3271B + +L2257: INC HL ;2257 23 +L2258: CALL L22AF ;2258 CDAF22 +L225B: CP 176 ;225B FEB0 + RET C ;225D D8 + CP 188 ;225E FEBC + RET NC ;2260 D0 + EX AF,AF' ;2261 08 + LD A,D ;2262 7A + OR A ;2263 B7 + JP NZ,L2272 ;2264 C27222 + EX AF,AF' ;2267 08 + EXX ;2268 D9 + LD BC,L225B ;2269 015B22 + LD DE,L22AE ;226C 11AE22 + JP L2339 ;226F C33923 + +L2272: EX AF,AF' ;2272 08 + CP 182 ;2273 FEB6 + JP NZ,L138E ;2275 C28E13 + LD A,C ;2278 79 + PUSH DE ;2279 D5 + PUSH AF ;227A F5 + CALL L22AE ;227B CDAE22 + CALL L180F ;227E CD0F18 + POP AF ;2281 F1 + EX (SP),HL ;2282 E3 + LD B,A ;2283 47 + SUB C ;2284 91 + JP NZ,L22A1 ;2285 C2A122 + OR B ;2288 B0 + JP Z,L229C ;2289 CA9C22 + CALL L1801 ;228C CD0118 + EX DE,HL ;228F EB + CALL L1801 ;2290 CD0118 +L2293: LD A,(DE) ;2293 1A + CP (HL) ;2294 BE + INC HL ;2295 23 + INC DE ;2296 13 + JP NZ,L22A1 ;2297 C2A122 + DJNZ L2293 ;229A 10F7 +L229C: LD DE,L161E ;229C 111E16 + JR Z,L22A4 ;229F 2803 +L22A1: LD DE,L1619 ;22A1 111916 +L22A4: CALL L181A ;22A4 CD1A18 + POP HL ;22A7 E1 + CALL L237B ;22A8 CD7B23 + JP L225B ;22AB C35B22 + +L22AE: INC HL ;22AE 23 +L22AF: LD A,(HL) ;22AF 7E + CP 32 ;22B0 FE20 + JR Z,L22AE ;22B2 28FA + CP 188 ;22B4 FEBC + JP Z,L22C7 ;22B6 CAC722 + CP 189 ;22B9 FEBD + JP NZ,L22C8 ;22BB C2C822 + CALL L2315 ;22BE CD1523 + CALL L2393 ;22C1 CD9323 + JP L22CB ;22C4 C3CB22 + +L22C7: INC HL ;22C7 23 +L22C8: CALL L2316 ;22C8 CD1623 +L22CB: CP 188 ;22CB FEBC + RET C ;22CD D8 + CP 190 ;22CE FEBE + RET NC ;22D0 D0 + EX AF,AF' ;22D1 08 + LD A,D ;22D2 7A + OR A ;22D3 B7 + JP NZ,L22E2 ;22D4 C2E222 + EX AF,AF' ;22D7 08 + EXX ;22D8 D9 + LD BC,L22CB ;22D9 01CB22 + LD DE,L2315 ;22DC 111523 + JP L2339 ;22DF C33923 + +L22E2: EX AF,AF' ;22E2 08 + CP 188 ;22E3 FEBC + JP NZ,L138E ;22E5 C28E13 + PUSH DE ;22E8 D5 + PUSH BC ;22E9 C5 + CALL L2315 ;22EA CD1523 + CALL L180F ;22ED CD0F18 + LD A,C ;22F0 79 + EXX ;22F1 D9 + POP BC ;22F2 C1 + POP DE ;22F3 D1 + ADD A,C ;22F4 81 + JP C,L1398 ;22F5 DA9813 + LD H,B ;22F8 60 + LD L,A ;22F9 6F + PUSH HL ;22FA E5 + EXX ;22FB D9 + PUSH HL ;22FC E5 + PUSH DE ;22FD D5 + EXX ;22FE D9 + POP HL ;22FF E1 + PUSH HL ;2300 E5 + CALL L1801 ;2301 CD0118 + EX DE,HL ;2304 EB + CALL L1801 ;2305 CD0118 + CALL L1796 ;2308 CD9617 + CALL L189C ;230B CD9C18 + POP DE ;230E D1 + POP HL ;230F E1 + POP BC ;2310 C1 + LD A,(HL) ;2311 7E + JP L22CB ;2312 C3CB22 + +L2315: INC HL ;2315 23 +L2316: CALL L232A ;2316 CD2A23 +L2319: CP 190 ;2319 FEBE + RET C ;231B D8 + CP 192 ;231C FEC0 + RET NC ;231E D0 + EXX ;231F D9 + LD BC,L2319 ;2320 011923 + LD DE,L2329 ;2323 112923 + JP L2339 ;2326 C33923 + +L2329: DB 23H ;2329 23 +L232A: CALL L2383 ;232A CD8323 +L232D: CP 207 ;232D FECF + RET NZ ;232F C0 + LD A,192 ;2330 3EC0 + EXX ;2332 D9 + LD BC,L232D ;2333 012D23 + LD DE,L2382 ;2336 118223 +L2339: PUSH BC ;2339 C5 + LD HL,(L4644) ;233A 2A4446 + LD BC,L0005 ;233D 010500 + ADD HL,BC ;2340 09 + LD (L4644),HL ;2341 224446 + SUB 176 ;2344 D6B0 + ADD A,A ;2346 87 + LD HL,L2628 ;2347 212826 + LD C,A ;234A 4F + ADD HL,BC ;234B 09 + LD C,(HL) ;234C 4E + INC HL ;234D 23 + LD B,(HL) ;234E 46 + PUSH BC ;234F C5 + LD HL,L235C ;2350 215C23 + PUSH HL ;2353 E5 + PUSH DE ;2354 D5 + EXX ;2355 D9 + LD A,D ;2356 7A + OR A ;2357 B7 + RET Z ;2358 C8 + JP L139D ;2359 C39D13 + +L235C: DB 7AH,0B7H ;235C 7AB7 Link 235C found at , $2351 +L235E: DB 0C2H,9DH,13H,0FDH ;235E C29D13FD + DB 0E1H,0E5H,2AH,44H ;2362 E1E52A44 + DB 46H,01H,0FBH,0FFH ;2366 4601FBFF + DB 5DH,54H,09H,22H ;236A 5D540922 + DB 44H,46H,0EBH,01H ;236E 4446EB01 + DB 7AH,23H,0C5H,0FDH ;2372 7A23C5FD + DB 0E9H ;2376 E9 +L2377: CALL L181A ;2377 CD1A18 +L237A: POP HL ;237A E1 +L237B: LD BC,L0005 ;237B 010500 + LD D,B ;237E 50 + LD E,B ;237F 58 + LD A,(HL) ;2380 7E + RET ;2381 C9 + +L2382: DB 23H ;2382 23 +L2383: CALL L162D ;2383 CD2D16 + CP 188 ;2386 FEBC + JP Z,L23A8 ;2388 CAA823 + CP 189 ;238B FEBD + JP NZ,L23A9 ;238D C2A923 + CALL L23A8 ;2390 CDA823 +L2393: EXX ;2393 D9 + LD HL,(L4644) ;2394 2A4446 + PUSH HL ;2397 E5 + LD BC,L0004 ;2398 010400 + ADD HL,BC ;239B 09 + LD A,(HL) ;239C 7E + POP HL ;239D E1 + OR A ;239E B7 + JR Z,L23A5 ;239F 2804 + LD A,(HL) ;23A1 7E + ADD A,128 ;23A2 C680 + LD (HL),A ;23A4 77 +L23A5: EXX ;23A5 D9 + LD A,(HL) ;23A6 7E + RET ;23A7 C9 + +L23A8: INC HL ;23A8 23 +L23A9: CALL L25CD ;23A9 CDCD25 + JP NC,L23CC ;23AC D2CC23 + LD A,70 ;23AF 3E46 + CP E ;23B1 BB + JR NZ,L23BA ;23B2 2006 + LD A,78 ;23B4 3E4E + CP D ;23B6 BA + JP Z,L2476 ;23B7 CA7624 +L23BA: CALL L2436 ;23BA CD3624 + PUSH HL ;23BD E5 + LD A,B ;23BE 78 + OR A ;23BF B7 + JP Z,L2377 ;23C0 CA7723 + EX DE,HL ;23C3 EB + LD B,0 ;23C4 0600 + CALL L18DF ;23C6 CDDF18 + POP HL ;23C9 E1 + LD A,(HL) ;23CA 7E + RET ;23CB C9 + +L23CC: CP 40 ;23CC FE28 + JP Z,L23F2 ;23CE CAF223 + CP 34 ;23D1 FE22 + JP Z,L18C4 ;23D3 CAC418 + CALL L193D ;23D6 CD3D19 + JP NZ,L23E3 ;23D9 C2E323 + LD DE,(L4644) ;23DC ED5B4446 + JP L2FD9 ;23E0 C3D92F + +L23E3: CP 255 ;23E3 FEFF + JP NZ,L2400 ;23E5 C20024 + CALL L162C ;23E8 CD2C16 + PUSH HL ;23EB E5 + LD DE,L1623 ;23EC 112316 + JP L2377 ;23EF C37723 + +L23F2: LD BC,COLDSTART ;23F2 010000 + CALL L1752 ;23F5 CD5217 + CALL L2257 ;23F8 CD5722 + CALL L169A ;23FB CD9A16 + ADD HL,HL ;23FE 29 + RET ;23FF C9 + +L2400: SUB 192 ;2400 D6C0 + CP 15 ;2402 FE0F + JP NC,L240D ;2404 D20D24 + LD DE,L264A ;2407 114A26 + JP L1A12 ;240A C3121A + +L240D: SUB 16 ;240D D610 + CP 15 ;240F FE0F + JP NC,L138E ;2411 D28E13 + PUSH AF ;2414 F5 + CALL L22AE ;2415 CDAE22 + CALL L1814 ;2418 CD1418 + CALL L169A ;241B CD9A16 + ADD HL,HL ;241E 29 + POP AF ;241F F1 + PUSH HL ;2420 E5 + LD HL,L237A ;2421 217A23 + PUSH HL ;2424 E5 + LD HL,(L4644) ;2425 2A4446 + EX DE,HL ;2428 EB + LD HL,L2662 ;2429 216226 + ADD A,A ;242C 87 + LD C,A ;242D 4F + LD B,0 ;242E 0600 + ADD HL,BC ;2430 09 + LD A,(HL) ;2431 7E + INC HL ;2432 23 + LD H,(HL) ;2433 66 + LD L,A ;2434 6F + JP (HL) ;2435 E9 + +L2436: LD A,(HL) ;2436 7E + CP 36 ;2437 FE24 + JP Z,L24F7 ;2439 CAF724 + CP 40 ;243C FE28 + JP Z,L2585 ;243E CA8525 +L2441: PUSH HL ;2441 E5 + LD HL,(L4640) ;2442 2A4046 + LD BC,L0005 ;2445 010500 +L2448: LD A,(HL) ;2448 7E + CP E ;2449 BB + INC HL ;244A 23 + JR NZ,L2452 ;244B 2005 + LD A,(HL) ;244D 7E + CP D ;244E BA + JP Z,L2471 ;244F CA7124 +L2452: OR A ;2452 B7 + JR Z,L245A ;2453 2805 + INC HL ;2455 23 + ADD HL,BC ;2456 09 + JP L2448 ;2457 C34824 + +L245A: LD C,7 ;245A 0E07 + DEC HL ;245C 2B + PUSH DE ;245D D5 + EX DE,HL ;245E EB + LD HL,L1619 ;245F 211916 + DEC HL ;2462 2B + DEC HL ;2463 2B + CALL L1796 ;2464 CD9617 + CALL L189C ;2467 CD9C18 + EX DE,HL ;246A EB + POP DE ;246B D1 + LD (HL),E ;246C 73 + INC HL ;246D 23 + LD (HL),D ;246E 72 + LD C,5 ;246F 0E05 +L2471: INC HL ;2471 23 + EX DE,HL ;2472 EB + POP HL ;2473 E1 + LD A,(HL) ;2474 7E + RET ;2475 C9 + +L2476: LD A,(HL) ;2476 7E + SUB 65 ;2477 D641 + CP 26 ;2479 FE1A + JP NC,L138E ;247B D28E13 + LD E,(HL) ;247E 5E + INC HL ;247F 23 + CALL L169A ;2480 CD9A16 + JR Z,L245A ;2483 28D5 + CALL L22AF ;2485 CDAF22 + CALL L1814 ;2488 CD1418 + CALL L169A ;248B CD9A16 + ADD HL,HL ;248E 29 + POP DE ;248F D1 + PUSH HL ;2490 E5 + LD HL,(L4634) ;2491 2A3446 +L2494: LD A,(HL) ;2494 7E + CP 0 ;2495 FE00 + JP Z,L138E ;2497 CA8E13 + CP E ;249A BB + JR Z,L24A4 ;249B 2807 + INC HL ;249D 23 + INC HL ;249E 23 + CALL L1633 ;249F CD3316 + JR L2494 ;24A2 18F0 + +L24A4: INC HL ;24A4 23 + LD E,(HL) ;24A5 5E + INC HL ;24A6 23 + PUSH HL ;24A7 E5 + PUSH DE ;24A8 D5 + LD D,32 ;24A9 1620 + CALL L2441 ;24AB CD4124 + POP HL ;24AE E1 + PUSH DE ;24AF D5 + PUSH HL ;24B0 E5 + LD HL,(L4646) ;24B1 2A4646 + LD DE,L464C ;24B4 114C46 + CALL L1662 ;24B7 CD6216 + JP Z,L13AC ;24BA CAAC13 + LD BC,LFFFA ;24BD 01FAFF + ADD HL,BC ;24C0 09 + LD (L4646),HL ;24C1 224646 + POP DE ;24C4 D1 + LD (HL),E ;24C5 73 + INC HL ;24C6 23 + POP DE ;24C7 D1 + LD BC,L0005 ;24C8 010500 + EX DE,HL ;24CB EB + CALL L1799 ;24CC CD9917 + EX DE,HL ;24CF EB + LD HL,(L4644) ;24D0 2A4446 + CALL L1799 ;24D3 CD9917 + POP HL ;24D6 E1 + CALL L22AF ;24D7 CDAF22 + CALL L1814 ;24DA CD1418 + CALL L1829 ;24DD CD2918 + JP NZ,L138E ;24E0 C28E13 + LD HL,(L4646) ;24E3 2A4646 + LD E,(HL) ;24E6 5E + INC HL ;24E7 23 + LD D,32 ;24E8 1620 + CALL L2441 ;24EA CD4124 + CALL L1799 ;24ED CD9917 + ADD HL,BC ;24F0 09 + LD (L4646),HL ;24F1 224646 + JP L237A ;24F4 C37A23 + +L24F7: CALL L162C ;24F7 CD2C16 + CP 40 ;24FA FE28 + JP Z,L2580 ;24FC CA8025 + PUSH HL ;24FF E5 + LD HL,L4954 ;2500 215449 + XOR A ;2503 AF + SBC HL,DE ;2504 ED52 + JP Z,L2539 ;2506 CA3925 + EX DE,HL ;2509 EB + LD (L4630),HL ;250A 223046 + LD HL,(L463A) ;250D 2A3A46 +L2510: CALL L17C4 ;2510 CDC417 + LD E,37 ;2513 1E25 + JP Z,L2530 ;2515 CA3025 + CALL L1633 ;2518 CD3316 + JP L2510 ;251B C31025 + + DB 01H,03H,00H,0EBH ;251E 010300EB Link 251E found at , $2513 + DB 21H,30H,46H,0CDH ;2522 213046CD + DB 96H,17H,0CDH,9CH ;2526 9617CD9C + DB 18H,0EBH,23H,23H ;252A 18EB2323 + DB 36H,0DH ;252E 360D +L2530: CALL L17F3 ;2530 CDF317 + EX DE,HL ;2533 EB + LD B,1 ;2534 0601 + POP HL ;2536 E1 + LD A,(HL) ;2537 7E + RET ;2538 C9 + +L2539: CALL READTIME ;2539 CD3B00 + EX DE,HL ;253C EB + OR A ;253D B7 + JR Z,L2542 ;253E 2802 + LD A,12 ;2540 3E0C +L2542: EXX ;2542 D9 + LD HL,L4559 ;2543 215945 + PUSH HL ;2546 E5 + EXX ;2547 D9 + LD DE,LF1F0 ;2548 11F0F1 + CALL L2560 ;254B CD6025 + LD DE,LFFC4 ;254E 11C4FF + CALL L255F ;2551 CD5F25 + LD A,L ;2554 7D + CALL L2569 ;2555 CD6925 + POP DE ;2558 D1 + LD BC,L0106 ;2559 010601 + POP HL ;255C E1 + LD A,(HL) ;255D 7E + RET ;255E C9 + +L255F: XOR A ;255F AF +L2560: ADD HL,DE ;2560 19 + JR NC,L2566 ;2561 3003 + INC A ;2563 3C + JR L2560 ;2564 18FA + +L2566: OR A ;2566 B7 + SBC HL,DE ;2567 ED52 +L2569: LD BC,L30F6 ;2569 01F630 +L256C: ADD A,C ;256C 81 + JR NC,L2572 ;256D 3003 + INC B ;256F 04 + JR L256C ;2570 18FA + +L2572: ADD A,58 ;2572 C63A + EX AF,AF' ;2574 08 + LD A,B ;2575 78 + EXX ;2576 D9 + LD (HL),A ;2577 77 + INC HL ;2578 23 + EX AF,AF' ;2579 08 + LD (HL),A ;257A 77 + INC HL ;257B 23 + LD (HL),13 ;257C 360D + EXX ;257E D9 + RET ;257F C9 + +L2580: LD BC,L0100 ;2580 010001 + JR L2588 ;2583 1803 + +L2585: LD BC,COLDSTART ;2585 010000 +L2588: INC HL ;2588 23 + CALL L20D9 ;2589 CDD920 + JP Z,L138E ;258C CA8E13 + PUSH HL ;258F E5 + LD L,C ;2590 69 + LD H,0 ;2591 2600 + LD C,E ;2593 4B + LD E,D ;2594 5A + LD B,H ;2595 44 + LD D,H ;2596 54 + PUSH BC ;2597 C5 + INC HL ;2598 23 + CALL L16C8 ;2599 CDC816 + POP HL ;259C E1 + ADD HL,DE ;259D 19 + EX DE,HL ;259E EB + LD A,(L20D6) ;259F 3AD620 + OR A ;25A2 B7 + JP NZ,L25B5 ;25A3 C2B525 + LD HL,L0005 ;25A6 210500 + CALL L16C8 ;25A9 CDC816 + POP HL ;25AC E1 + ADD HL,DE ;25AD 19 + EX DE,HL ;25AE EB + LD BC,L0005 ;25AF 010500 + JP L25C7 ;25B2 C3C725 + +L25B5: POP HL ;25B5 E1 +L25B6: LD A,D ;25B6 7A + OR E ;25B7 B3 + JP Z,L25C1 ;25B8 CAC125 + DEC DE ;25BB 1B + CALL L1633 ;25BC CD3316 + JR L25B6 ;25BF 18F5 + +L25C1: CALL L17F3 ;25C1 CDF317 + EX DE,HL ;25C4 EB + LD B,1 ;25C5 0601 +L25C7: LD HL,(L20D4) ;25C7 2AD420 + LD A,(HL) ;25CA 7E + RET ;25CB C9 + +L25CC: INC HL ;25CC 23 +L25CD: LD A,(HL) ;25CD 7E + CP 32 ;25CE FE20 + JR Z,L25CC ;25D0 28FA + SUB 65 ;25D2 D641 + CP 26 ;25D4 FE1A + LD A,(HL) ;25D6 7E + RET NC ;25D7 D0 + LD E,(HL) ;25D8 5E + LD D,32 ;25D9 1620 +L25DB: INC HL ;25DB 23 + LD A,(HL) ;25DC 7E + CP D ;25DD BA + JR Z,L25DB ;25DE 28FB + SUB 48 ;25E0 D630 + CP 10 ;25E2 FE0A + JR C,L25ED ;25E4 3807 + SUB 17 ;25E6 D611 + CP 26 ;25E8 FE1A + LD A,(HL) ;25EA 7E + CCF ;25EB 3F + RET C ;25EC D8 +L25ED: LD D,(HL) ;25ED 56 + LD A,70 ;25EE 3E46 + CP E ;25F0 BB + JR NZ,L25F9 ;25F1 2006 + LD A,78 ;25F3 3E4E + CP D ;25F5 BA + JP Z,L260E ;25F6 CA0E26 +L25F9: INC HL ;25F9 23 + LD A,(HL) ;25FA 7E + CP 32 ;25FB FE20 + JR Z,L25F9 ;25FD 28FA + SUB 48 ;25FF D630 + CP 10 ;2601 FE0A + JR C,L25F9 ;2603 38F4 + SUB 17 ;2605 D611 + CP 26 ;2607 FE1A + JR C,L25F9 ;2609 38EE +L260B: LD A,(HL) ;260B 7E + SCF ;260C 37 + RET ;260D C9 + +L260E: CALL L162C ;260E CD2C16 + SCF ;2611 37 + RET ;2612 C9 + +L2613: CALL L25CD ;2613 CDCD25 + JP NC,L138E ;2616 D28E13 + LD A,70 ;2619 3E46 + CP E ;261B BB + JP NZ,L260B ;261C C20B26 + LD A,78 ;261F 3E4E + CP D ;2621 BA + JP NZ,L260B ;2622 C20B26 + JP L138E ;2625 C38E13 + +L2628: DW L34F1 ;2628 F134 + DW L34F1 ;262A F134 + DW L351C ;262C 1C35 + DW L351C ;262E 1C35 + DW L3520 ;2630 2035 + DW L3520 ;2632 2035 + DW L3512 ;2634 1235 + DW L3504 ;2636 0435 + DW L3508 ;2638 0835 + DW L270B ;263A 0B27 + DW L270E ;263C 0E27 + DW L2711 ;263E 1127 + DW L2D4D ;2640 4D2D + DW L2D4A ;2642 4A2D + DW L2E59 ;2644 592E + DW L2F30 ;2646 302F + DW L3B0B ;2648 0B3B +L264A: DW L267A ;264A 7A26 + DW L26AC ;264C AC26 + DW L26D0 ;264E D026 + DW L2714 ;2650 1427 + DW L2723 ;2652 2327 + DW L273D ;2654 3D27 + DW L2776 ;2656 7627 + DW L2759 ;2658 5927 + DW L27B8 ;265A B827 + DW L27D9 ;265C D927 + DW L2801 ;265E 0128 + DW L2827 ;2660 2728 +L2662: DW L352F ;2662 2F35 + DW L35B0 ;2664 B035 + DW L36A2 ;2666 A236 + DW L36B1 ;2668 B136 + DW L3A25 ;266A 253A + DW L37A6 ;266C A637 + DW L340E ;266E 0E34 + DW L3A13 ;2670 133A + DW L38DF ;2672 DF38 + DW L2839 ;2674 3928 + DW L283E ;2676 3E28 + DW L36DC ;2678 DC36 +L267A: CALL L22AF ;267A CDAF22 + CALL L180F ;267D CD0F18 + PUSH DE ;2680 D5 + PUSH BC ;2681 C5 +L2682: CALL L169A ;2682 CD9A16 + INC L ;2685 2C + CALL L19A9 ;2686 CDA919 + CALL L169A ;2689 CD9A16 + ADD HL,HL ;268C 29 + POP BC ;268D C1 + EX (SP),HL ;268E E3 + EX DE,HL ;268F EB + LD A,C ;2690 79 + SUB L ;2691 95 + JP C,L26A8 ;2692 DAA826 + PUSH HL ;2695 E5 + LD C,A ;2696 4F + PUSH DE ;2697 D5 + CALL L1801 ;2698 CD0118 + ADD HL,DE ;269B 19 + EX DE,HL ;269C EB +L269D: CALL L1766 ;269D CD6617 + CALL L1651 ;26A0 CD5116 + CALL L189C ;26A3 CD9C18 + POP DE ;26A6 D1 + POP BC ;26A7 C1 +L26A8: POP HL ;26A8 E1 + JP L162D ;26A9 C32D16 + +L26AC: CALL L22AF ;26AC CDAF22 + CALL L180F ;26AF CD0F18 + PUSH DE ;26B2 D5 + PUSH BC ;26B3 C5 + CALL L169A ;26B4 CD9A16 + INC L ;26B7 2C + CALL L19A9 ;26B8 CDA919 + CALL L169A ;26BB CD9A16 + ADD HL,HL ;26BE 29 + POP BC ;26BF C1 + EX (SP),HL ;26C0 E3 + EX DE,HL ;26C1 EB + LD A,C ;26C2 79 + SUB L ;26C3 95 + JP C,L26A8 ;26C4 DAA826 + PUSH HL ;26C7 E5 + LD C,A ;26C8 4F + PUSH DE ;26C9 D5 + CALL L1801 ;26CA CD0118 + JP L269D ;26CD C39D26 + +L26D0: CALL L22AF ;26D0 CDAF22 + CALL L180F ;26D3 CD0F18 + PUSH DE ;26D6 D5 + PUSH BC ;26D7 C5 + CALL L169A ;26D8 CD9A16 + INC L ;26DB 2C + CALL L19A9 ;26DC CDA919 + LD A,E ;26DF 7B + DEC A ;26E0 3D + JP Z,L2708 ;26E1 CA0827 + JP C,L2708 ;26E4 DA0827 + POP BC ;26E7 C1 + LD E,A ;26E8 5F + LD A,C ;26E9 79 + SUB E ;26EA 93 + JP NC,L26F0 ;26EB D2F026 + XOR A ;26EE AF + LD E,C ;26EF 59 +L26F0: LD C,E ;26F0 4B + LD B,D ;26F1 42 + POP DE ;26F2 D1 + PUSH DE ;26F3 D5 + PUSH AF ;26F4 F5 + PUSH BC ;26F5 C5 + CALL L1801 ;26F6 CD0118 + POP BC ;26F9 C1 + CALL L1766 ;26FA CD6617 + CALL L1651 ;26FD CD5116 + CALL L189C ;2700 CD9C18 + POP AF ;2703 F1 + LD C,A ;2704 4F + LD B,0 ;2705 0600 + PUSH BC ;2707 C5 +L2708: JP L2682 ;2708 C38226 + +L270B: JP L138E ;270B C38E13 + +L270E: JP L138E ;270E C38E13 + +L2711: JP L138E ;2711 C38E13 + +L2714: CALL L22AF ;2714 CDAF22 + CALL L180F ;2717 CD0F18 + CALL L169A ;271A CD9A16 + ADD HL,HL ;271D 29 + PUSH HL ;271E E5 + LD A,C ;271F 79 + JP L278A ;2720 C38A27 + +L2723: CALL L19A9 ;2723 CDA919 + CALL L169A ;2726 CD9A16 + ADD HL,HL ;2729 29 + PUSH HL ;272A E5 + LD A,E ;272B 7B + CP 32 ;272C FE20 + JR NC,L2732 ;272E 3002 + LD E,13 ;2730 1E0D +L2732: LD HL,L4400 ;2732 210044 + PUSH HL ;2735 E5 + LD (HL),E ;2736 73 + INC HL ;2737 23 + LD (HL),13 ;2738 360D + JP L2752 ;273A C35227 + +L273D: CALL L22AF ;273D CDAF22 + CALL L1814 ;2740 CD1418 + CALL L169A ;2743 CD9A16 + ADD HL,HL ;2746 29 + PUSH HL ;2747 E5 + LD HL,(L4644) ;2748 2A4446 + LD DE,L4400 ;274B 110044 + PUSH DE ;274E D5 + CALL L322D ;274F CD2D32 +L2752: POP HL ;2752 E1 + CALL L18C4 ;2753 CDC418 + POP HL ;2756 E1 + LD A,(HL) ;2757 7E + RET ;2758 C9 + +L2759: CALL L22AF ;2759 CDAF22 + CALL L180F ;275C CD0F18 + CALL L169A ;275F CD9A16 + ADD HL,HL ;2762 29 + PUSH HL ;2763 E5 + CALL L1801 ;2764 CD0118 + EX DE,HL ;2767 EB + CALL L190D ;2768 CD0D19 + LD (HL),B ;276B 70 + DAA ;276C 27 + JP L26A8 ;276D C3A826 + + DB 11H,19H,16H,0C3H ;2770 111916C3 Link 2770 found at , $276B + DB 77H,23H ;2774 7723 +L2776: CALL L22AF ;2776 CDAF22 + CALL L180F ;2779 CD0F18 + CALL L169A ;277C CD9A16 + ADD HL,HL ;277F 29 + PUSH HL ;2780 E5 + CALL L1801 ;2781 CD0118 + LD A,(DE) ;2784 1A + CP 13 ;2785 FE0D + JP Z,L1398 ;2787 CA9813 +L278A: OR A ;278A B7 + LD BC,L8000 ;278B 010080 + CALL NZ,L27A6 ;278E C4A627 + LD HL,(L4644) ;2791 2A4446 + LD DE,USER ;2794 110300 + LD (HL),B ;2797 70 + INC HL ;2798 23 +L2799: LD (HL),D ;2799 72 + INC HL ;279A 23 + DEC E ;279B 1D + JR NZ,L2799 ;279C 20FB + LD (HL),C ;279E 71 + LD BC,L0005 ;279F 010500 + POP HL ;27A2 E1 + JP L162D ;27A3 C32D16 + +L27A6: LD E,8 ;27A6 1E08 +L27A8: OR A ;27A8 B7 + JP M,L27B1 ;27A9 FAB127 + RLA ;27AC 17 + DEC E ;27AD 1D + JP L27A8 ;27AE C3A827 + +L27B1: LD C,A ;27B1 4F + LD A,192 ;27B2 3EC0 + ADD A,E ;27B4 83 + LD B,A ;27B5 47 + RET ;27B6 C9 + +L27B7: DB 00H ;27B7 00 +L27B8: CALL L198C ;27B8 CD8C19 + CALL L169A ;27BB CD9A16 + ADD HL,HL ;27BE 29 + PUSH HL ;27BF E5 + LD A,(L27B7) ;27C0 3AB727 + OR A ;27C3 B7 + JP NZ,L27D1 ;27C4 C2D127 + LD HL,(04563H) ;27C7 2A6345 + DEC HL ;27CA 2B + CALL L1662 ;27CB CD6216 + JP NC,L27D4 ;27CE D2D427 +L27D1: LD A,(DE) ;27D1 1A + JR L27D6 ;27D2 1802 + +L27D4: LD A,32 ;27D4 3E20 +L27D6: JP L278A ;27D6 C38A27 + +L27D9: CALL L19A9 ;27D9 CDA919 + LD B,19 ;27DC 0613 + CALL L169A ;27DE CD9A16 + ADD HL,HL ;27E1 29 + LD A,39 ;27E2 3E27 + ADD A,A ;27E4 87 + SUB E ;27E5 93 + JP C,L1398 ;27E6 DA9813 + LD A,(L457D) ;27E9 3A7D45 + OR A ;27EC B7 + LD A,(CHARCOUNT) ;27ED 3A9411 + JR Z,L27F7 ;27F0 2805 + LD B,32 ;27F2 0620 + LD A,(L3D26) ;27F4 3A263D +L27F7: LD D,A ;27F7 57 + LD A,E ;27F8 7B + SUB D ;27F9 92 + JP NC,L27FE ;27FA D2FE27 + XOR A ;27FD AF +L27FE: JP L280B ;27FE C30B28 + +L2801: CALL L19A9 ;2801 CDA919 + LD B,32 ;2804 0620 + CALL L169A ;2806 CD9A16 + ADD HL,HL ;2809 29 + LD A,E ;280A 7B +L280B: PUSH HL ;280B E5 + LD HL,L4400 ;280C 210044 + PUSH HL ;280F E5 + LD C,A ;2810 4F +L2811: OR A ;2811 B7 + JP Z,L281B ;2812 CA1B28 + LD (HL),B ;2815 70 + INC HL ;2816 23 + DEC A ;2817 3D + JP L2811 ;2818 C31128 + +L281B: LD (HL),13 ;281B 360D + LD B,0 ;281D 0600 + POP HL ;281F E1 + CALL L18DF ;2820 CDDF18 + POP HL ;2823 E1 + JP L162D ;2824 C32D16 + +L2827: PUSH HL ;2827 E5 + CALL L173C ;2828 CD3C17 + LD DE,L4400 ;282B 110044 + PUSH DE ;282E D5 + CALL L16F7 ;282F CDF716 + POP HL ;2832 E1 + CALL L22AF ;2833 CDAF22 + POP HL ;2836 E1 + LD A,(HL) ;2837 7E + RET ;2838 C9 + +L2839: LD A,(DE) ;2839 1A + OR 128 ;283A F680 + LD (DE),A ;283C 12 + RET ;283D C9 + +L283E: LD A,(DE) ;283E 1A + LD DE,L161E ;283F 111E16 + OR A ;2842 B7 + JP P,L2851 ;2843 F25128 + LD DE,L1614 ;2846 111416 + CP 128 ;2849 FE80 + JP NZ,L2851 ;284B C25128 + LD DE,L1619 ;284E 111916 +L2851: JP L181A ;2851 C31A18 + +L2854: JP COLDSTART ;2854 C30000 + +L2857: CALL L2613 ;2857 CD1326 + CALL L2436 ;285A CD3624 + LD (L4801),HL ;285D 220148 + CALL L197B ;2860 CD7B19 + CALL KEYBOARD ;2863 CD1B00 + CP 27 ;2866 FE1B + JP Z,L124B ;2868 CA4B12 + LD HL,L45A2 ;286B 21A245 + OR A ;286E B7 + JP NZ,L28A3 ;286F C2A328 + LD (L45A4),A ;2872 32A445 +L2875: LD A,(L4571) ;2875 3A7145 + LD B,48 ;2878 0630 + OR A ;287A B7 + JP Z,L2880 ;287B CA8028 + LD B,13 ;287E 060D +L2880: LD (HL),B ;2880 70 + INC HL ;2881 23 + LD (HL),13 ;2882 360D + DEC HL ;2884 2B + CALL L18C7 ;2885 CDC718 + LD A,(L4571) ;2888 3A7145 + OR A ;288B B7 + JP NZ,L2898 ;288C C29828 + CALL L1801 ;288F CD0118 + EX DE,HL ;2892 EB + CALL L190D ;2893 CD0D19 +L2896: OR D ;2896 B2 + ADD HL,DE ;2897 19 +L2898: CALL L1976 ;2898 CD7619 + CALL L1B6A ;289B CD6A1B + SBC A,L ;289E 9D + INC DE ;289F 13 + JP L19B2 ;28A0 C3B219 + +L28A3: LD B,A ;28A3 47 + LD A,(L45A4) ;28A4 3AA445 + CP B ;28A7 B8 + JP Z,L2875 ;28A8 CA7528 + LD A,B ;28AB 78 + LD (L45A4),A ;28AC 32A445 + JP L2880 ;28AF C38028 + +L28B2: CALL L198C ;28B2 CD8C19 + CALL L169A ;28B5 CD9A16 + ADD HL,HL ;28B8 29 + LD (L4801),HL ;28B9 220148 + LD HL,L19B2 ;28BC 21B219 + PUSH HL ;28BF E5 + EX DE,HL ;28C0 EB + JP (HL) ;28C1 E9 + +L28C2: CALL L168B ;28C2 CD8B16 + LD C,L ;28C5 4D + RET C ;28C6 D8 + JR Z,L2896 ;28C7 28CD + SBC A,D ;28C9 9A + LD D,65 ;28CA 1641 + CALL L169A ;28CC CD9A16 + LD E,B ;28CF 58 + LD (L4801),HL ;28D0 220148 + LD HL,(04561H) ;28D3 2A6145 + JR L28F5 ;28D6 181D + + DB 0CDH,8CH,19H,22H ;28D8 CD8C1922 Link 28D8 found at , $28C6 + DB 01H,48H,2AH,61H ;28DC 01482A61 + DB 45H,0CDH,62H,16H ;28E0 45CD6216 + DB 0DAH,93H,13H,2AH ;28E4 DA93132A + DB 44H,46H,01H,0C8H ;28E8 444601C8 + DB 00H,09H,0CDH,62H ;28EC 0009CD62 + DB 16H,0D2H,93H,13H ;28F0 16D29313 + DB 0EBH ;28F4 EB +L28F5: LD (04563H),HL ;28F5 226345 + LD SP,HL ;28F8 F9 + JP L19B2 ;28F9 C3B219 + +L28FC: LD HL,(L47FF) ;28FC 2AFF47 + LD A,L ;28FF 7D + OR H ;2900 B4 + JP NZ,L13BB ;2901 C2BB13 + LD A,(L4565) ;2904 3A6545 + OR A ;2907 B7 + JP Z,L13BB ;2908 CABB13 + PUSH AF ;290B F5 + CALL L13C1 ;290C CDC113 + LD BC,CRLF2 ;290F 010600 + LD DE,L47FD ;2912 11FD47 + LD HL,L4566 ;2915 216645 + CALL L1799 ;2918 CD9917 + POP AF ;291B F1 + LD HL,(L4801) ;291C 2A0148 + OR A ;291F B7 + JP M,L1E7C ;2920 FA7C1E + DEC A ;2923 3D + JP Z,L19B2 ;2924 CAB219 + JP L19E1 ;2927 C3E119 + +L292A: LD A,1 ;292A 3E01 + JR L292F ;292C 1801 + +L292E: XOR A ;292E AF +L292F: PUSH AF ;292F F5 + CALL L19A9 ;2930 CDA919 + PUSH DE ;2933 D5 + CALL L169A ;2934 CD9A16 + INC L ;2937 2C + CALL L19A9 ;2938 CDA919 + LD (L4801),HL ;293B 220148 + LD A,E ;293E 7B +L293F: SUB 50 ;293F D632 + JR NC,L293F ;2941 30FC + ADD A,50 ;2943 C632 + LD E,A ;2945 5F + POP BC ;2946 C1 + LD A,C ;2947 79 +L2948: SUB 80 ;2948 D650 + JR NC,L2948 ;294A 30FC + ADD A,80 ;294C C650 + LD C,A ;294E 4F + XOR A ;294F AF + SRL C ;2950 CB39 + JR NC,L2962 ;2952 300E + SRL E ;2954 CB3B + JR NC,L295C ;2956 3004 + ADD A,4 ;2958 C604 +L295A: ADD A,2 ;295A C602 +L295C: ADD A,1 ;295C C601 +L295E: ADD A,1 ;295E C601 + JR L2968 ;2960 1806 + +L2962: SRL E ;2962 CB3B + JR NC,L295E ;2964 30F8 + JR L295A ;2966 18F2 + +L2968: PUSH AF ;2968 F5 + LD HL,VIDRAM ;2969 2100D0 + LD A,40 ;296C 3E28 +L296E: ADD HL,DE ;296E 19 + DEC A ;296F 3D + JR NZ,L296E ;2970 20FC + ADD HL,BC ;2972 09 + LD A,(HL) ;2973 7E + CP 240 ;2974 FEF0 + JR NC,L297A ;2976 3002 + LD A,240 ;2978 3EF0 +L297A: POP BC ;297A C1 + LD C,A ;297B 4F + POP AF ;297C F1 + OR A ;297D B7 + LD A,B ;297E 78 + JR Z,L2984 ;297F 2803 + OR C ;2981 B1 + JR L2986 ;2982 1802 + +L2984: CPL ;2984 2F + AND C ;2985 A1 +L2986: CP 240 ;2986 FEF0 + JR NZ,L298B ;2988 2001 + XOR A ;298A AF +L298B: LD (HL),A ;298B 77 + JP L19B2 ;298C C3B219 + +L298F: XOR A ;298F AF + JP L2A38 ;2990 C3382A + +L2993: LD A,(STACK) ;2993 3AF010 + CP 2 ;2996 FE02 + JP NZ,L2A66 ;2998 C2662A + CALL L2B08 ;299B CD082B + CALL L2B48 ;299E CD482B + CALL CHECK ;29A1 CD2D00 + PUSH AF ;29A4 F5 + CALL L2B60 ;29A5 CD602B + POP AF ;29A8 F1 + JP C,L2B41 ;29A9 DA412B + LD DE,L29B5 ;29AC 11B529 + CALL L1357 ;29AF CD5713 + JP L19B2 ;29B2 C3B219 + +L29B5: DB "OK" ;29B5 4F4B + DB 0DH ;29B7 0D +L29B8: DB 00H ;29B8 00 +L29B9: DW 00000H ;29B9 0000 +L29BB: EX DE,HL ;29BB EB + CALL L2B9C ;29BC CD9C2B + LD HL,L0D02 ;29BF 21020D + LD (STACK),HL ;29C2 22F010 + XOR A ;29C5 AF + PUSH AF ;29C6 F5 + LD HL,L4806 ;29C7 210648 +L29CA: LD (FILESTART),HL ;29CA 220411 + LD HL,COLDSTART ;29CD 210000 + LD (EXECUTE),HL ;29D0 220611 + LD (L1108),HL ;29D3 220811 + EX DE,HL ;29D6 EB + CALL L1829 ;29D7 CD2918 + JP Z,L29FB ;29DA CAFB29 + CALL L2383 ;29DD CD8323 + LD A,D ;29E0 7A + OR A ;29E1 B7 + JP Z,L138E ;29E2 CA8E13 + LD A,C ;29E5 79 + CP 17 ;29E6 FE11 + JP NC,L138E ;29E8 D28E13 + CALL L1801 ;29EB CD0118 + PUSH HL ;29EE E5 + LD HL,HEADBUFFER ;29EF 21F110 + EX DE,HL ;29F2 EB + CALL L1799 ;29F3 CD9917 + EX DE,HL ;29F6 EB + ADD HL,BC ;29F7 09 + LD (HL),13 ;29F8 360D + POP HL ;29FA E1 +L29FB: LD (L4801),HL ;29FB 220148 + POP AF ;29FE F1 + JP NZ,L2BC6 ;29FF C2C62B + LD HL,(L29B9) ;2A02 2AB929 + LD (L1108),HL ;2A05 220811 + LD A,(L29B8) ;2A08 3AB829 + OR A ;2A0B B7 + JP NZ,L124B ;2A0C C24B12 + LD HL,(L4634) ;2A0F 2A3446 + LD DE,L4806 ;2A12 110648 + EX DE,HL ;2A15 EB + CALL L1668 ;2A16 CD6816 + LD (FILESIZE),HL ;2A19 220211 + CALL PHEAD ;2A1C CD2100 + JP C,L1385 ;2A1F DA8513 + CALL CRLF ;2A22 CD0900 + CALL L2B48 ;2A25 CD482B + CALL PDATA ;2A28 CD2400 + PUSH AF ;2A2B F5 + CALL L2B60 ;2A2C CD602B + POP AF ;2A2F F1 + JP NC,L19B2 ;2A30 D2B219 + JP L1385 ;2A33 C38513 + +L2A36: LD A,1 ;2A36 3E01 +L2A38: LD (L4592),A ;2A38 329245 + XOR A ;2A3B AF + LD (L458E),A ;2A3C 328E45 +L2A3F: CALL L1829 ;2A3F CD2918 + JP Z,L2A63 ;2A42 CA632A + CALL L2383 ;2A45 CD8323 + CALL L180F ;2A48 CD0F18 + CALL L1829 ;2A4B CD2918 + JP NZ,L138E ;2A4E C28E13 + CALL L1801 ;2A51 CD0118 + LD A,C ;2A54 79 + CP 17 ;2A55 FE11 + JP NC,L138E ;2A57 D28E13 + LD A,1 ;2A5A 3E01 + LD (L458E),A ;2A5C 328E45 + LD (L458F),DE ;2A5F ED538F45 +L2A63: LD (L4801),HL ;2A63 220148 +L2A66: CALL LHEAD ;2A66 CD2700 + JP C,L2B41 ;2A69 DA412B + CALL L2B0D ;2A6C CD0D2B + LD HL,STACK ;2A6F 21F010 + LD A,(HL) ;2A72 7E + OR A ;2A73 B7 + JP Z,L2A66 ;2A74 CA662A + CP 4 ;2A77 FE04 + JP NC,L2A66 ;2A79 D2662A + LD A,(L458E) ;2A7C 3A8E45 + OR A ;2A7F B7 + JP Z,L2A99 ;2A80 CA992A + LD HL,(L458F) ;2A83 2A8F45 + LD DE,HEADBUFFER ;2A86 11F110 + LD C,16 ;2A89 0E10 +L2A8B: LD A,(DE) ;2A8B 1A + CP (HL) ;2A8C BE + JP NZ,L2A66 ;2A8D C2662A + CP 13 ;2A90 FE0D + JR Z,L2A99 ;2A92 2805 + INC HL ;2A94 23 + INC DE ;2A95 13 + DEC C ;2A96 0D + JR NZ,L2A8B ;2A97 20F2 +L2A99: LD A,(STACK) ;2A99 3AF010 + LD C,A ;2A9C 4F + LD A,(L4592) ;2A9D 3A9245 + OR A ;2AA0 B7 + JP Z,L2993 ;2AA1 CA9329 + CP 2 ;2AA4 FE02 + JP NZ,L2AB1 ;2AA6 C2B12A + DEC C ;2AA9 0D + CP C ;2AAA B9 + JP Z,L2BEA ;2AAB CAEA2B + JP L2A66 ;2AAE C3662A + +L2AB1: LD A,C ;2AB1 79 + CP 1 ;2AB2 FE01 + JP Z,L2B74 ;2AB4 CA742B + CP 2 ;2AB7 FE02 + JP NZ,L2A66 ;2AB9 C2662A + CALL L2B9C ;2ABC CD9C2B + LD BC,L0064 ;2ABF 016400 + LD HL,L4806 ;2AC2 210648 + CALL L1742 ;2AC5 CD4217 + EX DE,HL ;2AC8 EB + LD HL,(FILESIZE) ;2AC9 2A0211 + CALL L1662 ;2ACC CD6216 + JP NC,L1393 ;2ACF D29313 + CALL L2B12 ;2AD2 CD122B + LD A,(L1108) ;2AD5 3A0811 + LD (L29B8),A ;2AD8 32B829 + LD HL,L4806 ;2ADB 210648 + LD (FILESTART),HL ;2ADE 220411 + CALL LDATA ;2AE1 CD2A00 + JP C,L2B3C ;2AE4 DA3C2B + LD DE,L4806 ;2AE7 110648 + LD HL,(FILESIZE) ;2AEA 2A0211 + ADD HL,DE ;2AED 19 + LD (L4634),HL ;2AEE 223446 + CALL L2B60 ;2AF1 CD602B + CALL L1857 ;2AF4 CD5718 + CALL L187C ;2AF7 CD7C18 + LD A,(L1109) ;2AFA 3A0911 + OR A ;2AFD B7 + JP Z,L19B2 ;2AFE CAB219 + LD HL,L2B07 ;2B01 21072B + JP L1CCB ;2B04 C3CB1C + +L2B07: DB 0DH ;2B07 0D +L2B08: LD DE,L2B31 ;2B08 11312B + JR L2B15 ;2B0B 1808 + +L2B0D: LD DE,L2B21 ;2B0D 11212B + JR L2B15 ;2B10 1803 + +L2B12: LD DE,L2B28 ;2B12 11282B +L2B15: CALL L1357 ;2B15 CD5713 + LD DE,HEADBUFFER ;2B18 11F110 + CALL MESSAGE ;2B1B CD1500 + JP CRLF ;2B1E C30900 + +L2B21: DB "FOUND " ;2B21 464F554E4420 + DB 0DH ;2B27 0D +L2B28: DB "LOADING " ;2B28 4C4F4144494E4720 + DB 0DH ;2B30 0D +L2B31: DB "VERIFYING " ;2B31 564552494659494E4720 + DB 0DH ;2B3B 0D +L2B3C: PUSH AF ;2B3C F5 + CALL L1832 ;2B3D CD3218 + POP AF ;2B40 F1 +L2B41: DEC A ;2B41 3D + JP Z,L1398 ;2B42 CA9813 + JP L1385 ;2B45 C38513 + +L2B48: LD HL,L4806 ;2B48 210648 +L2B4B: LD E,(HL) ;2B4B 5E + INC HL ;2B4C 23 + LD D,(HL) ;2B4D 56 + LD A,E ;2B4E 7B + OR D ;2B4F B2 + RET Z ;2B50 C8 + PUSH DE ;2B51 D5 + DEC HL ;2B52 2B + LD A,E ;2B53 7B + SUB L ;2B54 95 + LD E,A ;2B55 5F + LD A,D ;2B56 7A + SBC A,H ;2B57 9C + LD D,A ;2B58 57 + LD (HL),E ;2B59 73 + INC HL ;2B5A 23 + LD (HL),D ;2B5B 72 + POP HL ;2B5C E1 + JP L2B4B ;2B5D C34B2B + +L2B60: LD HL,L4806 ;2B60 210648 +L2B63: LD E,(HL) ;2B63 5E + INC HL ;2B64 23 + LD D,(HL) ;2B65 56 + LD A,E ;2B66 7B + OR D ;2B67 B2 + RET Z ;2B68 C8 + DEC HL ;2B69 2B + EX DE,HL ;2B6A EB + ADD HL,DE ;2B6B 19 + EX DE,HL ;2B6C EB + LD (HL),E ;2B6D 73 + INC HL ;2B6E 23 + LD (HL),D ;2B6F 72 + EX DE,HL ;2B70 EB + JP L2B63 ;2B71 C3632B + +L2B74: LD HL,(FILESTART) ;2B74 2A0411 + EX DE,HL ;2B77 EB + LD HL,(04563H) ;2B78 2A6345 + DEC HL ;2B7B 2B + CALL L1662 ;2B7C CD6216 + JP NC,L13B6 ;2B7F D2B613 + LD HL,(FILESIZE) ;2B82 2A0211 + ADD HL,DE ;2B85 19 + JP C,L1393 ;2B86 DA9313 + EX DE,HL ;2B89 EB + LD HL,(04561H) ;2B8A 2A6145 + CALL L1662 ;2B8D CD6216 + JP C,L1393 ;2B90 DA9313 + CALL L2B12 ;2B93 CD122B + CALL LDATA ;2B96 CD2A00 + JP L19B2 ;2B99 C3B219 + +L2B9C: PUSH HL ;2B9C E5 + LD HL,(L47FF) ;2B9D 2AFF47 + LD A,H ;2BA0 7C + OR L ;2BA1 B5 + JP NZ,L138E ;2BA2 C28E13 + POP HL ;2BA5 E1 + RET ;2BA6 C9 + +L2BA7: LD A,(L457A) ;2BA7 3A7A45 + OR A ;2BAA B7 + JP NZ,L13B1 ;2BAB C2B113 + INC A ;2BAE 3C + PUSH AF ;2BAF F5 + EX DE,HL ;2BB0 EB + LD HL,L0D03 ;2BB1 21030D + LD (STACK),HL ;2BB4 22F010 + LD HL,L0080 ;2BB7 218000 + LD (FILESIZE),HL ;2BBA 220211 + LD HL,L45AE ;2BBD 21AE45 + LD (L457B),HL ;2BC0 227B45 + JP L29CA ;2BC3 C3CA29 + +L2BC6: CALL PHEAD ;2BC6 CD2100 + JP C,L1385 ;2BC9 DA8513 + CALL CRLF ;2BCC CD0900 + LD A,1 ;2BCF 3E01 + LD (L457A),A ;2BD1 327A45 + JP L19B2 ;2BD4 C3B219 + +L2BD7: LD A,(L457A) ;2BD7 3A7A45 + OR A ;2BDA B7 + JP NZ,L13B1 ;2BDB C2B113 + LD A,2 ;2BDE 3E02 + LD (L4592),A ;2BE0 329245 + XOR A ;2BE3 AF + LD (L458E),A ;2BE4 328E45 + JP L2A3F ;2BE7 C33F2A + +L2BEA: LD (L457A),A ;2BEA 327A45 + CALL L2B12 ;2BED CD122B + LD HL,L45AE ;2BF0 21AE45 + LD (FILESTART),HL ;2BF3 220411 + LD HL,L0080 ;2BF6 218000 + LD (FILESIZE),HL ;2BF9 220211 + LD HL,L462E ;2BFC 212E46 + LD (L457B),HL ;2BFF 227B45 + JP L19B2 ;2C02 C3B219 + +L2C05: LD A,(L457A) ;2C05 3A7A45 + OR A ;2C08 B7 + JP Z,L1B27 ;2C09 CA271B + PUSH HL ;2C0C E5 + DEC A ;2C0D 3D + JP NZ,L2C25 ;2C0E C2252C + LD HL,(L457B) ;2C11 2A7B45 + LD DE,L462E ;2C14 112E46 + CALL L1662 ;2C17 CD6216 + JP NC,L2C2D ;2C1A D22D2C +L2C1D: LD (HL),255 ;2C1D 36FF + CALL PDATA ;2C1F CD2400 + JP C,L1385 ;2C22 DA8513 +L2C25: XOR A ;2C25 AF + LD (L457A),A ;2C26 327A45 + POP HL ;2C29 E1 + JP L1B27 ;2C2A C3271B + +L2C2D: CALL PDATA ;2C2D CD2400 + JP C,L1385 ;2C30 DA8513 + LD HL,L45AE ;2C33 21AE45 + JP L2C1D ;2C36 C31D2C + +L2C39: CALL L168B ;2C39 CD8B16 + CP A ;2C3C BF + LD C,C ;2C3D 49 + INC L ;2C3E 2C + CALL L168B ;2C3F CD8B16 + LD D,H ;2C42 54 + LD C,C ;2C43 49 + INC L ;2C44 2C + LD A,1 ;2C45 3E01 + JR L2C4A ;2C47 1801 + + DB 0AFH ;2C49 AF +L2C4A: LD (L457D),A ;2C4A 327D45 + RET ;2C4D C9 + + DB 3AH,7AH,45H,0FEH ;2C4E 3A7A45FE Link 2C4E found at , $1CAA + DB 01H,0C2H,0B1H,13H ;2C52 01C2B113 + DB 2AH,7BH,45H,0D5H ;2C56 2A7B45D5 + DB 11H,2EH,46H,0CDH ;2C5A 112E46CD + DB 62H,16H,0DAH,6CH ;2C5E 6216DA6C + DB 2CH,0CDH,24H,00H ;2C62 2CCD2400 + DB 0DAH,85H,13H,21H ;2C66 DA851321 + DB 0AEH,45H,0D1H,1AH ;2C6A AE45D11A + DB 77H,23H,13H,0FEH ;2C6E 772313FE + DB 0DH,0C2H,59H,2CH ;2C72 0DC2592C + DB 22H,7BH,45H,0C9H ;2C76 227B45C9 +L2C7A: LD C,A ;2C7A 4F + CALL L2CD0 ;2C7B CDD02C + RET Z ;2C7E C8 + PUSH DE ;2C7F D5 + LD C,0 ;2C80 0E00 + CP 2 ;2C82 FE02 + JP NZ,L13B1 ;2C84 C2B113 + LD (L4592),A ;2C87 329245 + LD HL,(L457B) ;2C8A 2A7B45 +L2C8D: PUSH DE ;2C8D D5 + LD DE,L462E ;2C8E 112E46 + CALL L1662 ;2C91 CD6216 + JP C,L2CA7 ;2C94 DAA72C + CALL LDATA ;2C97 CD2A00 + JP NC,L2CA4 ;2C9A D2A42C + DEC A ;2C9D 3D + JP Z,L1398 ;2C9E CA9813 + JP L1385 ;2CA1 C38513 + +L2CA4: LD HL,L45AE ;2CA4 21AE45 +L2CA7: LD A,(HL) ;2CA7 7E + LD B,A ;2CA8 47 + CP 255 ;2CA9 FEFF + JP NZ,L2CB6 ;2CAB C2B62C + LD A,(L4592) ;2CAE 3A9245 + CP 2 ;2CB1 FE02 + JP Z,L13B1 ;2CB3 CAB113 +L2CB6: XOR A ;2CB6 AF + LD (L4592),A ;2CB7 329245 + LD A,B ;2CBA 78 + POP DE ;2CBB D1 + LD (DE),A ;2CBC 12 + INC HL ;2CBD 23 + INC DE ;2CBE 13 + INC C ;2CBF 0C + CP 13 ;2CC0 FE0D + JP NZ,L2C8D ;2CC2 C28D2C + DEC C ;2CC5 0D + POP DE ;2CC6 D1 + LD (L457B),HL ;2CC7 227B45 + POP HL ;2CCA E1 + INC HL ;2CCB 23 + INC HL ;2CCC 23 + INC HL ;2CCD 23 + PUSH HL ;2CCE E5 + RET ;2CCF C9 + +L2CD0: LD A,(L457D) ;2CD0 3A7D45 + OR A ;2CD3 B7 + LD A,(L457A) ;2CD4 3A7A45 + RET ;2CD7 C9 + +L2CD8: CALL L19A9 ;2CD8 CDA919 + PUSH DE ;2CDB D5 + CALL L169A ;2CDC CD9A16 + INC L ;2CDF 2C + CALL L2613 ;2CE0 CD1326 + CALL L2436 ;2CE3 CD3624 + LD A,B ;2CE6 78 + OR A ;2CE7 B7 + JP NZ,L139D ;2CE8 C29D13 + LD (L4801),HL ;2CEB 220148 + CALL L197B ;2CEE CD7B19 + POP DE ;2CF1 D1 + LD A,E ;2CF2 7B + CP 240 ;2CF3 FEF0 + JP NC,L1398 ;2CF5 D29813 + LD (L2CFC),A ;2CF8 32FC2C + IN A,(PTRDATA) ;2CFB DBFF + OR A ;2CFD B7 + LD B,A ;2CFE 47 + JP Z,L2D0F ;2CFF CA0F2D + LD A,200 ;2D02 3EC8 +L2D04: BIT 7,B ;2D04 CB78 + JP NZ,L2D11 ;2D06 C2112D + SLA B ;2D09 CB20 + DEC A ;2D0B 3D + JP L2D04 ;2D0C C3042D + +L2D0F: LD A,128 ;2D0F 3E80 +L2D11: LD HL,(L4644) ;2D11 2A4446 + LD (HL),A ;2D14 77 + INC HL ;2D15 23 + XOR A ;2D16 AF + LD (HL),A ;2D17 77 + INC HL ;2D18 23 + LD (HL),A ;2D19 77 + INC HL ;2D1A 23 + LD (HL),A ;2D1B 77 + INC HL ;2D1C 23 + LD (HL),B ;2D1D 70 + LD D,A ;2D1E 57 + LD E,A ;2D1F 5F + LD B,A ;2D20 47 + LD C,5 ;2D21 0E05 + CALL L1976 ;2D23 CD7619 + CALL L1B6A ;2D26 CD6A1B + SBC A,L ;2D29 9D + INC DE ;2D2A 13 + JP L19B2 ;2D2B C3B219 + +L2D2E: CALL L19A9 ;2D2E CDA919 + LD A,E ;2D31 7B + CP 240 ;2D32 FEF0 + JP NC,L1398 ;2D34 D29813 + LD (L2D43),A ;2D37 32432D + CALL L169A ;2D3A CD9A16 + INC L ;2D3D 2C + CALL L19A9 ;2D3E CDA919 + LD A,E ;2D41 7B + OUT (PTRDATA),A ;2D42 D3FF + JP L19B5 ;2D44 C3B519 + +L2D47: DW 032AFH ;2D47 AF32 +L2D49: DB 7AH ;2D49 7A +L2D4A: XOR A ;2D4A AF + JR L2D4F ;2D4B 1802 + +L2D4D: LD A,128 ;2D4D 3E80 +L2D4F: PUSH DE ;2D4F D5 + XOR (HL) ;2D50 AE + CPL ;2D51 2F + LD C,A ;2D52 4F + LD A,(DE) ;2D53 1A + AND 128 ;2D54 E680 + LD B,A ;2D56 47 + XOR C ;2D57 A9 + CPL ;2D58 2F + AND 128 ;2D59 E680 + LD C,A ;2D5B 4F +L2D5C: PUSH BC ;2D5C C5 + LD B,(HL) ;2D5D 46 + RES 7,B ;2D5E CBB8 + LD A,(DE) ;2D60 1A + AND 127 ;2D61 E67F + CP B ;2D63 B8 + JP NC,L2D72 ;2D64 D2722D + POP BC ;2D67 C1 + EX DE,HL ;2D68 EB + LD A,B ;2D69 78 + XOR C ;2D6A A9 + CPL ;2D6B 2F + AND 128 ;2D6C E680 + LD B,A ;2D6E 47 + JP L2D5C ;2D6F C35C2D + +L2D72: LD C,A ;2D72 4F + ADD A,64 ;2D73 C640 + LD (L2D49),A ;2D75 32492D + LD A,C ;2D78 79 + SUB B ;2D79 90 + POP BC ;2D7A C1 + LD (L2D47),BC ;2D7B ED43472D + PUSH DE ;2D7F D5 + INC HL ;2D80 23 + LD E,(HL) ;2D81 5E + INC HL ;2D82 23 + LD D,(HL) ;2D83 56 + INC HL ;2D84 23 + LD C,(HL) ;2D85 4E + INC HL ;2D86 23 + LD B,(HL) ;2D87 46 + POP HL ;2D88 E1 + INC HL ;2D89 23 + JP Z,L2DAB ;2D8A CAAB2D +L2D8D: CP 8 ;2D8D FE08 + JP NC,L2DA1 ;2D8F D2A12D +L2D92: SRL B ;2D92 CB38 + RR C ;2D94 CB19 + RR D ;2D96 CB1A + RR E ;2D98 CB1B + DEC A ;2D9A 3D + JP NZ,L2D92 ;2D9B C2922D + JP L2DAB ;2D9E C3AB2D + +L2DA1: LD E,D ;2DA1 5A + LD D,C ;2DA2 51 + LD C,B ;2DA3 48 + LD B,0 ;2DA4 0600 + SUB 8 ;2DA6 D608 + JP NZ,L2D8D ;2DA8 C28D2D +L2DAB: LD A,(L2D47) ;2DAB 3A472D + OR A ;2DAE B7 + JP Z,L2DEE ;2DAF CAEE2D + LD A,(HL) ;2DB2 7E + INC HL ;2DB3 23 + ADD A,E ;2DB4 83 + LD E,A ;2DB5 5F + LD A,(HL) ;2DB6 7E + INC HL ;2DB7 23 + ADC A,D ;2DB8 8A + LD D,A ;2DB9 57 + LD A,(HL) ;2DBA 7E + INC HL ;2DBB 23 + ADC A,C ;2DBC 89 + LD C,A ;2DBD 4F + LD A,(HL) ;2DBE 7E + ADC A,B ;2DBF 88 + LD B,A ;2DC0 47 + JP NC,L2DD0 ;2DC1 D2D02D + RR B ;2DC4 CB18 + RR C ;2DC6 CB19 + RR D ;2DC8 CB1A + RR E ;2DCA CB1B + LD HL,L2D49 ;2DCC 21492D + INC (HL) ;2DCF 34 +L2DD0: LD HL,L2D49 ;2DD0 21492D + LD A,(HL) ;2DD3 7E + SUB 64 ;2DD4 D640 + JP C,L2DE0 ;2DD6 DAE02D + JP M,L1398 ;2DD9 FA9813 + DEC HL ;2DDC 2B + OR (HL) ;2DDD B6 + JR L2DE3 ;2DDE 1803 + +L2DE0: CALL L367B ;2DE0 CD7B36 +L2DE3: POP HL ;2DE3 E1 +L2DE4: LD (HL),A ;2DE4 77 + INC HL ;2DE5 23 + LD (HL),E ;2DE6 73 + INC HL ;2DE7 23 + LD (HL),D ;2DE8 72 + INC HL ;2DE9 23 + LD (HL),C ;2DEA 71 + INC HL ;2DEB 23 + LD (HL),B ;2DEC 70 + RET ;2DED C9 + +L2DEE: LD A,(HL) ;2DEE 7E + INC HL ;2DEF 23 + SUB E ;2DF0 93 + LD E,A ;2DF1 5F + LD A,(HL) ;2DF2 7E + INC HL ;2DF3 23 + SBC A,D ;2DF4 9A + LD D,A ;2DF5 57 + LD A,(HL) ;2DF6 7E + INC HL ;2DF7 23 + SBC A,C ;2DF8 99 + LD C,A ;2DF9 4F + LD A,(HL) ;2DFA 7E + SBC A,B ;2DFB 98 + LD B,A ;2DFC 47 + CALL C,L2E3D ;2DFD DC3D2E + OR C ;2E00 B1 + OR D ;2E01 B2 + JP NZ,L2E0B ;2E02 C20B2E + LD A,E ;2E05 7B + CP 63 ;2E06 FE3F + JP C,L2DE0 ;2E08 DAE02D +L2E0B: LD HL,L2D49 ;2E0B 21492D +L2E0E: LD A,B ;2E0E 78 + OR A ;2E0F B7 + JP M,L2DD0 ;2E10 FAD02D + JP NZ,L2E2B ;2E13 C22B2E + LD A,(HL) ;2E16 7E + SUB 8 ;2E17 D608 + JP C,L2DE0 ;2E19 DAE02D + LD (HL),A ;2E1C 77 + LD A,C ;2E1D 79 + OR D ;2E1E B2 + OR E ;2E1F B3 + JP Z,L2DE0 ;2E20 CAE02D + LD B,C ;2E23 41 + LD C,D ;2E24 4A + LD D,E ;2E25 53 + LD E,0 ;2E26 1E00 + JP L2E0E ;2E28 C30E2E + +L2E2B: DEC (HL) ;2E2B 35 + JP C,L2DE0 ;2E2C DAE02D + SLA E ;2E2F CB23 + RL D ;2E31 CB12 + RL C ;2E33 CB11 + RL B ;2E35 CB10 + JP P,L2E2B ;2E37 F22B2E + JP L2DD0 ;2E3A C3D02D + +L2E3D: LD HL,L2D48 ;2E3D 21482D + LD A,(HL) ;2E40 7E + ADD A,128 ;2E41 C680 + LD (HL),A ;2E43 77 + LD A,E ;2E44 7B + CPL ;2E45 2F + ADD A,1 ;2E46 C601 + LD E,A ;2E48 5F + LD A,D ;2E49 7A + CPL ;2E4A 2F + ADC A,0 ;2E4B CE00 + LD D,A ;2E4D 57 + LD A,C ;2E4E 79 + CPL ;2E4F 2F + ADC A,0 ;2E50 CE00 + LD C,A ;2E52 4F + LD A,B ;2E53 78 + CPL ;2E54 2F + ADC A,0 ;2E55 CE00 + LD B,A ;2E57 47 + RET ;2E58 C9 + +L2E59: PUSH DE ;2E59 D5 + LD A,(DE) ;2E5A 1A + XOR (HL) ;2E5B AE + CPL ;2E5C 2F + AND 128 ;2E5D E680 + LD (L2D48),A ;2E5F 32482D + LD B,(HL) ;2E62 46 + RES 7,B ;2E63 CBB8 + LD A,(DE) ;2E65 1A + AND 127 ;2E66 E67F + ADD A,B ;2E68 80 + JP Z,L2DE0 ;2E69 CAE02D + DEC A ;2E6C 3D + CP 48 ;2E6D FE30 + JP C,L2DE0 ;2E6F DAE02D + CP 224 ;2E72 FEE0 + JP NC,L1398 ;2E74 D29813 + LD (L2D49),A ;2E77 32492D + XOR A ;2E7A AF + LD (L2D47),A ;2E7B 32472D + LD BC,L0004 ;2E7E 010400 + ADD HL,BC ;2E81 09 + LD A,(HL) ;2E82 7E + OR A ;2E83 B7 + JP P,L2DE0 ;2E84 F2E02D + PUSH HL ;2E87 E5 + POP IY ;2E88 FDE1 + LD C,B ;2E8A 48 + EX DE,HL ;2E8B EB + INC HL ;2E8C 23 + LD E,(HL) ;2E8D 5E + INC HL ;2E8E 23 + LD D,(HL) ;2E8F 56 + INC HL ;2E90 23 + PUSH HL ;2E91 E5 + LD H,B ;2E92 60 + LD L,B ;2E93 68 + EXX ;2E94 D9 + POP HL ;2E95 E1 + LD E,(HL) ;2E96 5E + INC HL ;2E97 23 + LD D,(HL) ;2E98 56 + LD HL,COLDSTART ;2E99 210000 + LD A,D ;2E9C 7A + OR A ;2E9D B7 + JP P,L2DE0 ;2E9E F2E02D + LD C,4 ;2EA1 0E04 +L2EA3: LD A,(IY+0) ;2EA3 FD7E00 + LD B,8 ;2EA6 0608 + OR A ;2EA8 B7 + JP Z,L2F24 ;2EA9 CA242F +L2EAC: RLA ;2EAC 17 + JP NC,L2EC5 ;2EAD D2C52E + EX AF,AF' ;2EB0 08 + EXX ;2EB1 D9 + LD A,B ;2EB2 78 + ADD A,C ;2EB3 81 + LD C,A ;2EB4 4F + ADC HL,DE ;2EB5 ED5A + EXX ;2EB7 D9 + ADC HL,DE ;2EB8 ED5A + JP NC,L2EC4 ;2EBA D2C42E + LD A,(L2D47) ;2EBD 3A472D + INC A ;2EC0 3C + LD (L2D47),A ;2EC1 32472D +L2EC4: EX AF,AF' ;2EC4 08 +L2EC5: SRL D ;2EC5 CB3A + RR E ;2EC7 CB1B + EXX ;2EC9 D9 + RR D ;2ECA CB1A + RR E ;2ECC CB1B + RR B ;2ECE CB18 + EXX ;2ED0 D9 + DJNZ L2EAC ;2ED1 10D9 +L2ED3: DEC IY ;2ED3 FD2B + DEC C ;2ED5 0D + JP NZ,L2EA3 ;2ED6 C2A32E + LD A,(L2D47) ;2ED9 3A472D + OR A ;2EDC B7 + JP Z,L2EF7 ;2EDD CAF72E + LD B,A ;2EE0 47 + LD A,(L2D49) ;2EE1 3A492D + ADD A,B ;2EE4 80 + LD (L2D49),A ;2EE5 32492D +L2EE8: SCF ;2EE8 37 + RR H ;2EE9 CB1C + RR L ;2EEB CB1D + EXX ;2EED D9 + RR H ;2EEE CB1C + RR L ;2EF0 CB1D + RR C ;2EF2 CB19 + EXX ;2EF4 D9 + DJNZ L2EE8 ;2EF5 10F1 +L2EF7: EXX ;2EF7 D9 + LD A,C ;2EF8 79 + OR A ;2EF9 B7 + JP P,L2F1C ;2EFA F21C2F + LD DE,L0001 ;2EFD 110100 + ADD HL,DE ;2F00 19 + EXX ;2F01 D9 + LD DE,COLDSTART ;2F02 110000 + ADC HL,DE ;2F05 ED5A + JP NC,L2F1B ;2F07 D21B2F + RR H ;2F0A CB1C + RR L ;2F0C CB1D + EXX ;2F0E D9 + RR H ;2F0F CB1C + RR L ;2F11 CB1D + EXX ;2F13 D9 + LD A,(L2D49) ;2F14 3A492D + INC A ;2F17 3C + LD (L2D49),A ;2F18 32492D +L2F1B: EXX ;2F1B D9 +L2F1C: PUSH HL ;2F1C E5 + EXX ;2F1D D9 + LD B,H ;2F1E 44 + LD C,L ;2F1F 4D + POP DE ;2F20 D1 + JP L2E0B ;2F21 C30B2E + +L2F24: LD A,E ;2F24 7B + LD E,D ;2F25 5A + LD D,0 ;2F26 1600 + EXX ;2F28 D9 + LD B,E ;2F29 43 + LD E,D ;2F2A 5A + LD D,A ;2F2B 57 + EXX ;2F2C D9 + JP L2ED3 ;2F2D C3D32E + +L2F30: PUSH DE ;2F30 D5 + LD A,(DE) ;2F31 1A + XOR (HL) ;2F32 AE + CPL ;2F33 2F + AND 128 ;2F34 E680 + LD (L2D48),A ;2F36 32482D + LD B,(HL) ;2F39 46 + RES 7,B ;2F3A CBB8 + LD A,(DE) ;2F3C 1A + AND 127 ;2F3D E67F + SUB B ;2F3F 90 + ADD A,129 ;2F40 C681 +L2F42: CP 48 ;2F42 FE30 + JP C,L2DE0 ;2F44 DAE02D + CP 224 ;2F47 FEE0 + JP NC,L1398 ;2F49 D29813 + LD (L2D49),A ;2F4C 32492D + INC HL ;2F4F 23 + INC DE ;2F50 13 + EX DE,HL ;2F51 EB + LD C,(HL) ;2F52 4E + INC HL ;2F53 23 + LD B,(HL) ;2F54 46 + INC HL ;2F55 23 + PUSH HL ;2F56 E5 + EX DE,HL ;2F57 EB + LD E,(HL) ;2F58 5E + INC HL ;2F59 23 + LD D,(HL) ;2F5A 56 + INC HL ;2F5B 23 + LD A,L ;2F5C 7D + EX AF,AF' ;2F5D 08 + LD A,H ;2F5E 7C + LD H,B ;2F5F 60 + LD L,C ;2F60 69 + EXX ;2F61 D9 + POP HL ;2F62 E1 + LD C,(HL) ;2F63 4E + INC HL ;2F64 23 + LD B,(HL) ;2F65 46 + LD H,A ;2F66 67 + EX AF,AF' ;2F67 08 + LD L,A ;2F68 6F + LD E,(HL) ;2F69 5E + INC HL ;2F6A 23 + LD D,(HL) ;2F6B 56 + LD H,B ;2F6C 60 + LD L,C ;2F6D 69 + LD A,D ;2F6E 7A + OR A ;2F6F B7 + JP P,L1398 ;2F70 F29813 + LD C,4 ;2F73 0E04 +L2F75: LD B,8 ;2F75 0608 +L2F77: BIT 7,H ;2F77 CB7C + JP NZ,L2F95 ;2F79 C2952F + OR A ;2F7C B7 +L2F7D: RLA ;2F7D 17 + EXX ;2F7E D9 + ADD HL,HL ;2F7F 29 + EXX ;2F80 D9 + ADC HL,HL ;2F81 ED6A + DJNZ L2F77 ;2F83 10F2 + PUSH AF ;2F85 F5 + DEC C ;2F86 0D + JP NZ,L2F75 ;2F87 C2752F +L2F8A: POP AF ;2F8A F1 + LD E,A ;2F8B 5F + POP AF ;2F8C F1 + LD D,A ;2F8D 57 + POP AF ;2F8E F1 + LD C,A ;2F8F 4F + POP AF ;2F90 F1 + LD B,A ;2F91 47 + JP L2E0B ;2F92 C30B2E + +L2F95: EXX ;2F95 D9 + OR A ;2F96 B7 + SBC HL,DE ;2F97 ED52 + EXX ;2F99 D9 + SBC HL,DE ;2F9A ED52 + CCF ;2F9C 3F + JP C,L2F7D ;2F9D DA7D2F + EXX ;2FA0 D9 + ADD HL,DE ;2FA1 19 + EXX ;2FA2 D9 + ADC HL,DE ;2FA3 ED5A + OR A ;2FA5 B7 + RLA ;2FA6 17 + EXX ;2FA7 D9 + ADD HL,HL ;2FA8 29 + EXX ;2FA9 D9 + ADC HL,HL ;2FAA ED6A + DEC B ;2FAC 05 + JP NZ,L2FB7 ;2FAD C2B72F + PUSH AF ;2FB0 F5 + LD B,8 ;2FB1 0608 + DEC C ;2FB3 0D + JP Z,L2F8A ;2FB4 CA8A2F +L2FB7: EXX ;2FB7 D9 + OR A ;2FB8 B7 + SBC HL,DE ;2FB9 ED52 + EXX ;2FBB D9 + SBC HL,DE ;2FBC ED52 + SCF ;2FBE 37 + RLA ;2FBF 17 + DEC B ;2FC0 05 + JP NZ,L2FCB ;2FC1 C2CB2F + PUSH AF ;2FC4 F5 + LD B,8 ;2FC5 0608 + DEC C ;2FC7 0D + JP Z,L2F8A ;2FC8 CA8A2F +L2FCB: EXX ;2FCB D9 + ADD HL,HL ;2FCC 29 + EXX ;2FCD D9 + ADC HL,HL ;2FCE ED6A + JP NC,L2F77 ;2FD0 D2772F + JP L2FB7 ;2FD3 C3B72F + +L2FD6: DB 9DH ;2FD6 9D +L2FD7: DW 03A23H ;2FD7 233A +L2FD9: LD A,(HL) ;2FD9 7E + PUSH HL ;2FDA E5 + POP IX ;2FDB DDE1 + EX DE,HL ;2FDD EB + LD (L2FD7),HL ;2FDE 22D72F + EX AF,AF' ;2FE1 08 + XOR A ;2FE2 AF + LD (L2FD6),A ;2FE3 32D62F + LD H,A ;2FE6 67 + LD L,A ;2FE7 6F + EXX ;2FE8 D9 + LD H,A ;2FE9 67 + LD L,A ;2FEA 6F + LD B,A ;2FEB 47 + LD C,A ;2FEC 4F + EX AF,AF' ;2FED 08 + CP 46 ;2FEE FE2E + JP Z,L3008 ;2FF0 CA0830 + SUB 48 ;2FF3 D630 +L2FF5: CALL L30E3 ;2FF5 CDE330 + CALL L30D9 ;2FF8 CDD930 + SUB 48 ;2FFB D630 + CP 10 ;2FFD FE0A + JR C,L2FF5 ;2FFF 38F4 + ADD A,48 ;3001 C630 + CP 46 ;3003 FE2E + JP NZ,L3019 ;3005 C21930 +L3008: CALL L30D9 ;3008 CDD930 + SUB 48 ;300B D630 + CP 10 ;300D FE0A + JP NC,L3017 ;300F D21730 + CALL L30F2 ;3012 CDF230 + JR L3008 ;3015 18F1 + +L3017: ADD A,48 ;3017 C630 +L3019: CP 69 ;3019 FE45 + JP NZ,L3064 ;301B C26430 + EXX ;301E D9 + CALL L30D9 ;301F CDD930 + LD B,1 ;3022 0601 + CP 188 ;3024 FEBC + JR Z,L302E ;3026 2806 + CP 189 ;3028 FEBD + JP NZ,L138E ;302A C28E13 + DEC B ;302D 05 +L302E: LD A,B ;302E 78 + OR A ;302F B7 + EX AF,AF' ;3030 08 +L3031: CALL L30D9 ;3031 CDD930 + SUB 48 ;3034 D630 + JR Z,L3031 ;3036 28F9 + CP 10 ;3038 FE0A + JP NC,L305A ;303A D25A30 + LD B,A ;303D 47 + CALL L30D9 ;303E CDD930 + SUB 48 ;3041 D630 + CP 10 ;3043 FE0A + JP NC,L305A ;3045 D25A30 + LD C,A ;3048 4F + CALL L30D9 ;3049 CDD930 + SUB 48 ;304C D630 + CP 10 ;304E FE0A + JP C,L1398 ;3050 DA9813 + LD A,B ;3053 78 + ADD A,A ;3054 87 + ADD A,A ;3055 87 + ADD A,B ;3056 80 + ADD A,A ;3057 87 + ADD A,C ;3058 81 + LD B,A ;3059 47 +L305A: EX AF,AF' ;305A 08 + LD A,B ;305B 78 + JR NZ,L3060 ;305C 2002 + CPL ;305E 2F + INC A ;305F 3C +L3060: LD (L2FD6),A ;3060 32D62F + EXX ;3063 D9 +L3064: PUSH IX ;3064 DDE5 + LD A,(L2FD6) ;3066 3AD62F + ADD A,29 ;3069 C61D + ADD A,C ;306B 81 + LD (L2FD6),A ;306C 32D62F + CP 48 ;306F FE30 + JP C,L307C ;3071 DA7C30 + CP 128 ;3074 FE80 + JP C,L1398 ;3076 DA9813 + JP L30CE ;3079 C3CE30 + +L307C: LD A,128 ;307C 3E80 + LD (L2D48),A ;307E 32482D + LD A,160 ;3081 3EA0 + LD (L2D49),A ;3083 32492D + PUSH HL ;3086 E5 + EXX ;3087 D9 + POP BC ;3088 C1 + LD D,H ;3089 54 + LD E,L ;308A 5D + LD HL,L3096 ;308B 219630 + PUSH HL ;308E E5 + LD HL,(L2FD7) ;308F 2AD72F + PUSH HL ;3092 E5 + JP L2E0B ;3093 C30B2E + +L3096: DB 3AH,0D6H,2FH,6FH ;3096 3AD62F6F Link 3096 found at , $308C + DB 4FH,26H,00H,44H ;309A 4F260044 + DB 29H,29H,09H,01H ;309E 29290901 + DB 20H,31H,09H,0EDH ;30A2 203109ED + DB 5BH,0D7H,2FH,3EH ;30A6 5BD72F3E + DB 80H,32H,48H,2DH ;30AA 8032482D + DB 3EH,20H,86H,47H ;30AE 3E208647 + DB 1AH,0E6H,7FH,80H ;30B2 1AE67F80 + DB 0DAH,98H,13H,0D6H ;30B6 DA9813D6 + DB 21H,30H,01H,0AFH ;30BA 213001AF + DB 01H,0C6H,30H,0C5H ;30BE 01C630C5 + DB 0D5H,0C3H,6DH,2EH ;30C2 D5C36D2E +L30C6: DB 0E1H,01H,05H,00H ;30C6 E1010500 + DB 50H,58H,7EH,0C9H ;30CA 50587EC9 +L30CE: LD HL,L30C6 ;30CE 21C630 + PUSH HL ;30D1 E5 + LD HL,(L2FD7) ;30D2 2AD72F + PUSH HL ;30D5 E5 + JP L2DE0 ;30D6 C3E02D + +L30D9: INC IX ;30D9 DD23 + LD A,(IX+0) ;30DB DD7E00 + CP 32 ;30DE FE20 + RET NZ ;30E0 C0 + JR L30D9 ;30E1 18F6 + +L30E3: OR A ;30E3 B7 + JR NZ,L30E9 ;30E4 2003 + OR B ;30E6 B0 + RET Z ;30E7 C8 + XOR A ;30E8 AF +L30E9: EX AF,AF' ;30E9 08 + LD A,B ;30EA 78 + CP 9 ;30EB FE09 + JP NZ,L3100 ;30ED C20031 + INC C ;30F0 0C + RET ;30F1 C9 + +L30F2: OR A ;30F2 B7 + JR NZ,L30FA ;30F3 2005 + DEC C ;30F5 0D +L30F6: OR B ;30F6 B0 + RET Z ;30F7 C8 + INC C ;30F8 0C + XOR A ;30F9 AF +L30FA: EX AF,AF' ;30FA 08 + LD A,B ;30FB 78 + CP 9 ;30FC FE09 + RET Z ;30FE C8 + DEC C ;30FF 0D +L3100: INC B ;3100 04 + LD D,H ;3101 54 + LD E,L ;3102 5D + EXX ;3103 D9 + LD D,H ;3104 54 + LD E,L ;3105 5D + XOR A ;3106 AF + ADD HL,HL ;3107 29 + RLA ;3108 17 + ADD HL,HL ;3109 29 + RLA ;310A 17 + ADD HL,DE ;310B 19 + LD D,0 ;310C 1600 + ADC A,D ;310E 8A + ADD HL,HL ;310F 29 + RLA ;3110 17 + EX AF,AF' ;3111 08 + LD E,A ;3112 5F + EX AF,AF' ;3113 08 + ADD HL,DE ;3114 19 + ADC A,D ;3115 8A + EXX ;3116 D9 + ADD HL,HL ;3117 29 + ADD HL,HL ;3118 29 + ADD HL,DE ;3119 19 + ADD HL,HL ;311A 29 + LD D,0 ;311B 1600 + LD E,A ;311D 5F + ADD HL,DE ;311E 19 + RET ;311F C9 + + DB 0E0H,0F5H,0F7H,0D2H ;3120 E0F5F7D2 Link 3120 found at , $30A2, $3487 + DB 0CAH,0E3H,0F3H,0B5H ;3124 CAE3F3B5 + DB 87H,0FDH,0E7H,0B8H ;3128 87FDE7B8 + DB 0D1H,74H,9EH,0EAH ;312C D1749EEA + DB 25H,06H,12H,0C6H ;3130 250612C6 + DB 0EDH,0AFH,87H,96H ;3134 EDAF8796 + DB 0F7H,0F1H,0CDH,14H ;3138 F7F1CD14 + DB 0BEH,9AH,0F4H,01H ;313C BE9AF401 + DB 9AH,6DH,0C1H,0F7H ;3140 9A6DC1F7 + DB 81H,00H,0C9H,0F1H ;3144 8100C9F1 + DB 0FBH,50H,0A0H,1DH ;3148 FB50A01D + DB 97H ;314C 97 +L314D: DB 0FEH,65H,08H,0E5H ;314D FE6508E5 + DB 0BCH,01H,7EH,4AH ;3151 BC017E4A + DB 1EH,0ECH,05H,8FH ;3155 1EEC058F + DB 0EEH,92H,93H,08H ;3159 EE929308 + DB 32H,0AAH,77H,0B8H ;315D 32AA77B8 + DB 0BH,0BFH,94H,95H ;3161 0BBF9495 + DB 0E6H,0FH,0F7H,7CH ;3165 E60FF77C + DB 1DH,90H,12H,35H ;3169 1D901235 + DB 0DCH,24H,0B4H,15H ;316D DC24B415 + DB 42H,13H,2EH,0E1H ;3171 42132EE1 + DB 19H,09H,0CCH,0BCH ;3175 1909CCBC + DB 8CH,1CH,0CH,0FFH ;3179 8C1C0CFF + DB 0EBH,0AFH,1FH,0CFH ;317D EBAF1FCF + DB 0FEH,0E6H,0DBH,23H ;3181 FEE6DB23 + DB 41H,5FH,70H,89H ;3185 415F7089 + DB 26H,12H,77H,0CCH ;3189 261277CC + DB 0ABH,29H,0D6H,94H ;318D AB29D694 + DB 0BFH,0D6H,2DH,06H ;3191 BFD62D06 + DB 0BDH,37H,86H,30H ;3195 BD378630 + DB 47H,0ACH,0C5H,0A7H ;3199 47ACC5A7 + DB 33H,59H,17H,0B7H ;319D 335917B7 + DB 0D1H,37H,98H,6EH ;31A1 D137986E + DB 12H,83H,3AH,3DH ;31A5 12833A3D + DB 0AH,0D7H,0A3H,3DH ;31A9 0AD7A33D + DB 0CDH,0CCH,0CCH,0CCH ;31AD CDCCCCCC + DB 41H,00H,00H,00H ;31B1 41000000 + DB 80H,44H,00H,00H ;31B5 80440000 + DB 00H,0A0H,47H,00H ;31B9 00A04700 + DB 00H,00H,0C8H,4AH ;31BD 0000C84A + DB 00H,00H,00H,0FAH ;31C1 000000FA + DB 4EH,00H,00H,40H ;31C5 4E000040 + DB 9CH,51H,00H,00H ;31C9 9C510000 + DB 50H,0C3H,54H,00H ;31CD 50C35400 + DB 00H,24H,0F4H,58H ;31D1 0024F458 + DB 00H,80H,96H,98H ;31D5 00809698 + DB 5BH,00H,20H,0BCH ;31D9 5B0020BC + DB 0BEH,5EH,00H,28H ;31DD BE5E0028 + DB 6BH,0EEH,62H,00H ;31E1 6BEE6200 + DB 0F9H,02H,95H,65H ;31E5 F9029565 + DB 40H,0B7H,43H,0BAH ;31E9 40B743BA + DB 68H,10H,0A5H,0D4H ;31ED 6810A5D4 + DB 0E8H,6CH,2AH,0E7H ;31F1 E86C2AE7 + DB 84H,91H,6FH,0F5H ;31F5 84916FF5 + DB 20H,0E6H,0B5H,72H ;31F9 20E6B572 + DB 32H,0A9H,5FH,0E3H ;31FD 32A95FE3 + DB 76H,0BFH,0C9H,1BH ;3201 76BFC91B + DB 8EH,79H,2FH,0BCH ;3205 8E792FBC + DB 0A2H,0B1H,7CH,3AH ;3209 A2B17C3A + DB 6BH,0BH,0DEH,80H ;320D 6B0BDE80 + DB 05H,23H,0C7H,8AH ;3211 0523C78A +L3215: DW 02D54H ;3215 542D +L3217: DB 22H ;3217 22 Link 3217 found at , $3232, $325F, $32EE, $3344, $33E2, $33E6, $3427, $34 +L3218: DB 03H ;3218 03 +L3219: DB 64H ;3219 64 +L321A: DB 0C3H,0FFH,29H,0CDH ;321A C3FF29CD + DB 42H,26H,0D6H ;321E 4226D6 +L3221: DB "A" ;3221 41 +L3222: DB 0FEH ;3222 FE +L3223: DB 1AH ;3223 1A Link 3223 found at , $32DD, $3DFD, $3E3C +L3224: DB 0D2H,8EH,23H,5EH ;3224 D28E235E + DB 23H,0CDH,0B2H,26H ;3228 23CDB226 + DB 28H ;322C 28 +L322D: PUSH DE ;322D D5 + CALL L3316 ;322E CD1633 + LD A,(L3217) ;3231 3A1732 + OR A ;3234 B7 + JP Z,L32DC ;3235 CADC32 + JP M,L3242 ;3238 FA4232 + CP 9 ;323B FE09 + JP C,L32A1 ;323D DAA132 + JR L3247 ;3240 1805 + +L3242: CP 255 ;3242 FEFF + JP NC,L32D6 ;3244 D2D632 +L3247: LD A,46 ;3247 3E2E + LD (L3219),A ;3249 321932 + LD HL,L3222 ;324C 212232 + XOR A ;324F AF +L3250: DEC HL ;3250 2B + CP (HL) ;3251 BE + JR Z,L3250 ;3252 28FC + LD A,(HL) ;3254 7E + CP 46 ;3255 FE2E + JP Z,L3309 ;3257 CA0933 + INC HL ;325A 23 + LD (HL),69 ;325B 3645 + INC HL ;325D 23 + LD A,(L3217) ;325E 3A1732 + LD B,43 ;3261 062B + OR A ;3263 B7 + JP P,L3270 ;3264 F27032 + CP 237 ;3267 FEED + JP C,L3309 ;3269 DA0933 + LD B,45 ;326C 062D + CPL ;326E 2F + INC A ;326F 3C +L3270: LD (HL),B ;3270 70 + INC HL ;3271 23 + LD BC,LFF0A ;3272 010AFF +L3275: INC B ;3275 04 + SUB C ;3276 91 + JR NC,L3275 ;3277 30FC + ADD A,C ;3279 81 + LD (HL),B ;327A 70 + INC HL ;327B 23 + LD (HL),A ;327C 77 + INC HL ;327D 23 + LD (HL),13 ;327E 360D +L3280: LD HL,L3218 ;3280 211832 +L3283: INC HL ;3283 23 + LD A,(HL) ;3284 7E + CP 13 ;3285 FE0D + JP Z,L3293 ;3287 CA9332 + JP NC,L3283 ;328A D28332 + OR 48 ;328D F630 + LD (HL),A ;328F 77 + JP L3283 ;3290 C38332 + +L3293: LD DE,L3218 ;3293 111832 + XOR A ;3296 AF + SBC HL,DE ;3297 ED52 + LD B,H ;3299 44 + LD C,L ;329A 4D + POP HL ;329B E1 + EX DE,HL ;329C EB + INC BC ;329D 03 + LDIR ;329E EDB0 + RET ;32A0 C9 + +L32A1: LD HL,L321A ;32A1 211A32 + LD DE,L3219 ;32A4 111932 + LD B,A ;32A7 47 + INC B ;32A8 04 +L32A9: DEC B ;32A9 05 + JP Z,L32B4 ;32AA CAB432 + LD A,(HL) ;32AD 7E + LD (DE),A ;32AE 12 + INC HL ;32AF 23 + INC DE ;32B0 13 + JP L32A9 ;32B1 C3A932 + +L32B4: LD A,46 ;32B4 3E2E + LD (DE),A ;32B6 12 + LD HL,L3222 ;32B7 212232 +L32BA: LD (HL),13 ;32BA 360D + DEC HL ;32BC 2B + LD A,(HL) ;32BD 7E + OR A ;32BE B7 + JR Z,L32BA ;32BF 28F9 + CP 46 ;32C1 FE2E + JP NZ,L32C8 ;32C3 C2C832 + LD (HL),13 ;32C6 360D +L32C8: LD HL,L3219 ;32C8 211932 + LD A,(HL) ;32CB 7E + CP 13 ;32CC FE0D + JP NZ,L3280 ;32CE C28032 + LD (HL),0 ;32D1 3600 + JP L3280 ;32D3 C38032 + +L32D6: LD DE,L3224 ;32D6 112432 + JP L32DF ;32D9 C3DF32 + +L32DC: LD DE,L3223 ;32DC 112332 +L32DF: LD HL,L3221 ;32DF 212132 + LD A,13 ;32E2 3E0D + LD (DE),A ;32E4 12 + PUSH DE ;32E5 D5 + DEC DE ;32E6 1B + LD BC,L0008 ;32E7 010800 + LDDR ;32EA EDB8 + EX DE,HL ;32EC EB + LD A,(L3217) ;32ED 3A1732 + OR A ;32F0 B7 + JP Z,L32F7 ;32F1 CAF732 + LD (HL),0 ;32F4 3600 + DEC HL ;32F6 2B +L32F7: LD (HL),46 ;32F7 362E + DEC HL ;32F9 2B + LD (HL),0 ;32FA 3600 + POP HL ;32FC E1 +L32FD: DEC HL ;32FD 2B + LD A,(HL) ;32FE 7E + CP 0 ;32FF FE00 + JP NZ,L3280 ;3301 C28032 + LD (HL),13 ;3304 360D + JP L32FD ;3306 C3FD32 + +L3309: LD HL,L3313 ;3309 211333 + LD BC,USER ;330C 010300 + POP DE ;330F D1 + LDIR ;3310 EDB0 + RET ;3312 C9 + +L3313: DB " 0" ;3313 2030 + DB 0DH ;3315 0D +L3316: LD (L3215),HL ;3316 221532 + LD A,(HL) ;3319 7E + LD B,32 ;331A 0620 + OR A ;331C B7 + JP M,L3322 ;331D FA2233 + LD B,45 ;3320 062D +L3322: AND 127 ;3322 E67F + LD (HL),A ;3324 77 + LD A,B ;3325 78 + LD (L3218),A ;3326 321832 + EX DE,HL ;3329 EB + LD HL,L314D ;332A 214D31 + LD A,236 ;332D 3EEC + EX AF,AF' ;332F 08 +L3330: EX AF,AF' ;3330 08 + INC A ;3331 3C + EX AF,AF' ;3332 08 + LD BC,L0005 ;3333 010500 + ADD HL,BC ;3336 09 + PUSH HL ;3337 E5 + PUSH DE ;3338 D5 + LD A,(DE) ;3339 1A + CALL L33FB ;333A CDFB33 + POP DE ;333D D1 + POP HL ;333E E1 + JP NC,L3330 ;333F D23033 + EX AF,AF' ;3342 08 + LD (L3217),A ;3343 321732 + PUSH DE ;3346 D5 + LD BC,L3358 ;3347 015833 + PUSH BC ;334A C5 + PUSH DE ;334B D5 + LD A,128 ;334C 3E80 + LD (L2D48),A ;334E 32482D + LD A,(DE) ;3351 1A + SUB (HL) ;3352 96 + ADD A,129 ;3353 C681 + JP L2F42 ;3355 C3422F + +L3358: DB 21H,19H,32H,36H ;3358 21193236 Link 3358 found at , $3348 + DB 00H,23H,0E3H,7EH ;335C 0023E37E + DB 23H,5EH,23H,56H ;3360 235E2356 + DB 23H,0E5H,0EBH,0D9H ;3364 23E5EBD9 + DB 0E1H,5EH,23H,56H ;3368 E15E2356 + DB 0EBH,0D6H,0C0H,0D2H ;336C EBD6C0D2 + DB 80H,33H,0CBH,3CH ;3370 8033CB3C + DB 0CBH,1DH,0D9H,0CBH ;3374 CB1DD9CB + DB 1CH,0CBH,1DH,0D9H ;3378 1CCB1DD9 + DB 3CH,0C2H,72H,33H ;337C 3CC27233 + DB 0C1H,3EH,09H,08H ;3380 C13E0908 + DB 0AFH,54H,5DH,0D9H ;3384 AF545DD9 + DB 54H,5DH,29H,0D9H ;3388 545D29D9 + DB 0EDH,6AH,17H,0D9H ;338C ED6A17D9 + DB 29H,0D9H,0EDH,6AH ;3390 29D9ED6A + DB 17H,0D9H,19H,0D9H ;3394 17D919D9 + DB 0EDH,5AH,16H,00H ;3398 ED5A1600 + DB 8AH,0D9H,29H,0D9H ;339C 8AD929D9 + DB 0EDH,6AH,17H,02H ;33A0 ED6A1702 + DB 03H,08H,3DH,0C2H ;33A4 03083DC2 + DB 83H,33H,21H,22H ;33A8 83332122 + DB 32H,7EH,36H,00H ;33AC 327E3600 + DB 0FEH,05H,0EH,00H ;33B0 FE050E00 + DB 0DAH,0B8H,33H,0CH ;33B4 DAB8330C + DB 06H,0AH,05H,0CAH ;33B8 060A05CA + DB 0CEH,33H,2BH,7EH ;33BC CE332B7E + DB 81H,77H,0D6H,0AH ;33C0 8177D60A + DB 0EH,00H,0DAH,0BAH ;33C4 0E00DABA + DB 33H,0CH,77H,0C3H ;33C8 330C77C3 + DB 0BAH,33H,3AH,19H ;33CC BA333A19 + DB 32H,0B7H,0C8H,21H ;33D0 32B7C821 + DB 21H,32H,11H,22H ;33D4 21321122 + DB 32H,01H,09H,00H ;33D8 32010900 + DB 0EDH,0B8H,0EBH,36H ;33DC EDB8EB36 + DB 00H,3AH,17H,32H ;33E0 003A1732 + DB 3CH,32H,17H,32H ;33E4 3C321732 + DB 0C3H,0AAH,33H ;33E8 C3AA33 +L33EB: LD BC,L0005 ;33EB 010500 +L33EE: LD A,(DE) ;33EE 1A + OR A ;33EF B7 + JP M,L33FB ;33F0 FAFB33 + BIT 7,(HL) ;33F3 CB7E + JR Z,L33F9 ;33F5 2802 + SCF ;33F7 37 + RET ;33F8 C9 + +L33F9: EX DE,HL ;33F9 EB + LD A,(DE) ;33FA 1A +L33FB: CP (HL) ;33FB BE + RET NZ ;33FC C0 + DEC C ;33FD 0D + ADD HL,BC ;33FE 09 + EX DE,HL ;33FF EB + ADD HL,BC ;3400 09 + EX DE,HL ;3401 EB + LD B,3 ;3402 0603 +L3404: LD A,(DE) ;3404 1A + CP (HL) ;3405 BE + RET NZ ;3406 C0 + DEC HL ;3407 2B + DEC DE ;3408 1B + DJNZ L3404 ;3409 10F9 + LD A,(DE) ;340B 1A + CP (HL) ;340C BE + RET ;340D C9 + +L340E: EX DE,HL ;340E EB + CALL L3316 ;340F CD1633 + LD A,(L3218) ;3412 3A1832 + LD B,128 ;3415 0680 + CP 32 ;3417 FE20 + JP Z,L341E ;3419 CA1E34 + LD B,0 ;341C 0600 +L341E: LD A,B ;341E 78 + LD (L2D48),A ;341F 32482D + OR A ;3422 B7 + JP Z,L34A7 ;3423 CAA734 + LD A,(L3217) ;3426 3A1732 + DEC A ;3429 3D + JP M,L34DF ;342A FADF34 + LD HL,L3222 ;342D 212232 + LD B,13 ;3430 060D + LD (HL),B ;3432 70 + SUB 8 ;3433 D608 + JR NC,L343D ;3435 3006 +L3437: LD (HL),B ;3437 70 + DEC HL ;3438 2B + INC A ;3439 3C + JR NZ,L3437 ;343A 20FB + DEC A ;343C 3D +L343D: INC A ;343D 3C + LD (L2FD6),A ;343E 32D62F + LD IX,L3219 ;3441 DD211932 + XOR A ;3445 AF + LD H,A ;3446 67 + LD L,A ;3447 6F + EXX ;3448 D9 + LD B,A ;3449 47 + LD C,A ;344A 4F + LD H,A ;344B 67 + LD L,A ;344C 6F +L344D: LD A,(IX+0) ;344D DD7E00 + CP 13 ;3450 FE0D + JP Z,L345D ;3452 CA5D34 + CALL L30E3 ;3455 CDE330 + INC IX ;3458 DD23 + JP L344D ;345A C34D34 + +L345D: LD A,(L2FD6) ;345D 3AD62F + ADD A,29 ;3460 C61D + ADD A,C ;3462 81 + LD (L2FD6),A ;3463 32D62F + LD A,160 ;3466 3EA0 + LD (L2D49),A ;3468 32492D + PUSH HL ;346B E5 + EXX ;346C D9 + POP BC ;346D C1 + LD D,H ;346E 54 + LD E,L ;346F 5D + LD HL,L347B ;3470 217B34 + PUSH HL ;3473 E5 + LD HL,(L3215) ;3474 2A1532 + PUSH HL ;3477 E5 + JP L2E0B ;3478 C30B2E + +L347B: DB 3AH,0D6H,2FH,4FH ;347B 3AD62F4F Link 347B found at , $3471 + DB 6FH,26H,00H,44H ;347F 6F260044 + DB 29H,29H,09H,01H ;3483 29290901 + DB 20H,31H,09H,0EDH ;3487 203109ED + DB 5BH,15H,32H,0AFH ;348B 5B1532AF + DB 32H,47H,2DH,3EH ;348F 32472D3E + DB 20H,86H,47H,1AH ;3493 2086471A + DB 0E6H,7FH,80H,0DAH ;3497 E67F80DA + DB 98H,13H,0D6H,21H ;349B 9813D621 + DB 0D2H,0A3H,34H,0AFH ;349F D2A334AF + DB 0D5H,0C3H,6DH,2EH ;34A3 D5C36D2E +L34A7: LD A,(L3217) ;34A7 3A1732 + DEC A ;34AA 3D + JP M,L34E4 ;34AB FAE434 + LD HL,L3222 ;34AE 212232 + LD BC,L0D00 ;34B1 01000D + LD (HL),B ;34B4 70 + SUB 8 ;34B5 D608 + JP NC,L34CA ;34B7 D2CA34 + JP L34C5 ;34BA C3C534 + +L34BD: EX AF,AF' ;34BD 08 + LD A,(HL) ;34BE 7E + OR A ;34BF B7 + JR Z,L34C3 ;34C0 2801 + INC C ;34C2 0C +L34C3: LD (HL),B ;34C3 70 + EX AF,AF' ;34C4 08 +L34C5: DEC HL ;34C5 2B + INC A ;34C6 3C + JR NZ,L34BD ;34C7 20F4 + DEC A ;34C9 3D +L34CA: EX AF,AF' ;34CA 08 + LD A,C ;34CB 79 + OR A ;34CC B7 + JR Z,L34DB ;34CD 280C +L34CF: LD A,(HL) ;34CF 7E + INC A ;34D0 3C + LD (HL),A ;34D1 77 + CP 10 ;34D2 FE0A + JR NZ,L34DB ;34D4 2005 + LD (HL),0 ;34D6 3600 + DEC HL ;34D8 2B + JR L34CF ;34D9 18F4 + +L34DB: EX AF,AF' ;34DB 08 + JP L343D ;34DC C33D34 + +L34DF: LD DE,L1619 ;34DF 111916 + JR L34E7 ;34E2 1803 + +L34E4: LD DE,L161E ;34E4 111E16 +L34E7: LD HL,(L3215) ;34E7 2A1532 + EX DE,HL ;34EA EB +L34EB: LD BC,L0005 ;34EB 010500 + LDIR ;34EE EDB0 + RET ;34F0 C9 + +L34F1: PUSH DE ;34F1 D5 + CALL L33EB ;34F2 CDEB33 + JP Z,L34FD ;34F5 CAFD34 +L34F8: LD HL,L161E ;34F8 211E16 + JR L3500 ;34FB 1803 + +L34FD: LD HL,L1619 ;34FD 211916 +L3500: POP DE ;3500 D1 + JP L34EB ;3501 C3EB34 + +L3504: PUSH DE ;3504 D5 + EX DE,HL ;3505 EB + JR L3509 ;3506 1801 + +L3508: PUSH DE ;3508 D5 +L3509: CALL L33EB ;3509 CDEB33 + JP C,L34F8 ;350C DAF834 + JP L34FD ;350F C3FD34 + +L3512: PUSH DE ;3512 D5 + CALL L33EB ;3513 CDEB33 + JP Z,L34F8 ;3516 CAF834 + JP L34FD ;3519 C3FD34 + +L351C: PUSH DE ;351C D5 + EX DE,HL ;351D EB + JR L3521 ;351E 1801 + +L3520: PUSH DE ;3520 D5 +L3521: CALL L33EB ;3521 CDEB33 + JP C,L34FD ;3524 DAFD34 + JP L34F8 ;3527 C3F834 + +L352A: DB 0BEH,35H,28H,0DCH ;352A BE3528DC Link 352A found at , $353B, $355D + DB 0CFH ;352E CF +L352F: PUSH DE ;352F D5 + EX DE,HL ;3530 EB + LD A,(HL) ;3531 7E + LD BC,L0004 ;3532 010400 + ADD HL,BC ;3535 09 + XOR (HL) ;3536 AE + JP M,L355C ;3537 FA5C35 + LD DE,L352A ;353A 112A35 + PUSH DE ;353D D5 + LD HL,L3583 ;353E 218335 + CALL L2E59 ;3541 CD592E + POP HL ;3544 E1 + PUSH HL ;3545 E5 + LD A,(HL) ;3546 7E + INC HL ;3547 23 + LD E,(HL) ;3548 5E + INC HL ;3549 23 + LD D,(HL) ;354A 56 + INC HL ;354B 23 + LD C,(HL) ;354C 4E + INC HL ;354D 23 + LD B,(HL) ;354E 46 + CP 193 ;354F FEC1 + CALL NC,L356B ;3551 D46B35 + POP HL ;3554 E1 + PUSH HL ;3555 E5 + CALL L2DE4 ;3556 CDE42D + JP L3566 ;3559 C36635 + +L355C: LD DE,L352A ;355C 112A35 + LD HL,L357E ;355F 217E35 + PUSH DE ;3562 D5 + CALL L34EB ;3563 CDEB34 +L3566: POP HL ;3566 E1 + POP DE ;3567 D1 + JP L34EB ;3568 C3EB34 + +L356B: SUB 192 ;356B D6C0 +L356D: SLA E ;356D CB23 + RL D ;356F CB12 + RL C ;3571 CB11 + RL B ;3573 CB10 + DEC A ;3575 3D + JP NZ,L356D ;3576 C26D35 + LD A,192 ;3579 3EC0 + JP L3661 ;357B C36136 + +L357E: DB 0BEH,35H,28H,0DCH ;357E BE3528DC Link 357E found at , $3560 + DB 0CFH ;3582 CF +L3583: DB 0C5H,00H,00H,00H ;3583 C5000000 + DB 0B8H ;3587 B8 +L3588: DB 0CDH,8EH,27H,0CDH ;3588 CD8E27CD + DB 0B5H ;358C B5 +L358D: DB 28H,2AH,30H,62H ;358D 282A3062 + DB 0EBH ;3591 EB +L3592: DB 73H,23H,72H,23H ;3592 73237223 + DB 36H ;3596 36 +L3597: DB 0DH,0CDH,03H,28H ;3597 0DCD0328 + DB 0EBH ;359B EB +L359C: LD DE,L3588 ;359C 118835 + JP L2D4D ;359F C34D2D + +L35A2: CALL L359C ;35A2 CD9C35 +L35A5: LD HL,L358D ;35A5 218D35 +L35A8: LD DE,L3588 ;35A8 118835 + JP L2E59 ;35AB C3592E + +L35AE: DW 0AFF1H ;35AE F1AF +L35B0: PUSH DE ;35B0 D5 + LD HL,L3684 ;35B1 218436 + CALL L2F30 ;35B4 CD302F + POP HL ;35B7 E1 + PUSH HL ;35B8 E5 + LD A,(HL) ;35B9 7E + LD (L35AF),A ;35BA 32AF35 + OR 128 ;35BD F680 + INC HL ;35BF 23 + LD E,(HL) ;35C0 5E + INC HL ;35C1 23 + LD D,(HL) ;35C2 56 + INC HL ;35C3 23 + LD C,(HL) ;35C4 4E + INC HL ;35C5 23 + LD B,(HL) ;35C6 46 + CP 195 ;35C7 FEC3 + JP C,L35DF ;35C9 DADF35 + SUB 194 ;35CC D6C2 +L35CE: SLA E ;35CE CB23 + RL D ;35D0 CB12 + RL C ;35D2 CB11 + RL B ;35D4 CB10 + DEC A ;35D6 3D + JP NZ,L35CE ;35D7 C2CE35 + LD A,194 ;35DA 3EC2 + CALL L3661 ;35DC CD6136 +L35DF: LD HL,L8000 ;35DF 210080 + CP 194 ;35E2 FEC2 + JR C,L35EC ;35E4 3806 + LD H,L ;35E6 65 + RES 7,B ;35E7 CBB8 + CALL L3661 ;35E9 CD6136 +L35EC: CP 193 ;35EC FEC1 + JR C,L35F6 ;35EE 3806 + INC L ;35F0 2C + RES 7,B ;35F1 CBB8 + CALL L3661 ;35F3 CD6136 +L35F6: EX AF,AF' ;35F6 08 + LD A,(L35AF) ;35F7 3AAF35 + XOR H ;35FA AC + CPL ;35FB 2F + AND 128 ;35FC E680 + LD H,A ;35FE 67 + LD (L35AE),HL ;35FF 22AE35 + EX AF,AF' ;3602 08 + POP HL ;3603 E1 + PUSH HL ;3604 E5 + CALL L2DE4 ;3605 CDE42D + LD A,(L35AE) ;3608 3AAE35 + OR A ;360B B7 + JR Z,L3616 ;360C 2808 + POP DE ;360E D1 + PUSH DE ;360F D5 + LD HL,L1614 ;3610 211416 + CALL L2D4A ;3613 CD4A2D +L3616: POP HL ;3616 E1 + PUSH HL ;3617 E5 + LD A,(HL) ;3618 7E + AND 127 ;3619 E67F + LD B,A ;361B 47 + LD A,(L35AF) ;361C 3AAF35 + OR B ;361F B0 + LD (HL),A ;3620 77 + LD DE,L3588 ;3621 118835 + CALL L34EB ;3624 CDEB34 + LD DE,L358D ;3627 118D35 + LD HL,L3588 ;362A 218835 + CALL L34EB ;362D CDEB34 + CALL L35A5 ;3630 CDA535 + LD DE,L358D ;3633 118D35 + LD HL,L3588 ;3636 218835 + CALL L34EB ;3639 CDEB34 + LD HL,L3689 ;363C 218936 + CALL L35A8 ;363F CDA835 + LD HL,L368E ;3642 218E36 + CALL L35A2 ;3645 CDA235 + LD HL,L3693 ;3648 219336 + CALL L35A2 ;364B CDA235 + LD HL,L3698 ;364E 219836 + CALL L35A2 ;3651 CDA235 + LD HL,L369D ;3654 219D36 + CALL L359C ;3657 CD9C35 + POP DE ;365A D1 + LD HL,L3588 ;365B 218835 + JP L2E59 ;365E C3592E + +L3661: BIT 7,B ;3661 CB78 + RET NZ ;3663 C0 + EX AF,AF' ;3664 08 + LD A,B ;3665 78 + OR C ;3666 B1 + OR E ;3667 B3 + OR D ;3668 B2 + JP Z,L367B ;3669 CA7B36 + EX AF,AF' ;366C 08 +L366D: BIT 7,B ;366D CB78 + RET NZ ;366F C0 + SLA E ;3670 CB23 + RL D ;3672 CB12 + RL C ;3674 CB11 + RL B ;3676 CB10 + DEC A ;3678 3D + JR NZ,L366D ;3679 20F2 +L367B: LD BC,COLDSTART ;367B 010000 + LD DE,COLDSTART ;367E 110000 + LD A,128 ;3681 3E80 + RET ;3683 C9 + +L3684: DB 0C1H,0A1H,0DAH,0FH ;3684 C1A1DA0F Link 3684 found at , $35B2, $36A4, $3ABF + DB 0C9H ;3688 C9 +L3689: DB 0B4H,0DCH,0FH,0AH ;3689 B4DC0F0A + DB 9FH ;368D 9F +L368E: DB 39H,61H,8FH,29H ;368E 39618F29 + DB 99H ;3692 99 +L3693: DB 0BDH,0C8H,77H,34H ;3693 BDC87734 + DB 0A3H ;3697 A3 +L3698: DB 40H,85H,0E1H,5DH ;3698 4085E15D + DB 0A5H ;369C A5 +L369D: DB 0C1H,94H,0DAH,0FH ;369D C194DA0F + DB 0C9H ;36A1 C9 +L36A2: PUSH DE ;36A2 D5 + LD HL,L3684 ;36A3 218436 + CALL L2D4A ;36A6 CD4A2D + POP HL ;36A9 E1 + CALL L3B45 ;36AA CD453B + EX DE,HL ;36AD EB + JP L35B0 ;36AE C3B035 + +L36B1: PUSH DE ;36B1 D5 + EX DE,HL ;36B2 EB + LD DE,L3597 ;36B3 119735 + CALL L34EB ;36B6 CDEB34 + POP DE ;36B9 D1 + PUSH DE ;36BA D5 + CALL L36A2 ;36BB CDA236 + POP HL ;36BE E1 + PUSH HL ;36BF E5 + LD DE,L3592 ;36C0 119235 + CALL L34EB ;36C3 CDEB34 + POP DE ;36C6 D1 + PUSH DE ;36C7 D5 + LD HL,L3597 ;36C8 219735 + CALL L34EB ;36CB CDEB34 + POP DE ;36CE D1 + PUSH DE ;36CF D5 + CALL L35B0 ;36D0 CDB035 + POP DE ;36D3 D1 + LD HL,L3592 ;36D4 219235 + JP L2F30 ;36D7 C3302F + +L36DA: DB 0FEH ;36DA FE +L36DB: DB 0AH ;36DB 0A +L36DC: LD A,3 ;36DC 3E03 + LD (L36DA),A ;36DE 32DA36 + PUSH DE ;36E1 D5 + EX DE,HL ;36E2 EB + LD A,(HL) ;36E3 7E + ADD A,128 ;36E4 C680 + JP NC,L1398 ;36E6 D29813 + JP NZ,L36F9 ;36E9 C2F936 + EX AF,AF' ;36EC 08 + LD BC,L0004 ;36ED 010400 + ADD HL,BC ;36F0 09 + LD A,(HL) ;36F1 7E + SBC HL,BC ;36F2 ED42 + OR A ;36F4 B7 + JP P,L375C ;36F5 F25C37 + EX AF,AF' ;36F8 08 +L36F9: BIT 0,A ;36F9 CB47 + JP NZ,L3778 ;36FB C27837 + LD (L36DB),A ;36FE 32DB36 + LD (HL),192 ;3701 36C0 + LD DE,L3588 ;3703 118835 + CALL L34EB ;3706 CDEB34 + LD HL,L3790 ;3709 219037 + CALL L35A8 ;370C CDA835 + LD HL,L3795 ;370F 219537 +L3712: CALL L359C ;3712 CD9C35 +L3715: LD DE,L358D ;3715 118D35 + POP HL ;3718 E1 + PUSH HL ;3719 E5 + CALL L34EB ;371A CDEB34 + LD DE,L358D ;371D 118D35 + LD HL,L3588 ;3720 218835 + CALL L2F30 ;3723 CD302F + LD HL,L358D ;3726 218D35 + CALL L359C ;3729 CD9C35 + LD HL,L3588 ;372C 218835 + LD A,(HL) ;372F 7E + AND 127 ;3730 E67F + DEC A ;3732 3D + JP C,L375C ;3733 DA5C37 + OR 128 ;3736 F680 + LD (HL),A ;3738 77 + LD A,(L36DA) ;3739 3ADA36 + DEC A ;373C 3D + LD (L36DA),A ;373D 32DA36 + JP NZ,L3715 ;3740 C21537 + LD A,(L36DB) ;3743 3ADB36 + CP 64 ;3746 FE40 + CALL NZ,L3763 ;3748 C46337 + LD B,(HL) ;374B 46 + RES 7,B ;374C CBB8 + ADD A,B ;374E 80 + SUB 64 ;374F D640 + JP C,L375C ;3751 DA5C37 + JP M,L1398 ;3754 FA9813 + OR 128 ;3757 F680 + LD (HL),A ;3759 77 + JR L375F ;375A 1803 + +L375C: LD HL,L1619 ;375C 211916 +L375F: POP DE ;375F D1 + JP L34EB ;3760 C3EB34 + +L3763: JP C,L376D ;3763 DA6D37 + SUB 64 ;3766 D640 + SRL A ;3768 CB3F + ADD A,64 ;376A C640 + RET ;376C C9 + +L376D: LD B,A ;376D 47 + LD A,64 ;376E 3E40 + SUB B ;3770 90 + SRL A ;3771 CB3F + LD B,A ;3773 47 + LD A,64 ;3774 3E40 + SUB B ;3776 90 + RET ;3777 C9 + +L3778: INC A ;3778 3C + LD (L36DB),A ;3779 32DB36 + LD (HL),191 ;377C 36BF + LD DE,L3588 ;377E 118835 + CALL L34EB ;3781 CDEB34 + LD HL,L379A ;3784 219A37 + CALL L35A8 ;3787 CDA835 + LD HL,L379F ;378A 219F37 + JP L3712 ;378D C31237 + +L3790: DB 0C0H,00H,00H,00H ;3790 C0000000 Link 3790 found at , $370A + DB 90H ;3794 90 +L3795: DB 0BFH,00H,00H,00H ;3795 BF000000 + DB 0E0H ;3799 E0 +L379A: DB 0C0H,00H,00H,00H ;379A C0000000 + DB 0E0H ;379E E0 +L379F: DB 0BFH,00H,00H,00H ;379F BF000000 + DB 90H ;37A3 90 +L37A4: DB BRC ;37A4 CD +L37A5: DB 02H ;37A5 02 +L37A6: PUSH DE ;37A6 D5 + LD A,(DE) ;37A7 1A + AND 128 ;37A8 E680 + LD (L37A4),A ;37AA 32A437 + LD A,(DE) ;37AD 1A + OR 128 ;37AE F680 + LD (DE),A ;37B0 12 + LD HL,L38D7 ;37B1 21D738 + CALL L2F30 ;37B4 CD302F + POP HL ;37B7 E1 + PUSH HL ;37B8 E5 + LD A,64 ;37B9 3E40 + LD (L37A5),A ;37BB 32A537 + LD A,(HL) ;37BE 7E + SUB 193 ;37BF D6C1 + CALL NC,L3861 ;37C1 D46138 + POP DE ;37C4 D1 + PUSH DE ;37C5 D5 + LD HL,L38D2 ;37C6 21D238 + CALL L2D4A ;37C9 CD4A2D + POP HL ;37CC E1 + PUSH HL ;37CD E5 + LD DE,L3588 ;37CE 118835 + CALL L34EB ;37D1 CDEB34 + LD HL,L38AF ;37D4 21AF38 + CALL L35A8 ;37D7 CDA835 + LD HL,L38B4 ;37DA 21B438 + CALL L359C ;37DD CD9C35 + POP HL ;37E0 E1 + PUSH HL ;37E1 E5 + CALL L35A8 ;37E2 CDA835 + LD HL,L38B9 ;37E5 21B938 + CALL L359C ;37E8 CD9C35 + POP HL ;37EB E1 + PUSH HL ;37EC E5 + CALL L35A8 ;37ED CDA835 + LD HL,L38BE ;37F0 21BE38 + CALL L359C ;37F3 CD9C35 + POP HL ;37F6 E1 + PUSH HL ;37F7 E5 + CALL L35A8 ;37F8 CDA835 + LD HL,L38C3 ;37FB 21C338 + CALL L359C ;37FE CD9C35 + POP HL ;3801 E1 + PUSH HL ;3802 E5 + CALL L35A8 ;3803 CDA835 + LD HL,L38C8 ;3806 21C838 + CALL L359C ;3809 CD9C35 + POP HL ;380C E1 + PUSH HL ;380D E5 + CALL L35A8 ;380E CDA835 + LD HL,L38CD ;3811 21CD38 + CALL L359C ;3814 CD9C35 + LD HL,L3588 ;3817 218835 + LD B,(HL) ;381A 46 + RES 7,B ;381B CBB8 + LD A,(L37A5) ;381D 3AA537 + ADD A,B ;3820 80 + JP C,L38A5 ;3821 DAA538 + SUB 63 ;3824 D63F + JP C,L3895 ;3826 DA9538 + JP M,L38A5 ;3829 FAA538 + OR 128 ;382C F680 + LD (HL),A ;382E 77 + LD A,(L37A4) ;382F 3AA437 + OR A ;3832 B7 + JP Z,L383D ;3833 CA3D38 + LD HL,L3588 ;3836 218835 + POP DE ;3839 D1 + JP L34EB ;383A C3EB34 + +L383D: POP DE ;383D D1 + PUSH DE ;383E D5 + LD HL,L1614 ;383F 211416 + CALL L34EB ;3842 CDEB34 + POP DE ;3845 D1 + PUSH DE ;3846 D5 + LD A,(DE) ;3847 1A + CP 252 ;3848 FEFC + PUSH AF ;384A F5 + JP C,L3850 ;384B DA5038 + DEC A ;384E 3D + LD (DE),A ;384F 12 +L3850: LD HL,L3588 ;3850 218835 + CALL L2F30 ;3853 CD302F + POP AF ;3856 F1 + POP HL ;3857 E1 + RET C ;3858 D8 + LD A,(HL) ;3859 7E + DEC A ;385A 3D + LD (HL),A ;385B 77 + RET M ;385C F8 + PUSH HL ;385D E5 + JP L2DE0 ;385E C3E02D + +L3861: INC HL ;3861 23 + LD E,(HL) ;3862 5E + INC HL ;3863 23 + LD D,(HL) ;3864 56 + INC HL ;3865 23 + LD C,(HL) ;3866 4E + INC HL ;3867 23 + LD B,(HL) ;3868 46 + PUSH HL ;3869 E5 + INC A ;386A 3C + LD H,A ;386B 67 + XOR A ;386C AF +L386D: SLA E ;386D CB23 + RL D ;386F CB12 + RL C ;3871 CB11 + RL B ;3873 CB10 + RLA ;3875 17 + JP C,L38A3 ;3876 DAA338 + DEC H ;3879 25 + JP NZ,L386D ;387A C26D38 + ADD A,64 ;387D C640 + JP C,L38A3 ;387F DAA338 + LD (L37A5),A ;3882 32A537 + LD A,192 ;3885 3EC0 + CALL L3661 ;3887 CD6136 + POP HL ;388A E1 + LD (HL),B ;388B 70 + DEC HL ;388C 2B + LD (HL),C ;388D 71 + DEC HL ;388E 2B + LD (HL),D ;388F 72 + DEC HL ;3890 2B + LD (HL),E ;3891 73 + DEC HL ;3892 2B + LD (HL),A ;3893 77 + RET ;3894 C9 + +L3895: LD A,(L37A4) ;3895 3AA437 + OR A ;3898 B7 + JP Z,L1398 ;3899 CA9813 +L389C: LD HL,L1619 ;389C 211916 + POP DE ;389F D1 + JP L34EB ;38A0 C3EB34 + +L38A3: POP AF ;38A3 F1 + POP AF ;38A4 F1 +L38A5: LD A,(L37A4) ;38A5 3AA437 + OR A ;38A8 B7 + JP NZ,L1398 ;38A9 C29813 + JP L389C ;38AC C39C38 + +L38AF: DB 0B3H,7CH,8CH,90H ;38AF B37C8C90 Link 38AF found at , $37D5 + DB 0E3H ;38B3 E3 +L38B4: DB 0B6H,1FH,0DFH,62H ;38B4 B61FDF62 + DB 0F8H ;38B8 F8 +L38B9: DB 0B9H,0E2H,6DH,0DDH ;38B9 B9E26DDD + DB 0DEH ;38BD DE +L38BE: DB 0BCH,8BH,33H,0C1H ;38BE BC8B33C1 + DB 0A0H ;38C2 A0 +L38C3: DB 0BEH,89H,4AH,0F1H ;38C3 BE894AF1 + DB 0ADH ;38C7 AD +L38C8: DB 0BFH,34H,33H,0F2H ;38C8 BF3433F2 + DB 0FAH ;38CC FA +L38CD: DB 0C0H,36H,0F3H,04H ;38CD C036F304 + DB 0B5H ;38D1 B5 +L38D2: DB 0C0H,00H,00H,00H ;38D2 C0000000 + DB 80H ;38D6 80 +L38D7: DB 0C0H,0F8H,17H,72H ;38D7 C0F81772 + DB 0B1H ;38DB B1 +L38DC: DB 0DAH ;38DC DA +L38DD: DB 98H ;38DD 98 +L38DE: DB 23H ;38DE 23 +L38DF: PUSH DE ;38DF D5 + LD A,128 ;38E0 3E80 + LD (L38DD),A ;38E2 32DD38 + LD (L38DC),A ;38E5 32DC38 + EX DE,HL ;38E8 EB + LD A,(HL) ;38E9 7E + OR A ;38EA B7 + JP P,L1398 ;38EB F29813 + CP 138 ;38EE FE8A + JP NC,L38FE ;38F0 D2FE38 + XOR A ;38F3 AF + LD (L38DC),A ;38F4 32DC38 + EX DE,HL ;38F7 EB + CALL L36DC ;38F8 CDDC36 + POP HL ;38FB E1 + PUSH HL ;38FC E5 + LD A,(HL) ;38FD 7E +L38FE: CP 193 ;38FE FEC1 + CALL C,L39BF ;3900 DCBF39 + LD B,0 ;3903 0600 + CP 193 ;3905 FEC1 + JP Z,L3910 ;3907 CA1039 + SUB 193 ;390A D6C1 + LD B,A ;390C 47 + LD A,193 ;390D 3EC1 + LD (HL),A ;390F 77 +L3910: LD A,B ;3910 78 + LD (L38DE),A ;3911 32DE38 + LD DE,L3588 ;3914 118835 + CALL L34EB ;3917 CDEB34 + POP DE ;391A D1 + PUSH DE ;391B D5 + LD HL,L3A04 ;391C 21043A + CALL L2D4A ;391F CD4A2D + LD HL,L3A04 ;3922 21043A + CALL L359C ;3925 CD9C35 + POP DE ;3928 D1 + PUSH DE ;3929 D5 + LD HL,L3588 ;392A 218835 + CALL L2F30 ;392D CD302F + POP DE ;3930 D1 + PUSH DE ;3931 D5 + LD HL,L3A09 ;3932 21093A + CALL L2E59 ;3935 CD592E + POP HL ;3938 E1 + PUSH HL ;3939 E5 + LD DE,L358D ;393A 118D35 + CALL L34EB ;393D CDEB34 + POP HL ;3940 E1 + PUSH HL ;3941 E5 + LD DE,L358D ;3942 118D35 + CALL L2E59 ;3945 CD592E + LD DE,L3588 ;3948 118835 + LD HL,L358D ;394B 218D35 + CALL L34EB ;394E CDEB34 + LD HL,L39F0 ;3951 21F039 + CALL L35A8 ;3954 CDA835 + LD HL,L39F5 ;3957 21F539 + CALL L35A2 ;395A CDA235 + LD HL,L39FA ;395D 21FA39 + CALL L35A2 ;3960 CDA235 + LD HL,L39FF ;3963 21FF39 + CALL L359C ;3966 CD9C35 + POP HL ;3969 E1 + PUSH HL ;396A E5 + CALL L35A8 ;396B CDA835 + LD DE,L358D ;396E 118D35 + LD HL,L3588 ;3971 218835 + CALL L34EB ;3974 CDEB34 + LD A,(L38DE) ;3977 3ADE38 + ADD A,A ;397A 87 + INC A ;397B 3C + LD B,A ;397C 47 + LD A,8 ;397D 3E08 +L397F: BIT 7,B ;397F CB78 + JP NZ,L398A ;3981 C28A39 + SLA B ;3984 CB20 + DEC A ;3986 3D + JP NZ,L397F ;3987 C27F39 +L398A: ADD A,192 ;398A C6C0 + LD HL,L3588 ;398C 218835 + LD (HL),A ;398F 77 + INC HL ;3990 23 + XOR A ;3991 AF + LD (HL),A ;3992 77 + INC HL ;3993 23 + LD (HL),A ;3994 77 + INC HL ;3995 23 + LD (HL),A ;3996 77 + INC HL ;3997 23 + LD (HL),B ;3998 70 + LD HL,L3A0E ;3999 210E3A + CALL L35A8 ;399C CDA835 + LD HL,L358D ;399F 218D35 + CALL L359C ;39A2 CD9C35 + LD HL,L3588 ;39A5 218835 + LD A,(L38DD) ;39A8 3ADD38 + CALL L3B43 ;39AB CD433B + POP DE ;39AE D1 + PUSH DE ;39AF D5 + CALL L34EB ;39B0 CDEB34 + POP DE ;39B3 D1 + LD A,(L38DC) ;39B4 3ADC38 + OR A ;39B7 B7 + RET NZ ;39B8 C0 + LD HL,L3588 ;39B9 218835 + JP L2D4D ;39BC C34D2D + +L39BF: PUSH HL ;39BF E5 + LD DE,L3588 ;39C0 118835 + CALL L34EB ;39C3 CDEB34 + POP DE ;39C6 D1 + PUSH DE ;39C7 D5 + LD HL,L1614 ;39C8 211416 + CALL L34EB ;39CB CDEB34 + POP DE ;39CE D1 + PUSH DE ;39CF D5 + LD HL,L3588 ;39D0 218835 + CALL L2F30 ;39D3 CD302F + POP HL ;39D6 E1 + LD A,(HL) ;39D7 7E + CP 193 ;39D8 FEC1 + JP NC,L39E8 ;39DA D2E839 + PUSH HL ;39DD E5 + EX DE,HL ;39DE EB + LD HL,L1614 ;39DF 211416 + CALL L34EB ;39E2 CDEB34 + POP HL ;39E5 E1 + LD A,193 ;39E6 3EC1 +L39E8: EX AF,AF' ;39E8 08 + LD A,0 ;39E9 3E00 + LD (L38DD),A ;39EB 32DD38 + EX AF,AF' ;39EE 08 + RET ;39EF C9 + +L39F0: DB 0ADH,0A4H,62H,0CCH ;39F0 ADA462CC Link 39F0 found at , $3952 + DB 0AFH ;39F4 AF +L39F5: DB 0B2H,9FH,0E9H,47H ;39F5 B29FE947 + DB 0F9H ;39F9 F9 +L39FA: DB 0B8H,0A4H,82H,0AAH ;39FA B8A482AA + DB 0DCH ;39FE DC +L39FF: DB 0BFH,0BFH,0CCH,0B0H ;39FF BFBFCCB0 + DB 0AFH ;3A03 AF +L3A04: DB 0C1H,33H,0F3H,04H ;3A04 C133F304 + DB 0B5H ;3A08 B5 +L3A09: DB 0C3H,99H,79H,82H ;3A09 C3997982 + DB 0BAH ;3A0D BA +L3A0E: DB 0BFH,0F8H,17H,72H ;3A0E BFF81772 + DB 0B1H ;3A12 B1 +L3A13: PUSH DE ;3A13 D5 + CALL L38DF ;3A14 CDDF38 + POP DE ;3A17 D1 + LD HL,L3A1E ;3A18 211E3A + JP L2E59 ;3A1B C3592E + +L3A1E: DB 0BFH,0A9H,0D8H,5BH ;3A1E BFA9D85B Link 3A1E found at , $1EC0, $1F99, $3A19 + DB 0DEH ;3A22 DE +L3A23: DB 03H ;3A23 03 +L3A24: DB 64H ;3A24 64 +L3A25: PUSH DE ;3A25 D5 + EX DE,HL ;3A26 EB + LD A,(HL) ;3A27 7E + AND 128 ;3A28 E680 + LD (L3A23),A ;3A2A 32233A + SET 7,(HL) ;3A2D CBFE + LD DE,L1614 ;3A2F 111416 + CALL L33EB ;3A32 CDEB33 + LD A,128 ;3A35 3E80 + JP NC,L3A53 ;3A37 D2533A + LD DE,L3588 ;3A3A 118835 + POP HL ;3A3D E1 + PUSH HL ;3A3E E5 + CALL L34EB ;3A3F CDEB34 + POP DE ;3A42 D1 + PUSH DE ;3A43 D5 + LD HL,L1614 ;3A44 211416 + CALL L34EB ;3A47 CDEB34 + POP DE ;3A4A D1 + PUSH DE ;3A4B D5 + LD HL,L3588 ;3A4C 218835 + CALL L2F30 ;3A4F CD302F + XOR A ;3A52 AF +L3A53: LD (L3A24),A ;3A53 32243A + POP HL ;3A56 E1 + PUSH HL ;3A57 E5 + LD DE,L3588 ;3A58 118835 + CALL L34EB ;3A5B CDEB34 + POP HL ;3A5E E1 + PUSH HL ;3A5F E5 + CALL L35A8 ;3A60 CDA835 + LD HL,L3588 ;3A63 218835 + LD DE,L358D ;3A66 118D35 + CALL L34EB ;3A69 CDEB34 + LD HL,L3AD3 ;3A6C 21D33A + CALL L35A8 ;3A6F CDA835 + LD HL,L3AD8 ;3A72 21D83A + CALL L35A2 ;3A75 CDA235 + LD HL,L3ADD ;3A78 21DD3A + CALL L35A2 ;3A7B CDA235 + LD HL,L3AE2 ;3A7E 21E23A + CALL L35A2 ;3A81 CDA235 + LD HL,L3AE7 ;3A84 21E73A + CALL L35A2 ;3A87 CDA235 + LD HL,L3AEC ;3A8A 21EC3A + CALL L35A2 ;3A8D CDA235 + LD HL,L3AF1 ;3A90 21F13A + CALL L35A2 ;3A93 CDA235 + LD HL,L3AF6 ;3A96 21F63A + CALL L35A2 ;3A99 CDA235 + LD HL,L3AFB ;3A9C 21FB3A + CALL L35A2 ;3A9F CDA235 + LD HL,L1614 ;3AA2 211416 + CALL L359C ;3AA5 CD9C35 + POP HL ;3AA8 E1 + PUSH HL ;3AA9 E5 + CALL L35A8 ;3AAA CDA835 + POP DE ;3AAD D1 + PUSH DE ;3AAE D5 + LD HL,L3588 ;3AAF 218835 + CALL L34EB ;3AB2 CDEB34 + LD A,(L3A24) ;3AB5 3A243A + OR A ;3AB8 B7 + JP NZ,L3ACC ;3AB9 C2CC3A + POP DE ;3ABC D1 + PUSH DE ;3ABD D5 + LD HL,L3684 ;3ABE 218436 + CALL L34EB ;3AC1 CDEB34 + POP DE ;3AC4 D1 + PUSH DE ;3AC5 D5 + LD HL,L3588 ;3AC6 218835 + CALL L2D4A ;3AC9 CD4A2D +L3ACC: POP HL ;3ACC E1 + LD A,(L3A23) ;3ACD 3A233A + JP L3B43 ;3AD0 C3433B + +L3AD3: DB 37H,0CAH,9AH,56H ;3AD3 37CA9A56 Link 3AD3 found at , $3A6D + DB 0DFH ;3AD7 DF +L3AD8: DB 0BAH,12H,77H,0CCH ;3AD8 BA1277CC + DB 0ABH ;3ADC AB +L3ADD: DB 3BH,23H,0B2H,5EH ;3ADD 3B23B25E + DB 0F8H ;3AE1 F8 +L3AE2: DB 0BCH,20H,63H,90H ;3AE2 BC206390 + DB 0E9H ;3AE6 E9 +L3AE7: DB 3DH,0EEH,3DH,0E0H ;3AE7 3DEE3DE0 Link 3AE7 found at , $3A85 + DB 0AAH ;3AEB AA +L3AEC: DB 0BDH,4FH,1AH,0D5H ;3AEC BD4F1AD5 + DB 0DFH ;3AF0 DF +L3AF1: DB 3EH,0E3H,0AFH,03H ;3AF1 3EE3AF03 + DB 92H ;3AF5 92 +L3AF6: DB 0BEH,2AH,7BH,0C7H ;3AF6 BE2A7BC7 + DB 0CCH ;3AFA CC +L3AFB: DB 3FH,17H,96H,0AAH ;3AFB 3F1796AA + DB 0AAH ;3AFF AA +L3B00: DB 0E1H,22H,03H,64H ;3B00 E1220364 +L3B04: DB 0F1H ;3B04 F1 +L3B05: DB 0C2H ;3B05 C2 +L3B06: DB 0CCH ;3B06 CC + DB 3CH,2AH,0BFH,3AH ;3B07 3C2ABF3A +L3B0B: PUSH DE ;3B0B D5 + LD DE,L3B06 ;3B0C 11063B + CALL L34EB ;3B0F CDEB34 + POP HL ;3B12 E1 + PUSH HL ;3B13 E5 + LD BC,L0004 ;3B14 010400 + ADD HL,BC ;3B17 09 + LD A,(HL) ;3B18 7E + OR A ;3B19 B7 + POP HL ;3B1A E1 + PUSH HL ;3B1B E5 + JP P,L2DE0 ;3B1C F2E02D + LD A,(HL) ;3B1F 7E + AND 128 ;3B20 E680 + LD (L3B05),A ;3B22 32053B + SET 7,(HL) ;3B25 CBFE + EX DE,HL ;3B27 EB + CALL L38DF ;3B28 CDDF38 + LD A,(L3B05) ;3B2B 3A053B + OR A ;3B2E B7 + CALL Z,L3B56 ;3B2F CC563B + POP DE ;3B32 D1 + PUSH DE ;3B33 D5 + LD HL,L3B06 ;3B34 21063B + CALL L2E59 ;3B37 CD592E + POP DE ;3B3A D1 + PUSH DE ;3B3B D5 + CALL L37A6 ;3B3C CDA637 + POP HL ;3B3F E1 + LD A,(L3B05) ;3B40 3A053B +L3B43: OR A ;3B43 B7 + RET NZ ;3B44 C0 +L3B45: LD BC,L0004 ;3B45 010400 + ADD HL,BC ;3B48 09 + BIT 7,(HL) ;3B49 CB7E + PUSH AF ;3B4B F5 + XOR A ;3B4C AF + SBC HL,BC ;3B4D ED42 + POP AF ;3B4F F1 + RET Z ;3B50 C8 + LD A,(HL) ;3B51 7E + ADD A,128 ;3B52 C680 + LD (HL),A ;3B54 77 + RET ;3B55 C9 + +L3B56: LD HL,L3B06 ;3B56 21063B + LD DE,L3B00 ;3B59 11003B + CALL L34EB ;3B5C CDEB34 + LD DE,L3B06 ;3B5F 11063B + CALL L340E ;3B62 CD0E34 + LD DE,L3B00 ;3B65 11003B + LD HL,L3B06 ;3B68 21063B + CALL L2D4A ;3B6B CD4A2D + LD HL,L3B04 ;3B6E 21043B + LD A,(HL) ;3B71 7E + OR A ;3B72 B7 + JP M,L1398 ;3B73 FA9813 + LD HL,L3B06 ;3B76 21063B + LD A,(HL) ;3B79 7E + INC HL ;3B7A 23 + LD E,(HL) ;3B7B 5E + INC HL ;3B7C 23 + LD D,(HL) ;3B7D 56 + INC HL ;3B7E 23 + LD C,(HL) ;3B7F 4E + INC HL ;3B80 23 + LD B,(HL) ;3B81 46 + AND 127 ;3B82 E67F + SUB 65 ;3B84 D641 + JP C,L3B9B ;3B86 DA9B3B + JP Z,L3B98 ;3B89 CA983B +L3B8C: SLA E ;3B8C CB23 + RL D ;3B8E CB12 + RL C ;3B90 CB11 + RL B ;3B92 CB10 + DEC A ;3B94 3D + JP NZ,L3B8C ;3B95 C28C3B +L3B98: RL B ;3B98 CB10 + RET C ;3B9A D8 +L3B9B: LD A,128 ;3B9B 3E80 + LD (L3B05),A ;3B9D 32053B + RET ;3BA0 C9 + +L3BA1: LD A,(L3D26) ;3BA1 3A263D + OR A ;3BA4 B7 + RET Z ;3BA5 C8 +L3BA6: CALL L3C66 ;3BA6 CD663C + RET C ;3BA9 D8 + LD A,13 ;3BAA 3E0D + CALL L3C87 ;3BAC CD873C + XOR A ;3BAF AF + LD (L3D26),A ;3BB0 32263D + JP L3CC6 ;3BB3 C3C63C + + DB 0CDH,66H,3CH,0D8H ;3BB6 CD663CD8 Link 3BB6 found at , $1CB1 + DB 0C5H,0D5H,3AH,26H ;3BBA C5D53A26 + DB 3DH,47H,1AH,0FEH ;3BBE 3D471AFE + DB 0DH,0CAH,1DH,3CH ;3BC2 0DCA1D3C + DB 0FEH,20H,0DCH,0D3H ;3BC6 FE20DCD3 + DB 3BH,0CDH,87H,3CH ;3BCA 3BCD873C + DB 04H,13H,0C3H,0C0H ;3BCE 0413C3C0 + DB 3BH,0FEH,15H,0CAH ;3BD2 3BFE15CA + DB 0ECH,3BH,0FEH,12H ;3BD6 EC3BFE12 + DB 0CAH,0F1H,3BH,0FEH ;3BDA CAF13BFE + DB 11H,0CAH,0F6H,3BH ;3BDE 11CAF63B + DB 0FEH,16H,0CAH,0FBH ;3BE2 FE16CAFB + DB 3BH,0F1H,13H,0C3H ;3BE6 3BF113C3 + DB 0C0H,3BH,3EH,0FH ;3BEA C03B3E0F + DB 06H,0FFH,0C9H,3EH ;3BEE 06FFC93E + DB 0BH,06H,0FFH,0C9H ;3BF2 0B06FFC9 + DB 3EH,09H,06H,0FFH ;3BF6 3E0906FF + DB 0C9H,3EH,0CH,0CDH ;3BFA C93E0CCD + DB 87H,3CH,3EH,0AH ;3BFE 873C3E0A + DB 06H,0FFH,0C9H ;3C02 06FFC9 +L3C05: CALL L3C66 ;3C05 CD663C + RET C ;3C08 D8 + PUSH BC ;3C09 C5 + PUSH DE ;3C0A D5 + LD A,(L3D26) ;3C0B 3A263D + LD B,A ;3C0E 47 +L3C0F: LD A,(DE) ;3C0F 1A + CP 13 ;3C10 FE0D + JP Z,L3C1D ;3C12 CA1D3C + CALL L3C87 ;3C15 CD873C + INC B ;3C18 04 + INC DE ;3C19 13 + JP L3C0F ;3C1A C30F3C + +L3C1D: LD A,B ;3C1D 78 + CP 80 ;3C1E FE50 + JP C,L3C25 ;3C20 DA253C + SUB 80 ;3C23 D650 +L3C25: LD (L3D26),A ;3C25 32263D + POP DE ;3C28 D1 + POP BC ;3C29 C1 + JP L3CC6 ;3C2A C3C63C + + DB 0FEH,0DH,0CAH,0A6H ;3C2D FE0DCAA6 Link 3C2D found at , $2EBF, $2F16 + DB 3BH,0C5H,0D5H,4FH ;3C31 3BC5D54F + DB 3AH,26H,3DH,47H ;3C35 3A263D47 + DB 0CDH,66H,3CH,0D2H ;3C39 CD663CD2 + DB 42H,3CH,0D1H,0C1H ;3C3D 423CD1C1 + DB 0C9H,79H,0CDH,87H ;3C41 C979CD87 + DB 3CH,04H,0C3H,1DH ;3C45 3C04C31D + DB 3CH ;3C49 3C +L3C4A: CALL L3C66 ;3C4A CD663C + RET C ;3C4D D8 + PUSH BC ;3C4E C5 + PUSH DE ;3C4F D5 + LD A,(L3D26) ;3C50 3A263D + LD B,A ;3C53 47 +L3C54: LD A,32 ;3C54 3E20 + CALL L3C87 ;3C56 CD873C + INC B ;3C59 04 + LD A,B ;3C5A 78 +L3C5B: SUB 10 ;3C5B D60A + JP C,L3C54 ;3C5D DA543C + JP NZ,L3C5B ;3C60 C25B3C + JP L3C1D ;3C63 C31D3C + +L3C66: LD A,5 ;3C66 3E05 + CALL L3C78 ;3C68 CD783C + RET C ;3C6B D8 + LD A,6 ;3C6C 3E06 + CALL L3C78 ;3C6E CD783C + JP NC,L3C76 ;3C71 D2763C + XOR A ;3C74 AF + RET ;3C75 C9 + +L3C76: SCF ;3C76 37 + RET ;3C77 C9 + +L3C78: CALL L3C87 ;3C78 CD873C + LD A,0 ;3C7B 3E00 + CALL L3C9D ;3C7D CD9D3C + IN A,(PTRSTATUS) ;3C80 DBFE + RRCA ;3C82 0F + RRCA ;3C83 0F + RET ;3C84 C9 + +L3C85: LD A,15 ;3C85 3E0F +L3C87: PUSH AF ;3C87 F5 + LD A,0 ;3C88 3E00 + CALL L3C9D ;3C8A CD9D3C + POP AF ;3C8D F1 + OUT (PTRDATA),A ;3C8E D3FF + LD A,128 ;3C90 3E80 + OUT (PTRSTROBE),A ;3C92 D3FE + LD A,1 ;3C94 3E01 + CALL L3C9D ;3C96 CD9D3C + XOR A ;3C99 AF + OUT (PTRSTROBE),A ;3C9A D3FE + RET ;3C9C C9 + +L3C9D: PUSH BC ;3C9D C5 + PUSH DE ;3C9E D5 + LD D,A ;3C9F 57 + LD E,6 ;3CA0 1E06 + LD BC,COLDSTART ;3CA2 010000 +L3CA5: IN A,(PTRSTATUS) ;3CA5 DBFE + AND 13 ;3CA7 E60D + CP D ;3CA9 BA + JP NZ,L3CB0 ;3CAA C2B03C + POP DE ;3CAD D1 + POP BC ;3CAE C1 + RET ;3CAF C9 + +L3CB0: DEC BC ;3CB0 0B + LD A,B ;3CB1 78 + OR C ;3CB2 B1 + JP NZ,L3CA5 ;3CB3 C2A53C + DEC E ;3CB6 1D + JP NZ,L3CA5 ;3CB7 C2A53C + CALL CRLF ;3CBA CD0900 + LD DE,L3CF0 ;3CBD 11F03C + CALL MESSAGE ;3CC0 CD1500 + JP L124B ;3CC3 C34B12 + +L3CC6: LD A,7 ;3CC6 3E07 + CALL L3C78 ;3CC8 CD783C + JP NC,L3CDA ;3CCB D2DA3C + LD A,8 ;3CCE 3E08 + CALL L3C78 ;3CD0 CD783C + RET C ;3CD3 D8 + LD DE,L3D14 ;3CD4 11143D + JP L3CDD ;3CD7 C3DD3C + +L3CDA: LD DE,L3D1A ;3CDA 111A3D +L3CDD: CALL CRLF ;3CDD CD0900 + CALL MESSAGE ;3CE0 CD1500 + LD DE,L3D09 ;3CE3 11093D + CALL MESSAGE ;3CE6 CD1500 + XOR A ;3CE9 AF + LD (L3D26),A ;3CEA 32263D + JP L124B ;3CED C34B12 + +L3CF0: DB "NO POWER OR " ;3CF0 4E4F20504F574552204F5220 + DB "NO CONNECTIO" ;3CFC 4E4F20434F4E4E454354494F + DB "N" ;3D08 4E +L3D09: DB " (PRINTER)" ;3D09 20285052494E54455229 + DB 0DH ;3D13 0D +L3D14: DB "ALARM" ;3D14 414C41524D + DB 0DH ;3D19 0D +L3D1A: DB "PAPER EM" ;3D1A 504150455220454D + DB 50H,54H,59H,0DH ;3D22 5054590D +L3D26: DB 0FFH,0F5H,0C5H,0D5H ;3D26 FFF5C5D5 + DB 0E5H,01H,00H,00H ;3D2A E5010000 + DB 2AH,71H,11H,3EH ;3D2E 2A71113E + DB 28H,95H,47H,21H ;3D32 28954721 + DB 0C4H,3DH,1AH,0FEH ;3D36 C43D1AFE + DB 0DH,0C2H,46H,3DH ;3D3A 0DC2463D + DB 0CDH,69H,3DH,0E1H ;3D3E CD693DE1 + DB 0D1H,0C1H,0F1H,0C9H ;3D42 D1C1F1C9 + DB 0FEH,20H,0D2H,57H ;3D46 FE20D257 + DB 3DH,0CDH,69H,3DH ;3D4A 3DCD693D + DB 1AH,13H,4FH,0CDH ;3D4E 1A134FCD + DB 46H,09H,0C3H,2BH ;3D52 4609C32B + DB 3DH,1AH,13H,0CDH ;3D56 3D1A13CD + DB 0B9H,0BH,77H,23H ;3D5A B90B7723 + DB 0CH,05H,0C2H,38H ;3D5E 0C05C238 + DB 3DH,0CDH,69H,3DH ;3D62 3DCD693D + DB 0C3H,2BH,3DH,79H ;3D66 C32B3D79 + DB 0B7H,0C8H,0D5H,06H ;3D6A B7C8D506 + DB 00H,3AH,94H,11H ;3D6E 003A9411 + DB 81H,0FEH,50H,0DAH ;3D72 81FE50DA + DB 7AH,3DH,0D6H,50H ;3D76 7A3DD650 + DB 32H,94H,11H,0CDH ;3D7A 329411CD + DB 0B1H,0FH,3AH,71H ;3D7E B10F3A71 + DB 11H,81H,32H,71H ;3D82 11813271 + DB 11H,0EBH,21H,0C4H ;3D86 11EB21C4 + DB 3DH,0CDH,0A6H,0DH ;3D8A 3DCDA60D + DB 0EDH,0B0H,0D1H,2AH ;3D8E EDB0D12A + DB 71H,11H,7DH,0FEH ;3D92 71117DFE + DB 28H,0C0H,0D5H,5CH ;3D96 28C0D55C + DB 16H,00H,21H,73H ;3D9A 16002173 + DB 11H,19H,7EH,0B7H ;3D9E 11197EB7 + DB 0C2H,0ABH,3DH,23H ;3DA2 C2AB3D23 + DB 36H,01H,23H,36H ;3DA6 36012336 + DB 00H,2AH,71H,11H ;3DAA 002A7111 + DB 2EH,00H,24H,22H ;3DAE 2E002422 + DB 71H,11H,0D1H,7CH ;3DB2 7111D17C + DB 0FEH,19H,0C0H,26H ;3DB6 FE19C026 + DB 18H,22H,71H,11H ;3DBA 18227111 + DB 3EH,0C0H,0CDH,0DCH ;3DBE 3EC0CDDC + DB 0DH,0C9H,13H,0CH ;3DC2 0DC9130C + DB 0FEH,0DH,0C2H,93H ;3DC6 FE0DC293 + DB 3DH,0DH,0D1H,22H ;3DCA 3D0DD122 + DB 7BH,61H,0E1H,23H ;3DCE 7B61E123 + DB 23H,23H,0E5H,0C9H ;3DD2 2323E5C9 + DB 3AH,7DH,61H,0B7H ;3DD6 3A7D61B7 + DB 3AH,7AH,61H,0C9H ;3DDA 3A7A61C9 + DB 0CDH,0C7H,29H,0D5H ;3DDE CDC729D5 + DB 0CDH,0B2H,26H,2CH ;3DE2 CDB2262C + DB 0CDH,0BH,37H,0CDH ;3DE6 CD0B37CD + DB 97H,34H,78H,0B7H ;3DEA 973478B7 + DB 0C2H,9DH,23H,22H ;3DEE C29D2322 + DB 03H,64H,0CDH,94H ;3DF2 0364CD94 + DB 29H,0D1H,7BH,0FEH ;3DF6 29D17BFE + DB 0F0H,0D2H,98H,23H ;3DFA F0D29823 + DB 32H,02H,3EH,0DBH ;3DFE 32023EDB + DB 0FFH,0B7H,47H,0CAH ;3E02 FFB747CA + DB 15H,3EH,3EH,0C8H ;3E06 153E3EC8 + DB 0CBH,78H,0C2H,17H ;3E0A CB78C217 + DB 3EH,0CBH,20H,3DH ;3E0E 3ECB203D + DB 0C3H,0AH,3EH,3EH ;3E12 C30A3E3E + DB 80H,2AH,46H,62H ;3E16 802A4662 + DB 77H,23H,0AFH,77H ;3E1A 7723AF77 + DB 23H,77H,23H,77H ;3E1E 23772377 + DB 23H,70H,57H,5FH ;3E22 2370575F + DB 47H,0EH,05H,0CDH ;3E26 470E05CD + DB 8FH,29H,0CDH,8EH ;3E2A 8F29CD8E + DB 2BH,9DH,23H,0C3H ;3E2E 2B9D23C3 + DB 0D0H,29H,0CDH,0C7H ;3E32 D029CDC7 + DB 29H,7BH,0FEH,0F0H ;3E36 297BFEF0 + DB 0D2H,98H,23H,32H ;3E3A D2982332 + DB 49H,3EH,0CDH,0B2H ;3E3E 493ECDB2 + DB 26H,2CH,0CDH,0C7H ;3E42 262CCDC7 + DB 29H,7BH,0D3H,0FFH ;3E46 297BD3FF + DB 0C3H,0D3H,29H,0CDH ;3E4A C3D329CD + DB 0C7H,29H,7BH,0FEH ;3E4E C7297BFE + DB 0FFH,0CAH,98H,23H ;3E52 FFCA9823 + DB 0D5H,0CDH,0B2H,26H ;3E56 D5CDB226 + DB 2CH,0CDH,0BH,37H ;3E5A 2CCD0B37 + DB 0CDH,97H,34H,22H ;3E5E CD973422 + DB 03H,64H,78H,0B7H ;3E62 036478B7 + DB 0CAH,8EH,23H,21H ;3E66 CA8E2321 + DB 3FH,3FH,0C1H,06H ;3E6A 3F3FC106 + DB 0AH,7EH,0FEH,0FFH ;3E6E 0A7EFEFF + DB 28H,0EH,79H,0BEH ;3E72 280E79BE + DB 28H,0AH,23H,23H ;3E76 280A2323 + DB 23H,23H,23H,10H ;3E7A 23232310 + DB 0F0H,0C3H,98H,23H ;3E7E F0C39823 + DB 23H,23H,23H,73H ;3E82 23232373 + DB 23H,72H,2AH,03H ;3E86 23722A03 + DB 64H,0CDH,52H,26H ;3E8A 64CD5226 + DB 0C3H,0D3H,29H,0CDH ;3E8E C3D329CD + DB 0C7H,29H,7BH,0FEH ;3E92 C7297BFE + DB 0FFH,0CAH,98H,23H ;3E96 FFCA9823 + DB 0D5H,0CDH,0B2H,26H ;3E9A D5CDB226 + DB 2CH,0CDH,03H,27H ;3E9E 2CCD0327 + DB 22H,03H,64H,21H ;3EA2 22036421 + DB 3FH,3FH,0C1H,06H ;3EA6 3F3FC106 + DB 0AH,7EH,0FEH,0FFH ;3EAA 0A7EFEFF + DB 28H,14H,79H,0BEH ;3EAE 281479BE + DB 28H,0AH,23H,23H ;3EB2 280A2323 + DB 23H,23H,23H,10H ;3EB6 23232310 + DB 0F0H,0C3H,98H,23H ;3EBA F0C39823 + DB 06H,02H,3EH,0FFH ;3EBE 06023EFF + DB 18H,03H,06H,03H ;3EC2 18030603 + DB 71H,23H,73H,23H ;3EC6 71237323 + DB 72H,23H,77H,10H ;3ECA 72237710 + DB 0FCH,0C3H,88H,3EH ;3ECE FCC3883E + DB 22H,03H,64H,21H ;3ED2 22036421 + DB 3EH,3FH,23H,7EH ;3ED6 3E3F237E + DB 0FEH,0FFH,0CAH,88H ;3EDA FEFFCA88 + DB 3EH,23H,23H,23H ;3EDE 3E232323 + DB 23H,7EH,0FEH,0F0H ;3EE2 237EFEF0 + DB 28H,0F0H,7EH,0FEH ;3EE6 28F07EFE + DB 0FFH,28H,0DH,23H ;3EEA FF280D23 + DB 7EH,0FEH,0FFH,0CAH ;3EEE 7EFEFFCA + DB 1BH,4FH,23H,23H ;3EF2 1B4F2323 + DB 23H,23H,18H,0EEH ;3EF6 232318EE + DB 2BH,2BH,56H,2BH ;3EFA 2B2B562B + DB 5EH,0C3H,00H,00H ;3EFE 5EC30000 + + + + END + diff --git a/software/asm/monitor_1Z-013A-KM.asm b/software/asm/monitor_1z-013a-km.asm similarity index 91% rename from software/asm/monitor_1Z-013A-KM.asm rename to software/asm/monitor_1z-013a-km.asm index 78d3fea..0130051 100644 --- a/software/asm/monitor_1Z-013A-KM.asm +++ b/software/asm/monitor_1z-013a-km.asm @@ -4,4 +4,4 @@ ROW: EQU 25 ; Number of rows on display screen. SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. MODE80C:EQU 0 - INCLUDE "1Z-013A-KM.asm" + INCLUDE "1z-013a-km.asm" diff --git a/software/asm/monitor_1Z-013A.asm b/software/asm/monitor_1z-013a.asm similarity index 92% rename from software/asm/monitor_1Z-013A.asm rename to software/asm/monitor_1z-013a.asm index 7bb488b..7b02f6e 100644 --- a/software/asm/monitor_1Z-013A.asm +++ b/software/asm/monitor_1z-013a.asm @@ -4,4 +4,4 @@ ROW: EQU 25 ; Number of rows on display screen. SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. MODE80C:EQU 0 - INCLUDE "1Z-013A.asm" + INCLUDE "1z-013a.asm" diff --git a/software/asm/monitor_80c_1Z-013A-KM.asm b/software/asm/monitor_80c_1z-013a-km.asm similarity index 91% rename from software/asm/monitor_80c_1Z-013A-KM.asm rename to software/asm/monitor_80c_1z-013a-km.asm index aaf1380..0524c2e 100644 --- a/software/asm/monitor_80c_1Z-013A-KM.asm +++ b/software/asm/monitor_80c_1z-013a-km.asm @@ -4,4 +4,4 @@ ROW: EQU 25 ; Number of rows on display screen. SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. MODE80C:EQU 1 - INCLUDE "1Z-013A-KM.asm" + INCLUDE "1z-013a-km.asm" diff --git a/software/asm/monitor_80c_1Z-013A.asm b/software/asm/monitor_80c_1z-013a.asm similarity index 92% rename from software/asm/monitor_80c_1Z-013A.asm rename to software/asm/monitor_80c_1z-013a.asm index 3c1f57e..4a6b8ae 100644 --- a/software/asm/monitor_80c_1Z-013A.asm +++ b/software/asm/monitor_80c_1z-013a.asm @@ -4,4 +4,4 @@ ROW: EQU 25 ; Number of rows on display screen. SCRNSZ: EQU COLW * ROW ; Total size, in bytes, of the screen display area. MODE80C:EQU 1 - INCLUDE "1Z-013A.asm" + INCLUDE "1z-013a.asm" diff --git a/software/asm/monitor_80c_SA1510.asm b/software/asm/monitor_80c_sa1510.asm similarity index 100% rename from software/asm/monitor_80c_SA1510.asm rename to software/asm/monitor_80c_sa1510.asm diff --git a/software/asm/monitor_SA1510.asm b/software/asm/monitor_sa1510.asm similarity index 100% rename from software/asm/monitor_SA1510.asm rename to software/asm/monitor_sa1510.asm diff --git a/software/asm/MSBASIC.asm b/software/asm/msbasic.asm similarity index 100% rename from software/asm/MSBASIC.asm rename to software/asm/msbasic.asm diff --git a/software/asm/mz-xz009/BASIC.ASM b/software/asm/mz-xz009/BASIC.ASM new file mode 100644 index 0000000..2ff997f --- /dev/null +++ b/software/asm/mz-xz009/BASIC.ASM @@ -0,0 +1,2568 @@ +; -------------------------- +; MZ-800 BASIC Main program +; FI:BASIC ver 1.0A 9.06.84 +; Programed by T.Miho +; -------------------------- +; + INCLD MACRO +; +%YEN: EQU 7DH +; +$BASIC: ENT + PUSH BC + CALL CLSHET + POP BC + LD HL,NEWAD0 + LD (TEXTST),HL + LD HL,CLSST + LD (SYSSTA),HL + LD A,B + OR A +COLDRT: JP Z,$BAS2 ;JP $BAS3 Change + CP 1 + JR Z,$BAS2 + LD HL,ARUN + LD DE,INBUFL + LD BC,16 + LDIR +$BAS2: LD DE,IMDBUF + SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM + SVC .BELL + RST 3 + DEFB .BELL + ENDM + LD A,C3H + LD (COLDRT),A + LD HL,$BAS3 + LD (COLDRT+1),HL +; +$BAS3: LD HL,NEWAD0 +MEMCLI: LD M,0 + INC HL + LD A,H + CP FFH ;mem max + JR C,MEMCLI + CALL MEMSET + CALL NEWTXT + CALL IOINIT + JR HOTENT +; +ARUN: DEFB 15 + DEFM 'RUN "AUTO RUN"' + + + + DEFB 0DH +; +; + +CLSHET: LD A,1 ;INIT "CRT:M1" + SVC .DSMOD + RST 3 + DEFB .DSMOD + ENDM + XOR A + LD (PWMODE),A + INC A + LD (CRTMD2),A + LD (CRTMD1),A + SVC .ICRT + RST 3 + DEFB .ICRT + ENDM + RET +; +CLSST: CALL CLSHET +; +HOTENT: LD HL,ERRORA + LD (ERRORP),HL +; +; +OK: ENT + SVC .CR2 + RST 3 + DEFB .CR2 + ENDM + LD DE,OKMES + SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM + SVC .CR1 + RST 3 + DEFB .CR1 + ENDM +INPAGN: ENT + LD A,(CONTFG) + OR A + JR NZ,INPAG2 + LD SP,(INTFAC) + LD HL,FFFFH + PUSH HL + LD (STACK),SP +INPAG2: LD HL,0 ;Set direct-mode + LD (LNOBUF),HL + XOR A + LD (CMTMSG),A + CALL AUTODS + SVC .ERCVR ;FD,QD motor off + RST 3 + DEFB .ERCVR + ENDM + LD DE,KEYBUF + SVC .GETL + RST 3 + DEFB .GETL + ENDM + JR NC,NORINP +AUTOFF: LD HL,AUTOFG + + LD A,M + OR A + LD M,0 + JR NZ,OK + JR INPAGN +; +; +NORINP: CALL SKPDE + OR A + JR Z,INPAGN + CALL TSTNUM + JP NC,EDITOR + LD HL,IMDBUF ;Direct command + PUSH HL + CALL CVIMTX + INC HL + LD (NXTLPT),HL + CALL LDHL00 + POP HL + JR MAIN +; +; Execute +; +MAIN9: CALL ENDZ +; +MAIN: ENT + LD (STACK),SP +MAIN0: ENT + LD DE,MAIN9 + PUSH DE +MAIN2: LD (TEXTPO),HL + CALL BRKCHK + JP Z,BREAKZ +MAIN4: LD A,M + INC HL + CP 80H + JR NC,STATEM + CP "'" + JP Z,DATA + CP " " + JR Z,MAIN4 + CP ":" + JR Z,MAIN2 + OR A + JR Z,ENDLIN ;END OF LINE + DEC HL + SUB "A" + CP 26 + JP C,LET + JP ER01 +; +ENDLIN: ENT + LD HL,(NXTLPT) +NXLINE: ENT + LD E,M + INC HL + LD D,M + LD A,D + OR E + JR Z,ENDPRG ;END OF PROGRAM + + LD (CMTMSG),A + EX DE,HL + ADD HL,DE + DEC HL + LD (NXTLPT),HL + EX DE,HL + INC HL + CALL LDDEMI + LD (LNOBUF),DE + CALL TRDISP + POP DE + JR MAIN +; +ENDPRG: POP HL + CALL ?DIRECT + JP Z,OK + XOR A + LD (CONTFG),A + LD A,(ERRORF) + CP 2 + JP Z,ER20 + PUSH HL + JP END ;end command +; +; +STATEM: CP FFH ;command jp + JP Z,PFUNCT + LD DE,GJPTBL + CP FEH + JR NZ,NROSTM + LD A,M + INC HL + JR MIDFJP +NROSTM: CP E0H + JP NC,ER01 + LD DE,SJPTBL +MIDFJP: ADD A,A + PUSH HL + EX DE,HL + LD E,A + LD D,0 + ADD HL,DE + LD A,M + INC HL + LD H,M + LD L,A + EX (SP),HL +ENDCHK: ENT + CALL HLFTCH +ENDCK0: ENT + OR A + RET Z + CP ":" + RET +; +?DIRECT:ENT ;Direct mode ? + PUSH HL + LD HL,(LNOBUF) + LD A,L + OR H + + POP HL + RET +; + SKP H + +; +; TABLE +; +; +CTBL1: ENT + TBL GOT,O ; 80 + DEFM "GOT" + DEFB "O"+80H + ENDM + TBL GOSU,B + DEFM "GOSU" + DEFB "B"+80H + ENDM + DEFB 80H + TBL RU,N + DEFM "RU" + DEFB "N"+80H + ENDM + TBL RETUR,N + DEFM "RETUR" + + DEFB "N"+80H + ENDM + TBL RESTOR,E + DEFM "RESTOR" + + DEFB "E"+80H + ENDM + TBL RESUM,E + DEFM "RESUM" + + DEFB "E"+80H + ENDM + TBL LIS,T + DEFM "LIS" + DEFB "T"+80H + ENDM + DEFB 80H ; 88 + TBL DELET,E + DEFM "DELET" + + DEFB "E"+80H + ENDM + TBL RENU,M + DEFM "RENU" + DEFB "M"+80H + ENDM + TBL AUT,O + DEFM "AUT" + DEFB "O"+80H + ENDM + TBL EDI,T + DEFM "EDI" + DEFB "T"+80H + ENDM + TBL FO,R + + DEFM "FO" + DEFB "R"+80H + ENDM + TBL NEX,T + DEFM "NEX" + DEFB "T"+80H + ENDM + TBL PRIN,T + DEFM "PRIN" + DEFB "T"+80H + ENDM +; + DEFB 80H ; 90 + TBL INPU,T + DEFM "INPU" + DEFB "T"+80H + ENDM + DEFB 80H + TBL I,F + DEFM "I" + DEFB "F"+80H + ENDM + TBL DAT,A + DEFM "DAT" + DEFB "A"+80H + ENDM + TBL REA,D + DEFM "REA" + DEFB "D"+80H + ENDM + TBL DI,M + DEFM "DI" + DEFB "M"+80H + ENDM + TBL RE,M + DEFM "RE" + DEFB "M"+80H + ENDM + TBL EN,D ; 98 + DEFM "EN" + DEFB "D"+80H + ENDM + TBL STO,P + DEFM "STO" + DEFB "P"+80H + ENDM + TBL CON,T + DEFM "CON" + DEFB "T"+80H + ENDM + TBL CL,S + DEFM "CL" + DEFB "S"+80H + ENDM + DEFB 80H + TBL O,N + DEFM "O" + DEFB "N"+80H + ENDM + TBL LE,T + + DEFM "LE" + DEFB "T"+80H + ENDM + TBL NE,W + DEFM "NE" + DEFB "W"+80H + ENDM +; + TBL POK,E ; A0 + DEFM "POK" + DEFB "E"+80H + ENDM + TBL OF,F + DEFM "OF" + DEFB "F"+80H + ENDM + TBL PMOD,E + DEFM "PMOD" + DEFB "E"+80H + ENDM + TBL PSKI,P + DEFM "PSKI" + DEFB "P"+80H + ENDM + TBL PLO,T + DEFM "PLO" + DEFB "T"+80H + ENDM + TBL PLIN,E + DEFM "PLIN" + DEFB "E"+80H + ENDM + TBL RLIN,E + DEFM "RLIN" + DEFB "E"+80H + ENDM + TBL PMOV,E + DEFM "PMOV" + DEFB "E"+80H + ENDM + TBL RMOV,E ; A8 + DEFM "RMOV" + DEFB "E"+80H + ENDM + TBL TRO,N + DEFM "TRO" + DEFB "N"+80H + ENDM + TBL TROF,F + DEFM "TROF" + DEFB "F"+80H + ENDM + TBL INP,@ + DEFM "INP" + DEFB "@"+80H + ENDM + TBL DEFAUL,T + DEFM "DEFAUL" + + DEFB "T"+80H + + ENDM + TBL GE,T + DEFM "GE" + DEFB "T"+80H + ENDM + TBL PCOLO,R + DEFM "PCOLO" + + DEFB "R"+80H + ENDM + TBL PHOM,E + DEFM "PHOM" + DEFB "E"+80H + ENDM +; + TBL HSE,T ; B0 + DEFM "HSE" + DEFB "T"+80H + ENDM + TBL GPRIN,T + DEFM "GPRIN" + + DEFB "T"+80H + ENDM + TBL KE,Y + DEFM "KE" + DEFB "Y"+80H + ENDM + TBL AXI,S + DEFM "AXI" + DEFB "S"+80H + ENDM + TBL LOA,D + DEFM "LOA" + DEFB "D"+80H + ENDM + TBL SAV,E + DEFM "SAV" + DEFB "E"+80H + ENDM + TBL MERG,E + DEFM "MERG" + DEFB "E"+80H + ENDM + TBL CHAI,N + DEFM "CHAI" + DEFB "N"+80H + ENDM + TBL CONSOL,E ; B8 + DEFM "CONSOL" + + DEFB "E"+80H + ENDM + TBL SEARC,H + DEFM "SEARC" + + DEFB "H"+80H + ENDM + TBL OUT,@ + DEFM "OUT" + + DEFB "@"+80H + ENDM + TBL PCIRCL,E + DEFM "PCIRCL" + + DEFB "E"+80H + ENDM + TBL PTES,T + DEFM "PTES" + DEFB "T"+80H + ENDM + TBL PAG,E + DEFM "PAG" + DEFB "E"+80H + ENDM + TBL WAI,T + DEFM "WAI" + DEFB "T"+80H + ENDM + TBL SWA,P + DEFM "SWA" + DEFB "P"+80H + ENDM +; + DEFB 80H ; C0 + TBL ERRO,R + DEFM "ERRO" + DEFB "R"+80H + ENDM + TBL ELS,E + DEFM "ELS" + DEFB "E"+80H + ENDM + TBL US,R + DEFM "US" + DEFB "R"+80H + ENDM + TBL BY,E + DEFM "BY" + DEFB "E"+80H + ENDM + DEFB 80H + DEFB 80H + TBL DE,F + DEFM "DE" + DEFB "F"+80H + ENDM + DEFB 80H ; C8 + DEFB 80H + TBL LABE,L + DEFM "LABE" + DEFB "L"+80H + ENDM + DEFB 80H + DEFB 80H + DEFB 80H + TBL WOPE,N + DEFM "WOPE" + DEFB "N"+80H + ENDM + + TBL CLOS,E + DEFM "CLOS" + DEFB "E"+80H + ENDM +; + TBL ROPE,N ; D0 + DEFM "ROPE" + DEFB "N"+80H + ENDM + TBL XOPE,N + DEFM "XOPE" + DEFB "N"+80H + ENDM + DEFB 80H + DEFB 80H + DEFB 80H + TBL DI,R + DEFM "DI" + DEFB "R"+80H + ENDM + DEFB 80H + DEFB 80H + TBL RENAM,E ; D8 + DEFM "RENAM" + + DEFB "E"+80H + ENDM + TBL KIL,L + DEFM "KIL" + DEFB "L"+80H + ENDM + TBL LOC,K + DEFM "LOC" + DEFB "K"+80H + ENDM + TBL UNLOC,K + DEFM "UNLOC" + + DEFB "K"+80H + ENDM + TBL INI,T + DEFM "INI" + DEFB "T"+80H + ENDM + DEFB 80H + DEFB 80H + DEFB 80H +; + TBL T,O ; E0 + DEFM "T" + DEFB "O"+80H + ENDM + TBL STE,P + DEFM "STE" + DEFB "P"+80H + ENDM + TBL THE,N + DEFM "THE" + DEFB "N"+80H + ENDM + + TBL USIN,G + DEFM "USIN" + DEFB "G"+80H + ENDM + DEFB 80H ;PI + TBL AL,L + DEFM "AL" + DEFB "L"+80H + ENDM + TBL TA,B + DEFM "TA" + DEFB "B"+80H + ENDM + TBL SP,C + DEFM "SP" + DEFB "C"+80H + ENDM + DEFB 80H ; E8 + DEFB 80H + TBL .XO,R + DEFM ".XO" + DEFB "R"+80H + ENDM + TBL .O,R + DEFM ".O" + DEFB "R"+80H + ENDM + TBL .AN,D + DEFM ".AN" + DEFB "D"+80H + ENDM + TBL .NO,T + DEFM ".NO" + DEFB "T"+80H + ENDM + TBL >,< + DEFM ">" + DEFB "<"+80H + ENDM + TBL <,> + DEFM "<" + DEFB ">"+80H + ENDM +; + TBL =,< ; F0 + DEFM "=" + DEFB "<"+80H + ENDM + TBL <,= + DEFM "<" + DEFB "="+80H + ENDM + TBL =,> + DEFM "=" + DEFB ">"+80H + ENDM + TBL >,= + DEFM ">" + DEFB "="+80H + ENDM + + DEFB "="+80H + DEFB ">"+80H + DEFB "<"+80H + DEFB "+"+80H + DEFB "-"+80H ; F8 + DEFB %YEN+80H + TBL .MO,D + DEFM ".MO" + DEFB "D"+80H + ENDM + DEFB "/"+80H + DEFB "*"+80H + DEFB "^"+80H +; + DEFB FFH +; +GTABL: ENT + DEFB 80H ; FE 80 + TBL CSE,T + DEFM "CSE" + DEFB "T"+80H + ENDM + TBL CRESE,T + DEFM "CRESE" + + DEFB "T"+80H + ENDM + TBL CCOLO,R + DEFM "CCOLO" + + DEFB "R"+80H + ENDM + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H ; FE 88 + DEFB 80H + TBL SOUN,D + DEFM "SOUN" + DEFB "D"+80H + ENDM + DEFB 80H + TBL NOIS,E + DEFM "NOIS" + DEFB "E"+80H + ENDM + TBL BEE,P + DEFM "BEE" + DEFB "P"+80H + ENDM + DEFB 80H ; MZ-1500 VOICE + DEFB 80H +; + TBL COLO,R ; FE 90 + DEFM "COLO" + DEFB "R"+80H + ENDM + DEFB 80H ; MZ-1500 PRTY + TBL SE,T + + DEFM "SE" + DEFB "T"+80H + ENDM + TBL RESE,T + DEFM "RESE" + DEFB "T"+80H + ENDM + TBL LIN,E + DEFM "LIN" + DEFB "E"+80H + ENDM + TBL BLIN,E + DEFM "BLIN" + DEFB "E"+80H + ENDM + TBL PA,L + DEFM "PA" + DEFB "L"+80H + ENDM + TBL CIRCL,E + DEFM "CIRCL" + + DEFB "E"+80H + ENDM + TBL BO,X ; FE 98 + DEFM "BO" + DEFB "X"+80H + ENDM + TBL PAIN,T + DEFM "PAIN" + DEFB "T"+80H + ENDM + TBL POSITIO,N + DEFM "POSITIO" + + DEFB "N"+80H + ENDM + TBL PATTER,N + DEFM "PATTER" + + DEFB "N"+80H + ENDM + TBL HCOP,Y + DEFM "HCOP" + DEFB "Y"+80H + ENDM + DEFB 80H ; MZ-1500 KPATTERN + DEFB 80H ; MZ-1500 FPRINT + DEFB 80H +; + TBL SYMBO,L ; FE A0 + DEFM "SYMBO" + + DEFB "L"+80H + ENDM + DEFB 80H + TBL MUSI,C + DEFM "MUSI" + DEFB "C"+80H + ENDM + + TBL TEMP,O + DEFM "TEMP" + DEFB "O"+80H + ENDM + TBL CURSO,R + DEFM "CURSO" + + DEFB "R"+80H + ENDM + TBL VERIF,Y + DEFM "VERIF" + + DEFB "Y"+80H + ENDM + TBL CL,R + DEFM "CL" + DEFB "R"+80H + ENDM + TBL LIMI,T + DEFM "LIMI" + DEFB "T"+80H + ENDM + DEFB 80H ; FE A8 + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H + TBL BOO,T + DEFM "BOO" + DEFB "T"+80H + ENDM +; +; + DEFB FFH +; +; +; +CTBL2: ENT + TBL IN,T ; FF 80 + DEFM "IN" + DEFB "T"+80H + ENDM + TBL AB,S + DEFM "AB" + DEFB "S"+80H + ENDM + TBL SI,N + DEFM "SI" + DEFB "N"+80H + ENDM + TBL CO,S + DEFM "CO" + DEFB "S"+80H + ENDM + TBL TA,N + DEFM "TA" + DEFB "N"+80H + ENDM + TBL L,N + + DEFM "L" + DEFB "N"+80H + ENDM + TBL EX,P + DEFM "EX" + DEFB "P"+80H + ENDM + TBL SQ,R + DEFM "SQ" + DEFB "R"+80H + ENDM + TBL RN,D ; FF 88 + DEFM "RN" + DEFB "D"+80H + ENDM + TBL PEE,K + DEFM "PEE" + DEFB "K"+80H + ENDM + TBL AT,N + DEFM "AT" + DEFB "N"+80H + ENDM + TBL SG,N + DEFM "SG" + DEFB "N"+80H + ENDM + TBL LO,G + DEFM "LO" + DEFB "G"+80H + ENDM + TBL FRA,C + DEFM "FRA" + DEFB "C"+80H + ENDM + TBL PA,I + DEFM "PA" + DEFB "I"+80H + ENDM + TBL RA,D + DEFM "RA" + DEFB "D"+80H + ENDM +; + DEFB 80H ; FF 90 + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H ; FF 98 + DEFB 80H + DEFB 80H + DEFB 80H + TBL STIC,K + DEFM "STIC" + DEFB "K"+80H + ENDM + + TBL STRI,G + DEFM "STRI" + DEFB "G"+80H + ENDM + DEFB 80H ; MZ-1500 JOY + DEFB 80H +; + TBL CHR,$ ; FF A0 + DEFM "CHR" + DEFB "$"+80H + ENDM + TBL STR,$ + DEFM "STR" + DEFB "$"+80H + ENDM + TBL HEX,$ + DEFM "HEX" + DEFB "$"+80H + ENDM + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H + DEFB 80H + TBL SPACE,$ ; FF A8 + DEFM "SPACE" + + DEFB "$"+80H + ENDM + DEFB 80H + DEFB 80H ; MZ-1500 ASCCHR$ + TBL AS,C + DEFM "AS" + DEFB "C"+80H + ENDM + TBL LE,N + DEFM "LE" + DEFB "N"+80H + ENDM + TBL VA,L + DEFM "VA" + DEFB "L"+80H + ENDM + DEFB 80H + DEFB 80H +; + DEFB 80H ; FF B0 + DEFB 80H + DEFB 80H ; MZ-1500 HEXCHR$ + TBL ER,N + DEFM "ER" + DEFB "N"+80H + ENDM + TBL ER,L + DEFM "ER" + DEFB "L"+80H + ENDM + TBL SIZ,E + DEFM "SIZ" + DEFB "E"+80H + + ENDM + TBL CSR,H + DEFM "CSR" + DEFB "H"+80H + ENDM + TBL CSR,V + DEFM "CSR" + DEFB "V"+80H + ENDM + TBL POS,H ; FF B8 + DEFM "POS" + DEFB "H"+80H + ENDM + TBL POS,V + DEFM "POS" + DEFB "V"+80H + ENDM + TBL LEFT,$ + DEFM "LEFT" + DEFB "$"+80H + ENDM + TBL RIGHT,$ + DEFM "RIGHT" + + DEFB "$"+80H + ENDM + TBL MID,$ + DEFM "MID" + DEFB "$"+80H + ENDM + DEFB 80H ; MZ-1500 FONT$ + DEFB 80H + DEFB 80H +; + DEFB 80H ; FF C0 + DEFB 80H + DEFB 80H + DEFB 80H + TBL TI,$ + DEFM "TI" + DEFB "$"+80H + ENDM + TBL POIN,T + DEFM "POIN" + DEFB "T"+80H + ENDM + TBL EO,F + DEFM "EO" + DEFB "F"+80H + ENDM + TBL F,N + DEFM "F" + DEFB "N"+80H + ENDM +; + DEFB FFH +; +; JPTABLE +; +SJPTBL: ENT + + DEFW GOTO ; 80 + DEFW GOSUB + DEFW ER01 + DEFW RUN + DEFW RETURN + DEFW RESTOR + DEFW RESUME + DEFW LIST + DEFW ER01 ; 88 + DEFW DELETE + DEFW RENUM + DEFW AUTO + DEFW EDIT + DEFW FOR + DEFW NEXT + DEFW PRINT +; + DEFW ER01 ; 90 + DEFW INPUT + DEFW ER01 + DEFW IF + DEFW DATA + DEFW READ + DEFW DIM + DEFW REM + DEFW END ; 98 + DEFW STOP + DEFW CONT + DEFW CLS + DEFW ER01 + DEFW ON + DEFW LET + DEFW NEW +; + DEFW POKE ; A0 + DEFW ER01 + DEFW MODE + DEFW SKIP + DEFW PLOT + DEFW PLINE + DEFW RLINE + DEFW PMOVE + DEFW RMOVE ; A8 + DEFW TRON + DEFW TROFF + DEFW INP@ + DEFW DEFAULT + DEFW GETOP + DEFW PCOLOR + DEFW PHOME +; + DEFW HSET ; B0 + DEFW GPRINT + DEFW KLIST + DEFW AXIS + DEFW LOAD + DEFW SAVE + DEFW MERGE + DEFW CHAIN + DEFW CONSOL ; B8 + + DEFW SEARCH + DEFW OUT@ + DEFW PCIRCLE + DEFW TEST + DEFW PAGE + DEFW PAUSE + DEFW SWAP +; + DEFW ER01 ; C0 + DEFW ERROR + DEFW ELSE + DEFW USR + DEFW BYE + DEFW ER01 + DEFW ER01 + DEFW DEFOP + DEFW ER01 ; C8 + DEFW ER01 + DEFW LABEL + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW WOPEN + DEFW CLOSE +; + DEFW ROPEN ; D0 + DEFW XOPEN + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW DIR + DEFW ER01 + DEFW ER01 + DEFW RENAME ; D8 + DEFW KILL + DEFW LOCK + DEFW UNLOCK + DEFW INIT + DEFW ER01 + DEFW ER01 + DEFW ER01 +; +; +GJPTBL: ENT + DEFW ER01 ; FE 80 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 ; FE 88 + DEFW ER01 + DEFW SOUND + DEFW ER01 + DEFW NOISE + DEFW BEEP +; MZ-1500 .VOICE:ENT + DEFW ER01 + + DEFW ER01 +; + DEFW COLOR ; FE 90 + DEFW ER01 + DEFW SET + DEFW RESET + DEFW LINE + DEFW BLINE + DEFW PALET + DEFW CIRCLE + DEFW BOX ; FE 98 + DEFW PAINT + DEFW POSITION + DEFW PATTERN + DEFW HCOPY + DEFW ER01 + DEFW ER01 + DEFW ER01 +; + DEFW SMBOL ; FE A0 + DEFW ER01 + DEFW MUSIC + DEFW TEMPO + DEFW CURSOR + DEFW VERIFY + DEFW CLR + DEFW LIMIT + DEFW ER01 ; FE A8 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW BOOT +; +; +FJPTBL: ENT + DEFW INTOPR ; FF 80 + DEFW ABS + DEFW SIN + DEFW COS + DEFW TAN + DEFW LOG ;LN + DEFW EXP + DEFW SQR + DEFW RND ; FF 88 + DEFW PEEK + DEFW ATN + DEFW SGN + DEFW LOGD ;LOG + DEFW FRACT + DEFW PAI + DEFW RAD +; + DEFW ER01 ; FF 90 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + + DEFW ER01 + DEFW ER01 + DEFW ER01 ; FF 98 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW STCK + DEFW STIG + DEFW ER01 + DEFW ER01 +; + DEFW ER01 ; FF A0 CHR$ + DEFW STR$ + DEFW HEX$ + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW SPACE$ ; FF A8 + DEFW ER01 + DEFW ER01 + DEFW ASC + DEFW LEN + DEFW VAL + DEFW ER01 + DEFW ER01 +; + DEFW ER01 ; FF B0 + DEFW ER01 + DEFW ER01 + DEFW ERR + DEFW ERL + DEFW SIZE + DEFW CSRH + DEFW CSRV + DEFW POSH ; FF B8 + DEFW POSV + DEFW LEFT$ + DEFW RIGHT$ + DEFW MID$ + DEFW ER01 + DEFW ER01 + DEFW ER01 +; + DEFW ER01 ; FF C0 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW TI$ + DEFW POINT + DEFW EOF + DEFW FNEXP ;FN + DEFW ER01 ; FF C8 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + DEFW ER01 + + DEFW ER01 + SKP H + +; +; GET LINE ADRS +; +GETLIN: ENT + TEST1 0CH + CALL TEST1 + DEFB 0CH + ENDM + JR NZ,GLIN2 + CALL LDDEMI + OR FFH + RET +GLIN2: INC HL + CP 0BH + JR NZ,GLIN4 + LD E,M + INC HL + LD D,M + INC HL + LD A,E + OR D + RET Z + EX DE,HL + CALL LNOSER + JP C,ER16 + EX DE,HL + DEC HL + LD M,D + DEC HL + LD M,E + DEC HL + LD M,0CH + INC HL + INC HL + INC HL + OR FFH + LD (REFFLG),A + RET +GLIN4: CP '"' + JP NZ,ER01 + LD (LABA+1),HL + LD B,0 +GLIN6: LD A,M + OR A + JR Z,GLIN8 + INC HL + CP '"' + JR Z,GLIN8 + INC B + JR GLIN6 +GLIN8: LD A,B + OR A + JP Z,ER01 + LD (LABN+1),A + EX DE,HL + CALL LABSER + JP C,ER16 + EX DE,HL + OR FFH + RET + + SKP H + +; +; LABSER .. Label search +; LNOSER .. Line# search +; +LABSER: PUSH BC + LD BC,LABSUB + JR LNOSR0 +LNOSER: PUSH BC + LD BC,LNOSUB +LNOSR0: LD (LNOSR?+1),BC + PUSH DE + EX DE,HL + LD HL,(TEXTST) +LNOSR2: LD C,M + INC HL + LD B,M + LD A,B + OR C + SCF + JR Z,LNOSR9 + DEC HL + PUSH HL + ADD HL,BC + EX (SP),HL +LNOSR?: CALL 0 + JR C,LNOSR8 + JR Z,LNOSR8 + POP HL + JR LNOSR2 +LNOSR8: POP DE ;DMY +LNOSR9: POP DE + POP BC + RET +; +LNOSUB: INC HL + INC HL + INC HL + LD A,D + CP M + RET NZ + DEC HL + LD A,E + CP M + DEC HL + DEC HL + RET +; +LABSUB: PUSH HL + INC HL + INC HL + INC HL + INC HL + TEST1 CAH ;LABEL + CALL TEST1 + DEFB CAH + ENDM + JR NZ,LABSR9 + TEST1 '"' + CALL TEST1 + DEFB '"' + + ENDM + JR NZ,LABSR9 +LABN: LD B,0 ;Label length +LABA: LD DE,0 ;Label adrs +LABSR2: LD A,(DE) + CP M + JR NZ,LABSR9 + INC HL + INC DE + DJNZ LABSR2 + LD A,M + CP '"' + JR Z,LABSR9 + OR A +LABSR9: SCF + CCF + POP HL + RET +; +; START.LINE - END.LINE +; +GTSTED: ENT + LD DE,0000H + LD BC,FFFFH + CALL END2C + RET Z + CP "-" + JR Z,GTNXNM + CP "." + LD DE,(EDLINE) + JR Z,NX2C2D + TESTX 0BH + CALL TESTX + DEFB 0BH + ENDM + LD E,M + INC HL + LD D,M +NX2C2D: INC HL + CALL END2C + JR Z,ONELLN + CP "-" + JR Z,GTNXNM +ONELLN: LD C,E + LD B,D + RET +; +GTNXNM: INC HL + CALL END2C + RET Z + CP "." + JR NZ,GTEDNO + LD BC,(EDLINE) + INC HL + RET +; +GTEDNO: TESTX 0BH + CALL TESTX + DEFB 0BH + ENDM + + LD C,M + INC HL + LD B,M + INC HL + RET +; +END2C: ENT + CALL ENDCHK + RET Z + CP "," + RET + SKP H + +; +; REFADR ... Line ref = Adrs +; REFLNO ... Line ref = Number +; +REFADR: CALL PUSHR + LD A,FFH + LD (REFFLG),A + LD HL,CVASUB + JR REFL2 +; +REFLNO: ENT + CALL PUSHR + CALL CLRFLG +REFLNX: ENT + LD A,(REFFLG) + OR A + RET Z + XOR A + LD (REFFLG),A + LD HL,CVLSUB +REFL2: LD (CVRTLN+1),HL + LD HL,(TEXTST) + DEC HL +REFL4: INC HL + LD A,M + INC HL + OR M + RET Z + INC HL + LD E,M + INC HL + LD D,M + LD (CVALN+1),DE +REFL6: CALL IFSKSB + OR A + JR Z,REFL4 +CVRTLN: JP 0 +; +CVLSUB: CP 0CH + JR NZ,REFL6 + DEC HL + LD E,M + INC HL + LD D,M + PUSH HL + EX DE,HL + INC HL + INC HL + LD E,M + INC HL + LD D,M + POP HL + LD M,D + DEC HL + LD M,E + DEC HL + LD M,0BH + INC HL + INC HL + JR REFL6 + +; +CVASUB: CP 0BH + JR NZ,REFL6 + DEC HL + PUSH HL + CALL INDRCT + LD E,L + LD D,H + LD A,L + OR H + JR Z,CVAS9 + CALL LNOSER + JR C,CVASE + EX DE,HL + POP HL + DEC HL + LD M,0CH + INC HL + LD M,E + INC HL + LD M,D + JR REFL6 +; +CVASE: PUSH DE + LD A,16 ;UNDEF LINE + SVC .ERRX + RST 3 + DEFB .ERRX + ENDM + LD A," " + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + POP HL + CALL ASCFIV + SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM +CVALN: LD HL,0 ;xxx + CALL P.ERL + SVC .CR2 + RST 3 + DEFB .CR2 + ENDM +CVAS9: POP HL + INC HL + JR REFL6 +; +REFFLG: DEFB 0 + SKP H + +EDITOR: SVC .CLRIO + RST 3 + DEFB .CLRIO + ENDM + CALL REFLNO + CALL CVBCAS + LD A,B + OR C + JP Z,INPAGN + LD (EDLINE),BC + LD A,(DE) + CP 20H + JR NZ,+3 + INC DE + PUSH AF + LD HL,IMDBUF + CALL CVIMTX + PUSH HL + LD HL,(EDLINE) + LD E,L + LD D,H + CALL DELSUB + POP HL ; END POINT + POP AF + OR A + JR Z,EDIT9 + LD DE,IMDBUF + OR A + SBC HL,DE + LD DE,5 + ADD HL,DE + LD BC,HL + LD HL,IMDBUF + CALL INSTLIN +EDIT9: LD A,(AUTOFG) + OR A + JP Z,INPAGN + LD DE,(EDSTEP) + LD HL,(EDLINE) + ADD HL,DE + LD (EDLINE),HL + JP NC,INPAGN + JP AUTOFF +; +; INSTLIN HL .. IMD ADRS +; BC .. IMD LENGTH +; +INSTLIN:ENT + LD (INS.P+1),HL + PUSH BC + LD BC,(EDLINE) + LD HL,(TEXTST) + JR INSL4 +INSL2: CALL LDDEMD + ADD HL,DE +INSL4: CALL LDDEMD + LD A,D + OR E + JR Z,INSL6 + INC HL + + INC HL + CALL LDDEMD + EX DE,HL + SBC HL,BC + DEC DE + DEC DE + EX DE,HL + JR C,INSL2 +INSL6: POP DE ;DE:=open bytes + PUSH HL ;Push inst-point + PUSH DE + LD HL,40 ;memory check ofset + ADD HL,DE + LD BC,(VARED) + LD (TMPEND),BC + ADD HL,BC + JP C,ER06' + EX DE,HL + CALL MEMECK + POP DE ;DE=open bytes + SVC .ADDP0 + RST 3 + DEFB .ADDP0 + ENDM + POP HL ;HL=inst point + PUSH DE ;DE=open bytes + PUSH BC + EX (SP),HL ;HL=old VARED + POP BC ;BC=inst point + PUSH HL + OR A + SBC HL,BC + LD BC,HL ;BC=xfer bytes + POP HL ;HL=old VARED + LD DE,(VARED) ;DE=new VARED + INC BC + LDDR + INC HL ;HL=inst point + POP BC ;BC=open bytes + LD M,C + INC HL + LD M,B + INC HL + LD DE,(EDLINE) + LD M,E + INC HL + LD M,D + INC HL + EX DE,HL +INS.P: LD HL,IMDBUF ;xxx + DEC BC + DEC BC + DEC BC + DEC BC + LDIR + RET + SKP H + +; +RUN: JR Z,RUN0 ;RUN + CALL LINE?2 + JP Z,GOTO ;RUN linenumber + JP FRUN ;RUN "filename" +RUN0: CALL CLR +RUNX: ENT + CALL RUNINT + LD DE,(TEXTST) + LD SP,(INTFAC) + LD HL,FFFFH + PUSH HL + PUSH HL + EX DE,HL + JP NXLINE +; +RUNINT: ENT + PUSH HL + CALL CLRFLG + LD (AUTOFG),A + LD HL,10 + LD (EDLINE),HL + LD (EDSTEP),HL + POP HL + RET +; +CLRFLG: ENT + LD HL,0 + LD (ERRLNO),HL + XOR A + LD (DATFLG),A + LD (CONTFG),A + LD (ERRORF),A + LD (ERRCOD),A + LD (LSWAP),A + RET +; +; +; +END: LD A,(LSWAP) + OR A + JP NZ,BSWAP + SVC .CLRIO ;END command + RST 3 + DEFB .CLRIO + ENDM + XOR A + LD (CONTFG),A + POP BC + JP OK + SKP H + +; +AUTO: CALL CKCOM + LD DE,10 ;AUTO start,step + LD BC,10 + JR Z,AUTO6 + CP "," + JR NZ,AUTO2 + INC HL + CALL IDEEXP + LD B,D + LD C,E + LD DE,10 + JR AUTO6 +; +AUTO2: CP "." + LD DE,(EDLINE) + JR Z,AUTO4 + CP 0BH + JP NZ,ER01 + INC HL + LD E,M + INC HL + LD D,M +; +AUTO4: INC HL + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR NZ,AUTO6 + PUSH DE + CALL IDEEXP + LD C,E + LD B,D + POP DE +AUTO6: CALL ENDZ + LD A,C + OR B + JP Z,ER03 +; + LD (EDLINE),DE + LD (EDSTEP),BC + LD A,1 + LD (AUTOFG),A + POP AF + JP INPAGN +; +AUTOFG: DEFS 1 + SKP H + +; +AUTODS: LD A,(AUTOFG) ;Disp auto line + OR A + RET Z + XOR A + JR EDITL +; +EDIT: CALL EDITL ;EDIT linenumber + JP INPAGN +; +EDITL: LD DE,(EDLINE) + CALL NZ,GTSTED + PUSH DE + EX DE,HL + CALL LNOSER + POP DE + INC HL + INC HL + INC HL + INC HL + JR NC,+5 + LD HL,.NOP + EX DE,HL + PUSH DE + LD (EDLINE),HL + CALL ASCFIV + SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM + LD A," " + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + POP HL + LD DE,KEYBUF + PUSH DE + CALL CVTXIM + POP DE + LD B,0 +EDL2: LD A,(DE) + OR A + JR Z,EDL6 + INC B + SVC .CRT1X + RST 3 + DEFB .CRT1X + ENDM + INC DE + JR EDL2 +EDL6: LD A,B + OR A + RET Z + LD A,14H ; CURSOR BACK + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + DJNZ -3 + + RET + SKP H + +; +MEMSET: ENT + PUSH DE + LD DE,-16 + ADD HL,DE + POP DE + LD (MEMLMT),HL + DEC H + LD (INTFAC),HL + XOR A + LD (LSWAP),A + RET +; +NEWTXT: ENT + LD HL,(TEXTST) + CALL LDHL00 + LD (POOL),HL + CALL RUNINT + JR CLR +; +NEW: TEST1 9DH ;NEW command + CALL TEST1 + DEFB 9DH + ENDM + CALL Z,NEWON + CALL NEWTXT + JP HOTENT +; +; +CLR: ENT ;CLR command + PUSH HL + CALL CLPTR2 + POP HL + SVC .CLRIO + RST 3 + DEFB .CLRIO + ENDM + RET + SKP H + +; +CLPTR: ENT + LD HL,(TEXTST) + CALL LDHL00 + LD (POOL),HL +CLPTR2: LD HL,(POOL) + LD M,0 + INC HL + LD (VARST),HL + LD M,0 + INC HL + LD (STRST),HL + CALL LDHL00 + LD (VARED),HL + LD (TMPEND),HL + RET +; +LDHL00: ENT + LD M,0 + INC HL + LD M,0 + INC HL + RET +; +; +TRON: CALL ENDCHK + LD A,1 + JR Z,TROFF+1 + TESTX FBH ;/ + CALL TESTX + DEFB FBH + ENDM + TESTX "P" + CALL TESTX + DEFB "P" + ENDM + LD A,2 + JR +3 +TROFF: XOR A ;TROFF + LD (TRDISP+1),A + RET +; +TRDISP: LD A,0 ;0,1,2 + OR A + RET Z + DEC A + LD (FILOUT),A + JR Z,TRDSP2 + LD A,(PNMODE) + CP 2 + JR Z,TRDSP9 ;MODE GR +TRDSP2: PUSH HL + LD A,"[" + SVC .&1C + RST 3 + DEFB .&1C + ENDM + LD HL,(LNOBUF) + CALL ASCFIV + SVC .&MSG + + RST 3 + DEFB .&MSG + ENDM + LD A,"]" + SVC .&1C + RST 3 + DEFB .&1C + ENDM + POP HL +TRDSP9: XOR A + LD (FILOUT),A + RET + SKP H + +; +DELETE: CALL END2C + JP Z,ER01 ;DELETE + CALL LINE?2 + JR Z,DELLIN + CP "-" + JR Z,DELLIN + CP "." + JP NZ,FDEL ;DELETE "filename" +DELLIN: ENT + CALL GTSTED ;DELETE xxx-yyy + EX DE,HL + LD E,C + LD D,B + CALL DELSUB + JP OK +; +; Delete (HL)-(DE) +; +DELSUB: ENT + PUSH AF + PUSH BC + PUSH HL + PUSH DE + CALL REFLNO + LD C,L + LD B,H + LD HL,(TEXTST) +FSTLOP: CALL LDDEMI + LD A,E + OR D + JR NZ,FDDLST +RTDLTE: POP DE + POP HL + POP BC + POP AF + RET +; +POPDLR: POP DE + JR RTDLTE +; +FDDLST: EX DE,HL + ADD HL,DE + DEC HL + DEC HL + EX DE,HL + PUSH DE + LD E,M + INC HL + LD D,M + EX DE,HL + LD (LNOTBF),HL + SBC HL,BC + POP HL + JR C,FSTLOP + DEC DE + DEC DE + DEC DE + POP BC ; DELSUB END LINE NO. + PUSH BC + + PUSH DE ; DELSUB START ADRS + PUSH HL ; NEXT LINE ADRS + DEFB 21H +LNOTBF: DEFS 2 + SBC HL,BC + POP HL + JR Z,DLSTRT ; DEL-LINE END FOUND + JR NC,POPDLR ; NOTHING OCCUR +SNDDLP: CALL LDDEMI + LD A,D + OR E + JR Z,DLEFD' + EX DE,HL + ADD HL,DE + EX DE,HL + DEC DE + DEC DE + PUSH DE + LD E,M + INC HL + LD D,M + EX DE,HL + SBC HL,BC + POP HL + JR C,SNDDLP + JR Z,DLSTRT + EX DE,HL + DEC HL +DLEFD': DEC HL + DEC HL +DLSTRT: POP DE + PUSH DE ;Delete (DE)-(HL) + PUSH HL + OR A + EX DE,HL + SBC HL,DE + EX DE,HL ;DE = - bytes + LD BC,(VARED) ;old VARED + SVC .ADDP0 + RST 3 + DEFB .ADDP0 + ENDM + POP DE ;DE = del end + LD HL,BC ;HL = old VARED + OR A + SBC HL,DE + LD BC,HL ;BC = move bytes + EX DE,HL ;HL = del end + POP DE ;DE = del start + LDIR + JR RTDLTE +; +IDEEX0: CALL IDEEXP + LD A,D + OR E + RET NZ + JP ER03 + SKP H + +; +RENUM: CALL CKCOM + LD DE,10 ;RENUM xxx,yyy,zzz + LD (NEWNO),DE + LD (ADDNO),DE + LD E,0 + LD (STLNO),DE + JR Z,RNSTRT + CP "," + JR Z,SKIRE1 + CALL IDEEX0 + LD (NEWNO),DE + CALL ENDCHK + JR Z,RNSTRT + CALL HCH2CH + DEC HL +SKIRE1: CALL INCHLF + CP "," + JR Z,SKMRNU + CALL IDEEX0 + LD (STLNO),DE + CALL ENDCHK + JR Z,RNSTRT + CALL HCH2CH + DEC HL +SKMRNU: INC HL + CALL IDEEX0 + LD (ADDNO),DE +RNSTRT: PUSH HL + LD HL,(STLNO) + EX DE,HL + LD HL,(NEWNO) + OR A + SBC HL,DE + JP C,ER03 + CALL REFADR + LD HL,(TEXTST) +BEGRNS: LD E,M + INC HL + LD D,M + LD A,D + OR E + JR Z,RNUMED + EX DE,HL + ADD HL,DE + DEC HL + EX DE,HL + INC HL + LD C,M + INC HL + LD B,M + PUSH HL + DEFB 21H +STLNO: DEFS 2 + OR A + SBC HL,BC + POP HL + JR Z,BEGREN + JR C,BEGREN + EX DE,HL + + JR BEGRNS +; +BEGREN: DEC HL + DEC HL + DEC HL + DEFB 01H +NEWNO: DEFS 2 + OR A + PUSH AF +RENUML: LD E,M + INC HL + LD D,M + LD A,D + OR E + JR Z,RNUMED + EX DE,HL + ADD HL,DE + DEC HL + EX DE,HL + POP AF + JR C,RENOVR + INC HL + LD M,C + INC HL + LD M,B + DEFB 21H +ADDNO: DEFS 2 + ADD HL,BC + PUSH AF + LD C,L + LD B,H + EX DE,HL + JR RENUML +; +RNUMED: POP AF + CALL REFLNX + POP HL + RET +; +RENOVR: LD HL,10 + LD (ADDNO),HL + LD (NEWNO),HL + LD L,0 + LD (STLNO),HL + CALL RNSTRT + JP ER03 + SKP H + +; +; +; Error message & exeption +; +MAXERR: EQU 70 +; + ENTRY 01 +ER01: ENT + LD A,01 + DEFB 21H + ENDM + ENTRY 02 +ER02: ENT + LD A,02 + DEFB 21H + ENDM + ENTRY 03 +ER03: ENT + LD A,03 + DEFB 21H + ENDM + ENTRY 04 +ER04: ENT + LD A,04 + DEFB 21H + ENDM + ENTRY 05 +ER05: ENT + LD A,05 + DEFB 21H + ENDM + ENTRY 06 +ER06: ENT + LD A,06 + DEFB 21H + ENDM + ENTRY 07 +ER07: ENT + LD A,07 + DEFB 21H + ENDM + ENTRY 08 +ER08: ENT + LD A,08 + DEFB 21H + ENDM + ENTRY 13 +ER13: ENT + LD A,13 + DEFB 21H + ENDM + ENTRY 14 +ER14: ENT + LD A,14 + + DEFB 21H + ENDM + ENTRY 15 +ER15: ENT + LD A,15 + DEFB 21H + ENDM + ENTRY 16 +ER16: ENT + LD A,16 + DEFB 21H + ENDM + ENTRY 17 +ER17: ENT + LD A,17 + DEFB 21H + ENDM + ENTRY 18 +ER18: ENT + LD A,18 + DEFB 21H + ENDM + ENTRY 19 +ER19: ENT + LD A,19 + DEFB 21H + ENDM + ENTRY 20 +ER20: ENT + LD A,20 + DEFB 21H + ENDM + ENTRY 21 +ER21: ENT + LD A,21 + DEFB 21H + ENDM + ENTRY 22 +ER22: ENT + LD A,22 + DEFB 21H + ENDM + ENTRY 24 +ER24: ENT + LD A,24 + DEFB 21H + ENDM + ENTRY 25 +ER25: ENT + LD A,25 + DEFB 21H + ENDM + ENTRY 58 +ER58: ENT + LD A,58 + DEFB 21H + ENDM +ER64: ENT + LD A,64 + JR ERRJ2 + +; +ER06': ENT ;Nesting error + LD A,6 +NESTER: ENT + LD SP,(INTFAC) + LD HL,FFFFH + PUSH HL + LD (STACK),SP +ERRJ2: JR ERRJ1 + SKP H + +; +LPTMER: ENT ;LPT:mode error + LD HL,(.$LPT) + DEFB DDH +CRTMER: ENT ;CRT:mode error + LD HL,(.$CRT) + LD (ZEQT),HL + XOR A + LD (ZFLAG2),A + LD A,68+80H ;+80H is I/O err + DEFB 21H +ER59: ENT + LD A,59+80H + DEFB 21H +ER59': ENT + LD A,59 + DEFB 21H +ER60: ENT + LD A,60+80H + DEFB 21H +ER61: ENT + LD A,61+80H +ERRJ1: JP ERRORJ +; +; +P.ERL: LD A,L ;Print "IN line#" + OR H + RET Z + LD DE,MESIN + SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM + CALL ASCFIV + SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM + RET +; +; +MESIN: DEFM " IN " + DEFB 0 +MESBR: DEFM "BREAK" + + DEFB 0 +; +OKMES: ENT + DEFM "READY" + +CONTFG: ENT + DEFB 0 + DEFB 0 + SKP H + +; +ERROR: CALL IBYTE ;"ERROR" command + DEC A + CP MAXERR + JR C,+4 + LD A,69-1 + INC A +; +ERRORA: LD SP,(STACK) ;jump from monitor + PUSH AF + SVC .ERCVR + RST 3 + DEFB .ERCVR + ENDM + CALL LDEND + POP AF + OR A + JR Z,.BRKX + CP 80H + JR Z,.BRKZ + LD C,A + LD HL,0 + LD (FNVRBF),HL + CALL ?DIRECT + LD A,C + JR Z,ERR2 + LD HL,(LNOBUF) + LD (ERRLNO),HL + LD (EDLINE),HL + LD HL,(NXTLPT) + LD (ERRLPT),HL + LD HL,(TEXTPO) + LD (ERRPNT),HL + AND 7FH + LD (ERRCOD),A + LD A,(ERRORF) + INC A + CP 02H + JR Z,ERROPR + XOR A + LD (CONTFG),A + LD (LSWAP),A + LD A,C +ERR2: SVC .ERRX + RST 3 + DEFB .ERRX + ENDM +ERR4: LD HL,(LNOBUF) + CALL P.ERL + JP OK +; +; +ERROPR: LD (ERRORF),A ;Error trap + LD HL,(ERRORV) + PUSH HL + JP NXLINE +; + SKP H + +.BRKZ: LD A,"." ;Can CONT +.BRKX: ;Can't CONT + LD HL,(TEXTPO) + JR BREAK2 +; +STOP: ;"STOP" command + LD A,"." ;Can CONT + POP DE ;Dummy POP +BREAK2: PUSH AF + PUSH HL + SVC .CR2 + RST 3 + DEFB .CR2 + ENDM + SVC .BELL + RST 3 + DEFB .BELL + ENDM + LD DE,MESBR + SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM + POP HL + CALL ?DIRECT + JR Z,BREAK4 + LD (BREAKT+1),HL ;Text pointer + LD HL,(NXTLPT) + LD (BREAKN+1),HL ;Next line + LD HL,(LNOBUF) + LD (BREAKL+1),HL ;Line No. + LD (EDLINE),HL + POP AF + LD (CONTFG),A + JP ERR4 +BREAK4: POP AF + JP OK +; +; +CONT: POP DE ;"CONT" command + LD HL,CONTFG + LD A,M + OR A + JP Z,ER17 + LD M,0 +BREAKL: LD HL,0 ;Line No. + LD (LNOBUF),HL +BREAKN: LD HL,0 ;Next line + LD (NXTLPT),HL +BREAKT: LD HL,0 ;Text pointer + JP MAIN +; +; + SKP H + +; +RESUME: ;"RESUME" command + LD A,(ERRORF) + CP 2 + JP C,ER21 + DEC A + LD (ERRORF),A + CALL ENDCHK + EX DE,HL + LD HL,(ERRLNO) + LD (LNOBUF),HL + LD HL,(ERRLPT) + LD (NXTLPT),HL + LD HL,(ERRPNT) + JR NZ,RESUM2 + POP BC + JP MAIN0 ;RESUME +RESUM2: CP 8EH + JP Z,DATA ;RESUME NEXT + EX DE,HL + JP GOTO ;RESUME line# +; +ONERRG: ENT + TESTX 80H ;GOTO + CALL TESTX + DEFB 80H + ENDM + CALL GETLIN + JR Z,OFFER + LD (ERRORV),DE + LD A,1 +ONER9: LD (ERRORF),A + RET +; +; +OFFER: LD A,(ERRORF) + DEC A + JR Z,ONER9 + XOR A + LD (ERRORF),A + LD HL,(ERRLNO) + LD (LNOBUF),HL + LD A,(ERRCOD) + JP ERRORA +; + END diff --git a/software/asm/mz-xz009/CONV.ASM b/software/asm/mz-xz009/CONV.ASM new file mode 100644 index 0000000..332f118 --- /dev/null +++ b/software/asm/mz-xz009/CONV.ASM @@ -0,0 +1,1514 @@ +; ----------------------------- +; MZ-800 BASIC Data conversion +; FI:CONV ver 1.0A 7.18.84 +; Programed by T.Miho +; ----------------------------- +; + INCLD MACRO +; +; +%BAR: EQU C4H +%YEN: EQU 7DH +%POND: EQU FBH +; +ENDZ: ENT + CALL ENDCHK + RET Z + JP ER01 +; +TESTP: ENT + XOR A + LD (FILOUT),A + TEST1 FBH ;/ + CALL TEST1 + DEFB FBH + ENDM + RET NZ ;ZF=0 + TESTX "P" + CALL TESTX + DEFB "P" + ENDM + CALL LPTTMD ;Check text mode + LD A,"P" + LD (FILOUT),A + CP A ;ZF=1 + RET +; +ASCFIV: ENT + LD DE,DGBF00 + LD B,0 ;Zero sup. + PUSH DE + SVC .ASCHL + RST 3 + DEFB .ASCHL + ENDM + POP DE + RET + SKP H + +; +; Fetch subroutines +; +ICH28H: ENT + INC HL +HCH28H: ENT + CALL HLFTCH +CH28H: ENT + CP "(" + JR CHXX2 +; +HCH29H: ENT + CALL HLFTCH +CH29H: ENT + CP ")" + JR CHXX2 +; +HCH2CH: ENT + CALL HLFTCH +CH2CH: ENT + CP ',' +; +CHXX2: INC HL + RET Z + JP ER01 +; +SKPDI: ENT + INC DE +SKPDE: ENT + LD A,(DE) + CP ' ' + JR Z,SKPDI + RET +; +; +;(DE)=1.0 +LDIR1: ENT + LD HL,FLONE +;(DE)=(HL) 5BYTES SET +LDIR5: ENT + LD BC,5 + LDIR + RET + SKP H + +; +;(HL)=DE +FLTHEX: ENT + CALL CLRFAC ;EXT(FLOAT) + LD A,E + OR D + RET Z + BIT 7,D + LD A,7FH + JR Z,NORFLH + LD A,D + CPL + LD D,A + LD A,E + CPL + LD E,A + INC DE + LD A,FFH +; +NORFLH: LD B,91H +SFL: DEC B + BIT 7,D + JR NZ,FLHXRT + RL E + RL D + JR SFL +FLHXRT: LD M,B + INC HL + AND D + LD M,A + INC HL + LD M,E + DEC HL + DEC HL + RET +; +;0-9 THEN CY=0 +TSTNUM: ENT + CP "0" + RET C + CP ":" + CCF + RET +; +;VAR THEN CY=0 +TSTVAR: ENT + CP 5FH + RET Z + CP "0" + RET C + CP 5BH + CCF + RET C + CP ":" + CCF + RET NC + CP 41H + RET + SKP H + +; +;CONV FLOAT(HL)_ASC(DE) +CVFLAS: ENT + CALL CLRFAC ;EXT + LD (DGITCO),A + LD (DGITFG),A + LD (EXPFLG),A + LD (PRODFL+1),A + LD A,5 + LD (PRCSON),A +DEFTCL: CALL SKPDE + INC DE + CP "+" + JR Z,DEFTCL + CP "-" + JR NZ,CHKAND + CALL DEFTCL + JP TOGLE +; +CHKAND: CP "$" + JR NZ,ZRSKIP + PUSH HL + EX DE,HL + SVC .DEHEX + RST 3 + DEFB .DEHEX + ENDM + EX (SP),HL + CALL FLTHEX + POP DE + LD A,5 + RET +; +ZRSKIP: CP "0" + JR NZ,MDLAG + LD A,(DE) + INC DE + JR ZRSKIP +; +FTCHL: LD A,(DE) + INC DE +MDLAG: CP " " + JR Z,FTCHL + CP "." + JR Z,POINTS + CALL TSTNUM + JR C,TST23H + SUB "0" + CALL MULTEN + CALL MULDEC + LD A,1 + LD (DGITFG),A + LD A,(DGITCO) + INC A + LD (DGITCO),A + JR FTCHL +; +POINTS: LD A,1 + LD (PRODFL+1),A + LD C,A + +POINT: LD A,(DE) + INC DE + CP " " + JR Z,POINT + CALL TSTNUM + JR C,PESC + INC C + SUB "0" + JR Z,SDFGRE + PUSH AF + LD A,1 + LD (DGITFG),A + POP AF +SDFGRE: PUSH AF + LD A,(DGITFG) + LD B,A + LD A,(DGITCO) + ADD A,B + LD (DGITCO),A + POP AF + CALL MULTEN + CALL MULDEC + JR POINT +; +PESC: DEC C + JR Z,TST23H + CALL DIVTEN + JR PESC +; +; +TST23H: CP "E" + JR Z,EXPON! +; +TSTPRC: DEC DE + LD A,(EXPFLG) + OR A + RET NZ +PRODFL: LD A,0 ;xxx + OR A + RET NZ + LD A,5 + RET +; +EXPON!: LD A,(DE) + CP "-" + JR Z,EXPON + CP "+" + JR Z,EXPON + CALL TSTNUM + JR C,TSTPRC +EXPON: LD A,1 + LD (PRODFL+1),A + PUSH HL + LD HL,MUL + LD (EXJPVC),HL + LD HL,0000H + LD A,(DE) + INC DE + CP "+" + JR Z,CBEGIN + + CP "-" + JR NZ,CLMIDL + PUSH HL + LD HL,DIV + LD (EXJPVC),HL + POP HL +CBEGIN: LD A,(DE) + INC DE +CLMIDL: SUB "0" + JR C,ESCPER + CP 0AH + JR NC,ESCPER + PUSH DE + CALL ADHLCK + LD E,L + LD D,H + CALL ADHLCK + CALL ADHLCK + CALL ADDECK + LD E,A + LD D,0 + CALL ADDECK + POP DE + JR CBEGIN +ESCPER: LD A,H + OR A + JR NZ,OVERF' + LD A,L + POP HL + PUSH DE + PUSH BC + PUSH HL + LD DE,ZFAC + PUSH DE + CALL LDIR1 + POP HL + LD B,A + INC B + JR +5 + CALL MULTEN + DJNZ -3 + EX DE,HL + POP HL + DEFB CDH +EXJPVC: DEFS 2 + POP BC + POP DE + JP TSTPRC +; +DIVTEN: PUSH AF + PUSH BC + PUSH DE + LD DE,FLTEN + CALL DIV + POP DE + POP BC + POP AF + RET +; +ADDECK: ADD HL,DE + + RET NC + JR OVERF' +; +ADHLCK: ADD HL,HL + RET NC +OVERF': JP ER02 ;OVERFLOW +; +MULDEC: PUSH DE + PUSH HL + LD HL,ZFAC ;***** + LD E,A + LD D,0 + CALL FLTHEX + EX DE,HL + POP HL + PUSH BC + CALL ADD + POP BC + POP DE + RET +; +; +;CONV ASC(DE)_FLOAT(HL) +CVNMFL: ENT + LD A,5 + LD (PRCSON),A + LD A,M + OR A + JR Z,ONLYZ# + INC HL + LD A,M + DEC HL + RLCA +ONLYZ#: LD A,20H + JR NC,PLUS + CALL TOGLE + LD A,"-" +PLUS: PUSH AF + CALL CVASF1 + CALL ADJDGT + POP AF + DEC DE + LD (DE),A + RET +; +; +CMP2: PUSH BC + CALL CMP + POP BC + RET + SKP H + +; +INT: ENT + CALL PUSHR + LD A,M + CP 81H + JP C,CLRFAC + LD A,M + CP A0H + RET NC + INC HL + CALL RCHLBC + PUSH HL + LD L,M + LD B,0 +INTSFL: SRL E + RR D + RR C + RR L + INC A + INC B + CP A0H + JR NZ,INTSFL +INTSBL: SLA L + RL C + RL D + RL E + DJNZ INTSBL + LD A,L + POP HL + LD M,A + DEC HL + LD M,C + DEC HL + LD M,D + DEC HL + LD M,E + RET +; +RCHLBC: LD E,M + INC HL + LD D,M + INC HL + LD C,M + INC HL + RET + SKP H + +; +FRACT: ENT + LD A,M + CP 81H + RET C + PUSH DE + PUSH HL + LD DE,FRACW + PUSH DE + CALL LDIR5 + POP HL + CALL INT + EX DE,HL + POP HL + CALL SUB + POP DE + RET +; +FRACW: DEFS 5 +; +; +MULTEN: PUSH AF + PUSH BC + PUSH DE + LD DE,FLTEN + CALL MUL + POP DE + POP BC + POP AF + RET + SKP H + +; +HLFLT: ENT + INC HL + BIT 7,M + JR Z,NORHLC + CALL NORHLC + LD A,H + CPL + LD H,A + LD A,L + CPL + LD L,A + INC HL + RET +; +NORHLC: DEC HL + LD A,M + CP 91H + JP NC,ER02 ;OVERFLOW + CP 81H + JR C,HXZRRT + PUSH AF + INC HL + LD A,M + INC HL + LD L,M + LD H,A + POP AF + SET 7,H +HXFLSL: CP 90H + RET Z + INC A + SRL H + RR L + JR HXFLSL +; +HXZRRT: CCF + LD HL,0 + RET +; +; +SNGMXO: DEF5 9B,3E,BC,20,00 + DEFW 3E9BH + DEFW 20BCH + DEFB 00H + ENDM +SNGMXP: DEF5 98,18,96,80,00 + DEFW 1898H + DEFW 8096H + DEFB 00H + ENDM + DEF5 94,74,24,00,00 + DEFW 7494H + DEFW 0024H + DEFB 00H + ENDM + DEF5 91,43,50,00,00 + DEFW 4391H + DEFW 0050H + DEFB 00H + + ENDM + DEF5 8E,1C,40,00,00 + DEFW 1C8EH + DEFW 0040H + DEFB 00H + ENDM + DEF5 8A,7A,00,00,00 + DEFW 7A8AH + DEFW 0000H + DEFB 00H + ENDM + DEF5 87,48,00,00,00 + DEFW 4887H + DEFW 0000H + DEFB 00H + ENDM +FLTEN: ENT + DEF5 84,20,00,00,00 + DEFW 2084H + DEFW 0000H + DEFB 00H + ENDM +FLONE: ENT + DEF5 81,00,00,00,00 + DEFW 0081H + DEFW 0000H + DEFB 00H + ENDM + DEF5 7D,4C,CC,CC,CD + DEFW 4C7DH + DEFW CCCCH + DEFB CDH + ENDM +SLLMT: DEF5 66,2B,CC,77,12 + DEFW 2B66H + DEFW 77CCH + DEFB 12H + ENDM + SKP H + +; +EXPASC: LD HL,(HLBUF2) + LD B,0 +TENCOM: LD DE,FLTEN + CALL CMP2 + JR C,ONECOM + CALL DIVTEN + INC B + JR TENCOM +ONECOM: LD DE,FLONE + CALL CMP2 + JR NC,COMOK + CALL MULTEN + DEC B + JR ONECOM +COMOK: PUSH BC + CALL CVASF1 + CALL ADJDGT + POP BC + PUSH DE + EX DE,HL +SERNOP: LD A,M + OR A + JR Z,SEROK + INC HL + JR SERNOP +SEROK: DEC HL + LD A,M + INC HL + CP "0" + JR NZ,USEXPE + INC B + DEC HL +USEXPE: LD A,"E" + LD M,A + INC HL + LD A,B + LD B,"+" + BIT 7,A + JR Z,EXSGPT + NEG + LD B,"-" +EXSGPT: LD M,B + INC HL + LD M,"0" +EXTNPT: SUB 0AH + JR C,EXONPT + INC M + JR EXTNPT +EXONPT: ADD A,3AH + INC HL + LD M,A + INC HL + LD M,0 + POP DE + RET + SKP H + +; +INTPAR: PUSH HL + CALL HLFLT + LD DE,DGBF11 + PUSH DE + LD B,1 ;Non zero-sup. + SVC .ASCHL + RST 3 + DEFB .ASCHL + ENDM + POP HL + LD A,"0" + LD B,5 + CP M + JR NZ,INTDGO + INC HL + DJNZ -4 + JR INTDGE +INTDGO: LD A,B + LD (DGITCO),A + LD A,1 + LD (DGITFG),A +INTDGE: LD A,"." + LD (DGBF16),A + POP HL + CALL FRACT + JP FRACDG +; +; +CVASF1: LD (HLBUF2),HL + XOR A + LD (DGITCO),A + LD (DGITFG),A + PUSH HL + LD HL,DGBF07 + LD M,FFH + LD B,33 + LD A,"0" + INC HL + LD M,A + DJNZ -2 + LD A,"." + LD (DGBF16),A + POP HL + LD A,M + OR A + RET Z + LD DE,SNGMXO + CALL CMP + CCF + RET C + LD DE,SLLMT + CALL CMP + RET C + LD DE,ZFAC1 + PUSH DE + CALL LDIR5 + POP HL + LD A,M + CP 81H + + JR C,FRACDG ; + CP 90H + JP C,INTPAR ; + LD IX,DGBF08 + LD DE,SNGMXP + CALL GENDGT + CALL GEND? + RET NC ;C=0 +FRACDG: LD IX,DGBF17 +FRCAGN: LD DE,SNGMXO + PUSH BC + PUSH IX + CALL MUL + POP IX + POP BC + REP5 INC,DE + INC DE + INC DE + INC DE + INC DE + INC DE + ENDM + CALL GENDGT + CALL GEND? + JR C,FRCAGN + RET +; +; +CVASFL: ENT + LD A,5 + LD (PRCSON),A + PUSH HL + LD DE,ZFAC2 + PUSH DE + CALL LDIR5 + POP HL + CALL CVASF1 + CALL ADJDG2 + POP HL + RET +; +ZERADJ: LD DE,DGBF16 + LD (DE),A + DEC DE + RET +; +ADJDG2: JP C,EXPASC +ADJDGT: LD HL,(HLBUF2) + LD A,M + OR A + JR Z,ZERADJ + LD DE,DGBF08 + DEC DE + EX DE,HL + LD DE,1 +SSNTO1: INC HL + LD A,M + CP "." + JR NZ,TST30H + LD DE,0 + + JR SSNTO1 +TST30H: CP "0" + JR Z,SSNTO1 + ADD HL,DE + LD DE,8 + ADD HL,DE + LD A,M +FRCASL: LD M,"0" + CP 35H + JR C,BCKSER +ADDLOP: DEC HL + LD A,M + CP "." + JR Z,ADDLOP + INC A + JR Z,MAXNO + LD M,A + CP ":" + JR Z,FRCASL + INC HL +BCKSER: LD DE,DGBF16 + EX DE,HL + OR A + SBC HL,DE + EX DE,HL + JR C,KUMI + LD HL,DGBF16 + JR INTDI2 +KUMI: DEC HL + LD A,M + CP "." + DEC HL + JR Z,INTDIS + INC HL + CP "0" + JR Z,BCKSER + PUSH HL + LD DE,DGBF25 + SBC HL,DE + POP HL + JP NC,EXPASC +INTDIS: INC HL +INTDI2: LD M,0 + LD DE,DGBF08 +TSTFST: LD A,(DE) + CP "0" + JR NZ,ZEONLY + INC DE + JR TSTFST +ZEONLY: OR A + RET NZ + DEC DE + LD A,"0" + LD (DE),A + RET +; +; +MAXNO: LD HL,DGBF00 + LD DE,M1E08 + PUSH BC + + LD BC,6 + LDIR + POP BC + LD DE,DGBF00 + RET +; +M1E08: DEFM "1E+08" + + DEFB 0 +; +; +GENDGT: LD A,(DE) + CP 7DH + RET Z +INTGDL: CALL CMP + JR C,GTESTB + INC (IX+0) + PUSH IX + PUSH BC + CALL SUB + POP BC + POP IX + LD A,1 + LD (DGITFG),A + JR INTGDL +; +GTESTB: INC IX + REP5 INC,DE + INC DE + INC DE + INC DE + INC DE + INC DE + ENDM + LD A,(DGITFG) + LD B,A + LD A,(DGITCO) + ADD A,B + LD (DGITCO),A + CALL GEND? + RET NC + JR GENDGT +; +GEND?: LD A,M + OR A + RET Z + LD A,(DGITCO) + CP 9 + RET +; +DGITCO: DEFS 1 +DGITFG: DEFS 1 +EXPFLG: DEFS 1 +HLBUF2: DEFS 2 +; + SKP H + +; +; USING CONVERSION +; +USINGS: ENT + DEFS 2 ;USING START +USINGP: ENT + DEFS 2 ;USING POINTER +; +USNGSB: ENT + LD HL,(USINGP) + PUSH DE +USNGS2: LD A,M + OR A + JP Z,ER03 + CALL USGCD? + JR Z,USNGS4 + LD (BC),A + INC BC + INC HL + JR USNGS2 +USNGS4: EX AF,AF' + LD A,(PRCSON) + CP 3 + JP NZ,FLTUSG + EX AF,AF' + CP "!" + JP Z,1CHOUT + CP "&" + JP Z,2CHOUT + JP ER04 +; +1CHOUT: EX (SP),HL + PUSH BC + CALL CVTSDC + OR A + LD A," " + JR Z,+3 + LD A,(DE) + POP BC + LD (BC),A + INC BC +AFTPR': POP HL + INC HL +AFTPRT: LD A,M + OR A + JR Z,BRTUSG + CALL USGCD? + JR Z,RETUSG + LD (BC),A + INC BC + INC HL + JR AFTPRT + SKP H + +BRTUSG: LD HL,(USINGS) +RETUSG: LD (USINGP),HL + XOR A + LD (BC),A + RET +; +2CHOUT: LD D,2 +AG2CH&: INC HL + LD A,M + CP "&" + JR Z,26FOUN + INC D + CP " " + JR Z,AG2CH& + JP ER03 +26FOUN: EX (SP),HL + LD A,M + CP D + JR C,TRIZ&& + INC HL + CALL INDRCT + PUSH BC + LD BC,(STRST) + ADD HL,BC + POP BC +&PRLOP: LD A,M + LD (BC),A + INC BC + INC HL + DEC D + JR NZ,&PRLOP + JP AFTPR' +; +TRIZ&&: LD E,M + INC HL + CALL INDRCT + LD A,E + OR A + JR Z,&&SPCF + PUSH BC + LD BC,(STRST) + ADD HL,BC + POP BC +PR&&L1: LD A,M + LD (BC),A + INC BC + INC HL + DEC E + JR Z,&&SPC' + DEC D + JR NZ,PR&&L1 + JP AFTPR' +&&SPCF: LD A," " + LD (BC),A + INC BC +&&SPC': DEC D + JR NZ,&&SPCF + JP AFTPR' + SKP H + +; +; Check using code +; +USGCD?: CALL CHKACC + DEFB 4 + DEFM "!&#+" + RET Z + LD E,A + CP "*" + JR Z,USGCD2 + CALL ?POND + JR Z,USGCD2 + CP "." + LD E,"#" + JR Z,USGCD2 + CP %BAR + RET NZ + INC HL + LD A,M + OR A + JP Z,ER03 + RET +USGCD2: INC HL + LD A,M + CP E + DEC HL + LD A,M + RET +; +; +FLTUSG: XOR A + LD (FPLUSF),A + LD (PUASTF),A ;PUT * FLG + LD (PUYENF),A ;] + LD (PUAFMF),A ;AFTER-FLG + LD (PUCOMF),A ;PUT , FLG + LD (INTLEN),A ;INT LENGTH + LD (RPLUSF),A ;###+ + LD (PUEXPF),A ;^^^^ + DEC A + LD (FRCLEN),A ;FRAC LENGTH + EX AF,AF' + LD D,0 + CP "#" + JP Z,PFLENG + CP "*" + JP Z,ASTRSK + CALL ?POND + JP Z,YENUSG + CP "." + JP Z,PULSLS + CP "+" + JP Z,PLUSUS + JP ER04 +; +ASTRSK: LD A,1 + LD (PUASTF),A + INC HL + INC D + INC HL + + INC D + LD A,M + CALL ?POND + JR NZ,PULSLS + JR YENUS2 +; +YENUSG: INC HL + INC D +YENUS2: INC HL + INC D + LD (PUYENF),A + JR PULSLS +; +PLUSUS: LD A,1 + LD (FPLUSF),A +; +PFLENG: INC HL + INC D +; +PULSLS: EX DE,HL + DEC H +PUGTFC: INC H + LD A,(DE) + INC DE + CP "#" + JR Z,PUGTFC + CP "," + JR NZ,PUCONP + LD A,1 + LD (PUCOMF),A + JR PUGTFC +PUCONP: CP "." + JR Z,PUPOIT + CP "-" + JR NZ,PUAFMO + LD A,1 + LD (PUAFMF),A + INC DE + JR PUAFQO +PUAFMO: CP "+" + JR NZ,PUAFQO + LD A,(FPLUSF) + OR A + JR NZ,PUAFQO + LD A,1 + LD (RPLUSF),A + INC DE +PUAFQO: DEC DE + LD A,H + LD (INTLEN),A + JR BEGUSG +; +PUPOIT: LD A,H + LD (INTLEN),A + LD H,FFH +PUPOFC: INC H + LD A,(DE) + INC DE + CP "#" + JR Z,PUPOFC + + CP "-" + JR NZ,PUCOPQ + LD A,1 + LD (PUAFMF),A + INC DE + JR PUCOPP +PUCOPQ: CP "+" + JR NZ,PUCOPP + LD A,(FPLUSF) + OR A + JR NZ,PUCOPP + LD A,1 + LD (RPLUSF),A + INC DE +PUCOPP: DEC DE + LD A,H + LD (FRCLEN),A + JR BEGUSG +; +NEXPP': POP DE + JR NEXPPU +; +BEGUSG: LD H,4 + PUSH DE +CHEXPU: LD A,(DE) + INC DE + CP "^" + JR NZ,NEXPP' + DEC H + JR NZ,CHEXPU + POP AF + LD A,1 + LD (PUEXPF),A +NEXPPU: POP HL + PUSH DE + INC HL + LD A,M + RES 7,M + DEC HL + LD (USGSGN),A + LD A,(INTLEN) + LD D,A + DEFB 3EH +FRCLEN: DEFS 1 + LD E,A + DEFB 3EH +PUEXPF: DEFS 1 + PUSH BC + CALL USNGCV + POP BC + DEFB 3EH +PUCOMF: DEFS 1 + OR A + JR Z,LADJS1 + PUSH BC + PUSH DE + LD A,(INTLEN) + LD L,A + LD H,0 + ADD HL,DE + + LD DE,DGBF00 + LD C,0 + DEC HL +COMN3D: LD B,3 +COMSK3: LD A,M + CP " " + JR Z,ESCPUC + INC C + LD (DE),A + INC DE + DEC HL + DJNZ COMSK3 + LD A,M + CP " " + JR Z,ESCPUC + LD A,"," + LD (DE),A + INC DE + INC C + JR COMN3D +; +ESCPUC: DEFB 3EH +INTLEN: DEFS 1 + CP C + JP C,ER02 + LD B,C + LD L,A + LD H,0 + POP DE + PUSH DE + ADD HL,DE + LD DE,DGBF00 + DEC HL + LD A,(DE) + LD M,A + DEC HL + INC DE + DJNZ -4 + POP DE + POP BC +LADJS1: DEFB 3EH +PUAFMF: DEFS 1 + OR A + JR NZ,LADJS2 + DEFB 3EH +RPLUSF: DEFS 1 + OR A + JR NZ,LADJS2 + DEFB 3EH +FPLUSF: DEFS 1 + OR A + JR NZ,PTPLS1 + LD A,(USGSGN) + RLCA + JR NC,LADJS2 + LD A,(DE) + CP " " + LD H,"-" + JR Z,FPUTER + CP 30H + + JP NZ,ER02 +FPUTER: PUSH DE +PUPTML: LD A,(DE) + INC DE + CP " " + JR Z,PUPTML + CP 30H + JR Z,PUPTML + OR A + JR NZ,+3 + DEC DE + DEC DE + DEC DE + LD A,H + LD (DE),A + POP DE + JR LADJS2 +; +PTPLS1: DEFB 3EH +USGSGN: DEFS 1 + RLCA + LD H,"+" + JR NC,FPUTER + LD H,"-" + JR FPUTER +; +LADJS2: DEFB 3EH +PUYENF: DEFS 1 + OR A + JR Z,LADJS3 + LD A,(DE) + CP " " + JR NZ,LADJS3 + PUSH DE + LD A,(DE) + INC DE + CP " " + JR Z,-4 + DEC DE + DEC DE + LD A,(PUYENF) + LD (DE),A + POP DE +LADJS3: DEFB 3EH +PUASTF: DEFS 1 + OR A + JR Z,LADJS4 + PUSH DE +ASTFIL: LD A,(DE) + CP " " + JR NZ,LADJ4' + LD A,"*" + LD (DE),A + INC DE + JR ASTFIL +LADJ4': POP DE +LADJS4: LD A,(DE) + OR A + JR Z,USPRL8 + LD (BC),A + + INC BC + INC DE + JR LADJS4 +USPRL8: LD A,(RPLUSF) + OR A + JR Z,TST2DH ;- + LD A,(USGSGN) + RLCA + LD A,"+" +LSDVZR: JR NC,PULSTX + LD A,"-" +PULSTX: LD (BC),A + INC BC + JR RETPU$ +; +TST2DH: LD A,(PUAFMF) ;- + OR A + JR Z,RETPU$ + LD A,(USGSGN) + RLCA + LD A," " + JR LSDVZR +; +RETPU$: POP HL + JP AFTPRT +; +; +?POND: CP %POND ;EX + RET Z + CP "$" + RET + SKP H + +; +USNGCV: OR A + JP Z,USGCV2 + PUSH DE + LD A,M + OR A + JR Z,USCMOK + PUSH HL + LD A,D + LD DE,ZFAC1 + PUSH AF + CALL LDIR1 + POP AF + OR A + JR Z,BMULED + LD B,A + LD HL,ZFAC1 + JR +5 + CALL MULTEN + DJNZ -3 +BMULED: POP HL + LD B,0 +USTNCM: LD DE,ZFAC1 + CALL CMP2 + JR C,USTOCM + CALL DIVTEN + INC B + JR USTNCM +USTOCM: PUSH HL + LD HL,ZFAC1 + CALL DIVTEN + POP HL +USONCM: LD DE,ZFAC1 + CALL CMP2 + JR NC,USCMOK + CALL MULTEN + DEC B + JR USONCM +USCMOK: POP DE + PUSH BC + CALL USGCV1 + POP BC + PUSH DE + LD A,(DE) + CP "." + JR NZ,FLADSR + LD DE,DGBF16 + DEC DE + LD A,(DE) + CP 31H + POP DE + PUSH DE + JR NZ,USEX0C + EX DE,HL + INC HL + LD M,31H + DEC HL + JR MIDDCX +; +FLADSR: LD A,(DE) + + CP 31H + JR NZ,USEX0C + EX DE,HL + INC HL + LD A,M + DEC HL + CP "." + LD A,"0" + JR Z,+4 + LD A," " + LD M,A + INC HL + LD A,M + CP "." + JR Z,-4 + LD M,31H +MIDDCX: EX DE,HL + INC B +USEX0C: LD A,(DE) + INC DE + OR A + JR NZ,USEX0C + DEC DE + JP USEXPE +; +USGCV2: PUSH DE + CALL USGCV1 + POP AF + OR A + RET NZ + PUSH HL + LD HL,DGBF16 + DEC HL + LD A,"0" + CP M +FOVVXC: JP NZ,ER02 + DEC HL + LD A," " + CP M + JR NZ,FOVVXC + POP HL + RET +; +USGCV1: PUSH DE + CALL CVASF1 + JP C,ER02 + POP HL + PUSH HL + LD H,0 + INC L + JR Z,+3 + DEC L + LD DE,DGBF17 + ADD HL,DE + LD A,M + LD M,0 + DEFB 11H +FRCASU: LD M,"0" + CP 35H + JR C,BCKSEU + + DEC HL + LD A,M + CP "." + JR Z,-4 + INC A + JP Z,ER02 + LD M,A + CP ":" + JR Z,FRCASU +BCKSEU: LD HL,KEYBM1 ;¯¯KEYBUF + LD DE,2000H + LD M,D + INC HL + DEC E + JR NZ,-3 + POP HL + PUSH HL + LD E,H + LD D,0 + LD HL,KEYBUF + ADD HL,DE + PUSH HL + LD HL,DGBF07 + LD M," " + INC HL + LD D,7 +BF00SP: LD A,M + CP "0" + JR NZ,BF00ED + LD M," " + INC HL + DEC D + JR NZ,BF00SP +BF00ED: POP HL + PUSH HL + LD B,E + LD A,B + OR A + JR Z,BFST11 + LD DE,DGBF16 +BFSTL1: DEC HL + DEC DE + LD A,(DE) + LD M,A + CP " " + JR Z,BFST11 + DJNZ BFSTL1 + DEC DE + LD A,(DE) + CP " " + JR Z,BFST11 + INC A + JP NZ,ER02 +; +BFST11: POP HL + POP DE + INC E + JR Z,EDSTRT + LD B,E + LD DE,DGBF17 + + LD M,"." +BFSTL2: INC HL + DEC B + JR Z,EDSTRT + LD A,(DE) + INC DE + LD M,A + JR BFSTL2 +EDSTRT: LD M,0 + LD DE,KEYBUF + RET +; + END diff --git a/software/asm/mz-xz009/EDIT.ASM b/software/asm/mz-xz009/EDIT.ASM new file mode 100644 index 0000000..f9b0bfa --- /dev/null +++ b/software/asm/mz-xz009/EDIT.ASM @@ -0,0 +1,546 @@ +; ------------------------------------ +; MZ-800 BASIC Interm.code conversion +; FI:EDIT ver 1.0A 7.18.84 +; Programed by T.Miho +; ------------------------------------ +; + INCLD MACRO +; +CVIMTX: ENT + PUSH DE + PUSH BC + LD C,0 + DEC DE +CVIM10: INC DE +CVIM12: CALL IMSPACE + OR A + JR Z,IMEND + CP FFH + JR Z,IMPAI + CP 80H + JP NC,ER01 + CP 20H + JR C,CVIM10 + LD IX,CVIM12 + PUSH IX + CP '"' + JR Z,IMSTR + CP "'" + JR Z,IMREM + CP "?" + JR Z,IMPRT + CP "." + JP Z,IMFLT + CP "$" + JP Z,IMHEX + CALL TSTNUM + JR C,IMRSV + JP IMNUM +; +IMEND: LD M,A + POP BC + POP DE + RET +; +IMPAI: LD M,E4H + CALL IM3R + JR CVIM12 +; +IMPRT: LD A,8FH + CALL IM3RS + JR IMRSV6 +; +IMREM: LD M,":" + CALL IM3R + LD M,"'" + CALL IM3RH + JP IMDATA + SKP H + +; +IMSTR: LD M,A + CALL IM3R +IMSTR2: LD A,(DE) + OR A + RET Z + CP '"' + JR NZ,IMSTR +IM3RS: LD M,A +IM3R: INC DE +IM3RH: INC HL +IM3RC: INC C + RET NZ + JP ER08 ;LINE LENGTH +; +IMVAR: POP BC + LD A,(DE) + CALL TSTVAR + JR C,IM3RS +IMVAR2: CALL IM3RS + LD A,(DE) + CP "$" + JR Z,IM3RS + CALL TSTNUM + RET C + JR IMVAR2 +; +IMRSV: PUSH BC + LD BC,CTBL1 + CALL IMSER + JR NC,IMRSV4 + LD BC,GTABL + CALL IMSER + LD C,FEH + JR NC,IMRSV2 + LD BC,CTBL2 + CALL IMSER + LD C,FFH + JR C,IMVAR +IMRSV2: LD M,C + INC HL + LD M,A + POP BC + CALL IM3RC + CALL IM3RH + CP B4H ; ERL ****** + RET NZ + CALL IMSPACE + CP "=" + RET NZ + LD M,F4H ; = ****** + CALL IM3R + JR IMLNO + SKP H + +; +IMRSV4: POP BC + CALL IM3RH +IMRSV6: CP 97H ; REM + JR Z,IMDATA + CP 94H ; DATA + JR Z,IMDATA + CP C2H ; ELSE + JR Z,IMELSE + CP E2H ; THEN + JR Z,IMLNO + CP E0H + RET NC + PUSH AF + CALL IMSPACE + CP "/" + JR NZ,IMRSV7 + LD M,FBH ;/ + CALL IM3R + CALL SKPDE + CALL IM3RS + JR IMRSV8 +IMRSV7: CP "#" + JR NZ,IMRSV8 + CALL IM3RS + CALL SKPDE + CALL TSTNUM + CALL NC,IMNUM +IMRSV8: POP AF + CP 8DH ; FOR + RET NC +; +IMLNO: CALL IMSPACE + CP '"' + JR NZ,IMLNO2 + CALL IMSTR + JR IMLNO +IMLNO2: CP 2CH + RET C + CP 2FH + JR C,IMLNO4 ;",-." + CALL TSTNUM + RET C + CALL IMINT + JR IMLNO +IMLNO4: CALL IM3RS + JR IMLNO +; +IMELSE: DEC HL + LD M,":" + INC HL + LD M,A + CALL IM3RH + JR IMLNO +; +IMDATA: LD A,(DE) + CALL ENDCK0 + RET Z + CALL IM3RS + CP '"' + + CALL Z,IMSTR2 + JR IMDATA +; +; +IMSER: PUSH HL ;Search in tabale + PUSH DE + LD HL,BC + LD B,7FH +IMSER2: POP DE + PUSH DE + INC B + LD A,M + CP FFH + JR NZ,IMSER3 + POP DE ;Table end + POP HL + SCF + RET +; +IMSER3: CP "." + JR NZ,IMSER4 + INC HL ;AND OR XOR NOT + DEC DE + LD A,(DE) + INC DE + CALL TSTVAR + JR NC,IMSER6 +IMSER4: LD A,(DE) + CP " " + JR NZ,IMSER5 + LD A,M + AND 7FH + SUB "A" + CP 26 + JR C,IMSER6 + CALL SKPDI +IMSER5: LD C,M + INC HL + INC DE + CP "." + JR Z,IMSER8 + SUB C + JR Z,IMSER4 + CP 80H + JR Z,IMSER9 +IMSER6: DEC HL ;Not match + BIT 7,M + INC HL + JR Z,-3 + JR IMSER2 +IMSER8: LD A,B + CP E8H ;operator + JR NC,IMSER6 + CCF +IMSER9: POP HL ;Found + POP HL + LD M,B + LD A,B + RET +; + +IMSPACE:LD A,(DE) + CP " " + RET NZ + LD M,A + CALL IM3R + JR IMSPACE + SKP H + +; +IMNUM: EX AF,AF' + PUSH DE + CALL SKPDI + POP DE + CALL TSTNUM ;check if one-digit + JR NC,IMFLT + CP "." + JR Z,IMFLT + CP "E" + JR Z,IMFLT + EX AF,AF' + SUB "0"-1 + JP IMFLT ;ok, JP IM3RS +; +IMFLT: PUSH BC + LD M,15H + INC HL + PUSH HL + CALL CVFLAS + POP HL + LD BC,5 + ADD HL,BC + LD A,6 + JR BCKSPS +; +IMINT: PUSH BC + CALL CVBCAS + LD M,0BH + INC HL + JR PPOLNO +; +IMHEX: LD M,A + INC DE + LD A,(DE) + SVC .CKHEX + RST 3 + DEFB .CKHEX + ENDM + JP C,IM3RH + PUSH BC + LD M,11H + INC HL + PUSH HL + EX DE,HL + SVC .DEHEX + RST 3 + DEFB .DEHEX + ENDM + LD BC,DE + EX DE,HL + POP HL +PPOLNO: LD A,3 + LD M,C + INC HL + LD M,B + INC HL +BCKSPS: POP BC + ADD A,C + JP C,ER08 ;LINE LENGTH + + LD C,A +BCKSKP: DEC DE + LD A,(DE) + CP " " + JR Z,-4 + INC DE + RET + SKP H + +; +CVTXIM: ENT + PUSH HL + PUSH DE + PUSH BC + EXX + LD B,0 + EXX + LD C,0 +CVTX10: LD A,M + OR A + JR Z,TXEND + LD BC,CVTX10 + PUSH BC + CP "'" + JR Z,TXDAT2 + INC HL + LD BC,CTBL1 + CP 20H + JR C,TXNUM + CP '"' + JR Z,TXSTR + CP ":" + JR Z,TX3AH + CP 97H ;REM + JR Z,TXDATA + CP 94H ;DATA + JR Z,TXDATA + CP E4H ;PI + JR Z,TXPAI + CP FEH + JR NC,TXRSV0 + CP 80H + JP NC,TXRSV + JP STRDE +; +TXEND: LD (DE),A + POP BC + POP DE + POP HL + RET +; +TXPAI: LD A,FFH + JP STRDE +; +TXRSV0: LD BC,CTBL2 + JR NZ,+5 + LD BC,GTABL + LD A,M + INC HL + JR TXRSV +; +TXDATA: CALL TXRSV + RET Z +TXDAT2: LD A,M + CALL ENDCK0 + RET Z + CALL STRDE + LD A,M + INC HL + + CP '"' + CALL Z,TXSTR2 + JR TXDAT2 +; +TXSTR: CALL STRDE +TXSTR2: LD A,M + OR A + RET Z + INC HL + CP '"' + JR NZ,TXSTR + JR STRDE +; +TX3AH: LD (DE),A + LD A,M + CP C2H ; ELSE + RET Z + CP "'" + RET Z + JR STRDE' +; +TXNUM: CP 15H + JR Z,TXFLT + CP 0BH + JR NC,TXINT + DEC A + OR 30H + JR STRDE +; +TXINT: PUSH DE + LD E,M + INC HL + LD D,M + INC HL + PUSH HL + CP 12H + JR Z,TXINT2 + CP 0CH + JR C,TXINT2 + JR NZ,TXHEX + EX DE,HL + INC HL + INC HL + LD E,M + INC HL + LD D,M +TXINT2: EX DE,HL + CALL ASCFIV + LD BC,DE + POP HL + POP DE +TXINT4: LD A,(BC) + OR A + RET Z + CALL STRDE + INC BC + JR TXINT4 +; +TXFLT: PUSH HL + PUSH DE + + CALL CVASFL + LD BC,DE + POP DE + POP HL + REP5 INC,HL + INC HL + INC HL + INC HL + INC HL + INC HL + ENDM + JR TXINT4 +; +TXRSV: CP 80H + JR Z,TXRSV4 + EX AF,AF' +TXRSV2: LD A,(BC) + RLCA + INC BC + JR NC,TXRSV2 + EX AF,AF' + DEC A + JR TXRSV +TXRSV4: LD A,(BC) + BIT 7,A + JR NZ,STRDES + CP "." + CALL NZ,STRDE + INC BC + JR TXRSV4 +; +STRDES: AND 7FH +STRDE: LD (DE),A + OR A + RET Z +STRDE': INC DE + EXX + INC B + EXX + RET NZ + XOR A + LD (DE),A + DEC DE + EXX + DEC B + EXX + RET +; +TXHEX: LD A,"$" + EX AF,AF' + EX DE,HL + CALL HEXHL + LD BC,DE + POP HL + POP DE + EX AF,AF' + CALL STRDE + JR TXINT4 +; +HEXHL: ENT + + LD DE,DGBF12 + PUSH DE + LD A,H + CALL HEXACC + LD A,L + CALL HEXACC + XOR A + LD (DE),A + POP DE + LD B,3 +; +ZRSUP: LD A,(DE) + CP "0" + RET NZ + INC DE + DJNZ ZRSUP + RET +; +HEXACC: ENT + PUSH AF + RRCA + RRCA + RRCA + RRCA + AND 0FH + CALL HEXAC2 + POP AF + AND 0FH +HEXAC2: ADD A,30H + CP 3AH + JR C,+4 + ADD A,7 + LD (DE),A + INC DE + RET +; +CVBCAS: ENT + PUSH HL + EX DE,HL + SVC .DEASC + RST 3 + DEFB .DEASC + ENDM + LD BC,DE + EX DE,HL + POP HL + JP BCKSKP +; + END diff --git a/software/asm/mz-xz009/EXPR.ASM b/software/asm/mz-xz009/EXPR.ASM new file mode 100644 index 0000000..79b966c --- /dev/null +++ b/software/asm/mz-xz009/EXPR.ASM @@ -0,0 +1,2038 @@ +; ----------------------------- +; MZ-800 BASIC Expression part +; FI:EXPR ver 1.0A 8.25.84 +; Programed by T.Miho +; ----------------------------- +; +; + INCLD MACRO +; +IBYTE: ENT ;0..255 + CALL IDEEXP +DCHECK: ENT + LD A,D + OR A + JP NZ,ER03 + LD A,E + RET +; +DEEXP: ENT + CALL EXPR8 + REP5 DEC,DE + DEC DE + DEC DE + DEC DE + DEC DE + DEC DE + ENDM + JR STDEFC +; +IDEEXP: ENT ;DE=(HL) + CALL EXPR +STDEFC: ENT + PUSH AF + PUSH HL + EX DE,HL + CALL STROMT + CALL HLFLT + EX DE,HL + POP HL + POP AF + RET +; +STREXP: ENT + CALL EXPR + PUSH AF + CALL STROK + PUSH HL + EX DE,HL + CALL CVTSDC + POP HL + POP AF + RET +; +CVTSDC: ENT + LD B,M + INC HL + LD E,M + INC HL + LD D,M + LD HL,(STRST) + + ADD HL,DE + EX DE,HL + LD A,B + RET + SKP H + +; +EXPR: ENT + LD DE,(VARED) + LD (TMPEND),DE +EXPRNX: ENT + LD DE,(INTFAC) + PUSH DE + CALL EXPR8 + POP DE + RET +; +EXPR8: PUSH DE + LD DE,(TMPEND) + CALL MEMECK + POP DE +; +; +EXPR7: CALL EXPR6 +EXPR7L: CP EAH ;XOR + RET NZ + LD A,(PRCSON) + PUSH AF + INC HL + CALL EXPR6 + POP BC + PUSH AF + PUSH HL + CALL ADJUST + CALL .XOR. + POP HL + POP AF + JR EXPR7L +; +EXPR6: CALL EXPR5 +EXPR6L: CP EBH ;OR + RET NZ + LD A,(PRCSON) + PUSH AF + INC HL + CALL EXPR5 + POP BC + PUSH AF + PUSH HL + CALL ADJUST + CALL .OR. + POP HL + POP AF + JR EXPR6L +; +EXPR5: CALL EXPR4 +EXPR5L: CP ECH ;AND + RET NZ + LD A,(PRCSON) + PUSH AF + INC HL + CALL EXPR4 + POP BC + PUSH AF + PUSH HL + CALL ADJUST + + CALL .AND. + POP HL + POP AF + JR EXPR5L +; +EXPR4: TEST1 EDH ;NOT + CALL TEST1 + DEFB EDH + ENDM + JR NZ,EXPR3 + CALL EXPR3 + PUSH AF + PUSH HL + LD HL,-5 + ADD HL,DE + CALL .NOT. + POP HL + POP AF + RET + +EXPR3: CALL EXPR2 +EXPR3L: CP EEH ;>< + RET C + PUSH AF ;stk OPC + LD A,(PRCSON) + PUSH AF ;stk OPC, PRCSON + INC HL + CALL EXPR2 + POP BC ;stk OPC; B=PRCSON + EX (SP),HL ;stk RJOB; HL=OPC + PUSH AF ;stk RJOB,NEXT + PUSH HL ;stk RJOB,NEXT,OPC + CALL ADJUST + CALL CMP + EX AF,AF' ;AF' = result + POP AF ;stk RJOB,NEXT; A=OPC + CP F6H ;< + JR NZ,NXTCP1 + EX AF,AF' + JR C,TRUE +FALSE: LD BC,0 +RLBACK: LD M,C + INC HL + LD M,B + INC HL + XOR A + LD M,A + INC HL + LD M,A + INC HL + LD M,A + LD A,5 + LD (PRCSON),A + POP AF ;POP NEXT + POP HL ;POP RJOB + JR EXPR3L +; +TRUE: LD BC,8081H + JR RLBACK +; + +NXTCP1: CP F5H ;> + JR NZ,NXTCP2 + EX AF,AF' + JR Z,FALSE + JR C,FALSE + JR TRUE +; +NXTCP2: CP F4H ;= + JR NZ,NXTCP3 + EX AF,AF' + JR Z,TRUE + JR FALSE +; +NXTCP3: CP F2H ;=>,>= + JR C,NXTCP4 + EX AF,AF' + JR NC,TRUE + JR FALSE +; +NXTCP4: CP F0H ;=<,<= + JR C,NXTCP5 + EX AF,AF' + JR Z,TRUE + JR C,TRUE + JR FALSE +; +NXTCP5: EX AF,AF' ;<>,>< + JR Z,FALSE + JR TRUE +; +; +EXPR2: CALL EXPR1 +EXPR2L: CP F7H ;+,- + RET C + LD A,(PRCSON) + PUSH AF + INC HL + JR Z,EXPR2A ;+ + CALL EXPR1 + POP BC + PUSH AF + PUSH HL + CALL ADJUST + CALL SUB +EXPR2X: POP HL + POP AF + JR EXPR2L +EXPR2A: CALL EXPR1 + POP BC + PUSH AF + PUSH HL + CALL ADJUST + CALL ADD + JR EXPR2X +; +; +EXPR1: CALL EXPR0 +EXPR1L: CP F9H ;MOD, YEN + RET C + LD A,(PRCSON) + + PUSH AF + INC HL + JR Z,EXPR1A ;YEN + CALL EXPR0 + POP BC + PUSH AF + PUSH HL + CALL ADJUST + CALL MOD +EXPR1X: POP HL + POP AF + JR EXPR1L +EXPR1A: CALL EXPR0 + POP BC + PUSH AF + PUSH HL + CALL ADJUST + CALL YEN + JR EXPR1X +; +; +EXPR0: CALL EXPRZ +EXPR0L: CP FBH ;/,* + RET C + LD A,(PRCSON) + PUSH AF + INC HL + JR Z,EXPR0A ;/ + CALL EXPRZ + POP BC + PUSH AF + PUSH HL + CALL ADJUST + CALL MUL +EXPR0X: POP HL + POP AF + JR EXPR0L +EXPR0A: CALL EXPRZ + POP BC + PUSH AF + PUSH HL + CALL ADJUST + CALL DIV + JR EXPR0X +; +EXPRZ: TEST1 F7H ;+ + CALL TEST1 + DEFB F7H + ENDM + JR Z,EXPRZ + CP F8H ;- + JR NZ,EXPRY + INC HL + CALL EXPRY + JR EXPRX2 +; +EXPRY: CALL FACTOR +EXPRYL: CP FDH ;^ + RET NZ + LD A,(PRCSON) + + PUSH AF + INC HL + CALL EXPRX + POP BC + PUSH AF + PUSH HL + CALL ADJUST ; + CALL POWERS ;(HL)^(DE) + POP HL + POP AF + JR EXPRYL +; +EXPRX: TEST1 F7H ;+ + CALL TEST1 + DEFB F7H + ENDM + JR Z,EXPRX + CP F8H ;- + JR NZ,FACTOR + INC HL + CALL FACTOR +EXPRX2: PUSH AF + PUSH HL + LD HL,-5 + ADD HL,DE + CALL NEG + POP HL + POP AF + RET +; + SKP H + +FACTOR: CALL ENDCHK + JP Z,ER01 + CALL FAC0 + JP HLFTCH +; +FAC0: PUSH HL + LD HL,(MEMLMT) + SCF + SBC HL,DE + JP C,ER06 ;TOO COMPLEX EXPR + POP HL + CP E4H ;PI + JR Z,FACPAI + CP 20H + JR NC,VARFNC ;IM 20 .... +; +FACNUM: ENT ;Factor(numeric) + INC HL + CP 15H + JR C,FACINT + CALL LDIR5 ;IM 15 + JR FACR5 +FACPAI: INC HL + PUSH HL + LD HL,FLTPAI + CALL LDIR5 + POP HL +FACR5: LD A,5 +FACRX: LD (PRCSON),A + RET +; +FACINT: CP 0BH ;IM 00 .. 14 + JR NC,FACI4 + DEC A + JP M,ER01 ;IM 00 + LD B,0 + LD C,A + JR FACI6 +; +FACI4: LD C,M ;IM 0B .. 14 + INC HL + LD B,M + INC HL + CP 0CH + JR NZ,FACI6 + INC BC + INC BC + LD A,(BC) + INC BC + EX AF,AF' + LD A,(BC) + LD B,A + EX AF,AF' + LD C,A +FACI6: PUSH HL + PUSH DE + EX DE,HL + LD E,C + LD D,B + CALL FLTHEX + + POP DE + POP HL + LD A,5 +FACRX5: REP5 INC,DE + INC DE + INC DE + INC DE + INC DE + INC DE + ENDM + JR FACRX +; +VARFNC: CP '"' + JR NZ,VARFN1 + INC HL + PUSH HL + CALL STRLCK ;B=len(HL str.) + EX (SP),HL ;New text point + PUSH HL ;Old text point + LD HL,(TMPEND) + PUSH BC + LD BC,(STRST) + OR A + SBC HL,BC ;HL=OFSET+ADR + POP BC + EX DE,HL + LD M,B ;FAC set len. + INC HL + LD M,E ;FAC set adrs + INC HL + LD M,D + INC HL + INC HL + INC HL + POP DE ;Old text point + PUSH HL ;New expr point + LD HL,(TMPEND) + CALL STRENT ;(HL)_(DE),B + LD (TMPEND),HL + POP DE ;New expr point + POP HL ;New text point + LD A,3 + LD (PRCSON),A + RET +; +VARFN1: CP "(" + JR NZ,FUNC + INC HL ;( ... ) + CALL EXPR8 + JP CH29H +; +; +; +FUNC: OR A ;Function + JP P,VARFN2 + CP E7H ;SPC ==> + INC HL + JR NZ,FUNC1 + LD B,5 ;param is numeric + LD A,A8H ; SPACE$ + + PUSH AF + JR FUNC2 +FUNC1: CP FFH + JP NZ,ER01 + LD A,M + INC HL + CP A0H + JP Z,CHR$OP ;CHR$ + CP C8H + JP NC,ER01 + CP BAH + JR NC,GETJPA ;complex + CP 9CH ;JOY STICK + JR Z,GETJPA + CP 9DH ;JOY STRIG + JP Z,GETJPA + PUSH AF + CP B3H + JR NC,SYSV ;system var + LD B,3 + CP ABH + JR NC,FUNC2 ;param is string + LD B,5 ;param is numeric + CP 88H ;RND + JR Z,RNDONL +FUNC2: CALL HCH28H +FUNC4: PUSH BC + CALL EXPR8 + CALL CH29H + POP AF + CALL STRCK +FUNC6: POP AF + PUSH DE + PUSH HL + LD HL,-5 + ADD HL,DE + CALL GETJPA + POP HL + POP DE + RET +; +; +RNDONL: TEST1 "(" + CALL TEST1 + DEFB "(" + ENDM + JR Z,FUNC4 +SYSV: LD A,5 + LD (PRCSON),A + PUSH HL + LD HL,FLONE + CALL LDIR5 + POP HL + JR FUNC6 + SKP H + +; +GETJPA: PUSH HL + ADD A,A + LD L,A + LD H,0 + LD BC,FJPTBL + ADD HL,BC + LD A,M + INC HL + LD H,M + LD L,A + EX (SP),HL + RET +; +SIZE: ENT + EX DE,HL + LD HL,-527 + ADD HL,SP + LD BC,(TMPEND) + OR A + SBC HL,BC + EX DE,HL + JR NC,PUT2B + XOR A + JR PUT1B +; +CSRH: ENT + LD A,(CURX) + JR PUT1B +CSRV: ENT + LD A,(CURY) + JR PUT1B +POSH: ENT + LD DE,(POINTX) + JR PUT2B +POSV: ENT + LD DE,(POINTY) + JR PUT2B +ERR: ENT + LD A,(ERRCOD) +PUT1B: LD E,A + LD D,0 +PUT2B: LD A,5 + LD (PRCSON),A + JP FLTHEX +; +ERL: ENT + LD DE,(ERRLNO) + CALL FLTHEX + INC HL + BIT 7,M + DEC HL + RET Z + LD DE,FL64K + JP ADD +; +FL64K: DEF5 91,00,00,00,00 ;65536 + DEFW 0091H + DEFW 0000H + DEFB 00H + + ENDM + SKP H + +; +CHR$OP: CALL HCH28H + LD B,0 +CHR$LP: PUSH BC ;counter + PUSH DE ;FAC + CALL DEEXP + CALL DCHECK + POP DE ;FAC + POP BC ;counter + PUSH AF ;data + INC B + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR Z,CHR$LP + CALL CH29H + LD A,B ;length + EXX + LD B,A + LD HL,(TMPEND) ;string start + CALL ADDHLA + LD DE,HL ;string end+1 + CALL MEMECK +CHR$4: DEC HL + POP AF ;data + LD M,A + DJNZ CHR$4 + EXX + LD A,B ;length + EXX + LD B,A +; +;HL=String start +;DE=String end+1 +;B =String length +;DE'=FAC +;HL'=TEXT,?? +; +STEXR2: LD (TMPEND),DE + LD DE,(STRST) + OR A + SBC HL,DE + PUSH HL + LD A,B + EXX + EX DE,HL + LD M,A + INC HL + POP BC + LD M,C + INC HL + LD M,B + LD BC,3 ; + ADD HL,BC +STRPRS: EX DE,HL + LD A,3 + LD (PRCSON),A + RET + SKP H + +; +HEX$: ENT + PUSH HL + CALL HLFLT + CALL HEXHL + SVC .COUNT + RST 3 + DEFB .COUNT + ENDM +; +; DE:adrs +; B:length +; (SP):Text pointer +; +PUTSTR: ENT + LD A,B + OR A + JR Z,NULSPC + LD HL,(TMPEND) + PUSH HL + PUSH BC + CALL STRENT + POP BC + EX DE,HL + POP HL + EXX + POP DE + EXX + JR STEXR2 +NULSPC: POP HL + CALL CLRFAC + JR STRPRS +; +SPACE$: ENT + PUSH HL + CALL HLINCK + LD B,A + LD C,A + OR A + LD A," " + PUSH DE + CALL NZ,?SETDE + POP DE + LD B,C + JR PUTSTR +; +HLINCK: CALL HLFLT + LD DE,KEYBUF + LD A,H + OR A + JP NZ,ER03 + LD A,L + RET + SKP H + +; +; +STR$: ENT + PUSH HL + CALL CVNMFL + LD A,(DE) + CP " " + JR NZ,+3 + INC DE + SVC .COUNT + RST 3 + DEFB .COUNT + ENDM + JR PUTSTR +; + SKP H + +EOF: ENT + CALL HCH28H + CALL GETLU + LD B,A + CALL HCH29H + LD A,B + PUSH HL + PUSH DE + SVC .SEGAD + RST 3 + DEFB .SEGAD + ENDM + LD DE,-1 + JR C,EOF2 + INC HL + BIT ##EOF,M + JR NZ,EOF2 + LD DE,0 +EOF2: POP HL + CALL FLTHEX + LD A,5 + LD (PRCSON),A +EOF8: REP5 INC,HL + INC HL + INC HL + INC HL + INC HL + INC HL + ENDM + EX DE,HL + POP HL + RET +; +POINT: ENT + CALL HCH28H + PUSH DE ;EXPR pointer + CALL DEEXP ;X + LD BC,DE ;X + POP DE ;EXPR pointer + PUSH DE ;EXPR pointer + PUSH BC ;X + CALL CH2CH + CALL DEEXP ;Y + CALL CH29H + EX (SP),HL ;HL=X + EX DE,HL + SVC .POINT + RST 3 + DEFB .POINT + ENDM + INC A + JP Z,ER03 ;Out of range + DEC A + POP DE ;TEXT pointer + POP HL ;EXPR pointer + PUSH DE ;TEXT pointer + CALL PUT1B + JR EOF8 + SKP H + +; +ASC: ENT + PUSH HL + CALL CVTSDC + OR A + JR Z,+3 + LD A,(DE) + JR LEN2 +; +LEN: ENT + PUSH HL + CALL CVTSDC +LEN2: POP HL + JP PUT1B +; +VAL: ENT + PUSH HL + CALL CVTSDC + LD HL,(TMPEND) + PUSH HL + CALL STRENT + LD M,0 + POP DE + POP HL + JP CVFLAS + SKP H + +; +LEFT$: ENT + CALL CH28EX + CALL CH29H + CALL BCHECK + EX DE,HL + LD A,M + CP C + JR NC,+3 + LD C,A + LD M,C + LD BC,5 +FACSTR: LD A,3 + ADD HL,BC + EX DE,HL + LD (PRCSON),A + JP HLFTCH +; +RIGHT$: ENT + CALL CH28EX + CALL CH29H + CALL BCHECK + EX DE,HL + LD A,M + SUB C + JR NC,MID$EE + XOR A + LD C,M +MID$EE: LD M,C + INC HL + ADD A,M + LD M,A + INC HL + JR NC,+3 + INC M + LD BC,3 ; + JR FACSTR + SKP H + +; +MID$: ENT + CALL CH28EX + CALL BCHECK + OR A + JP Z,ER03 + PUSH AF + TEST1 ")" + CALL TEST1 + DEFB ")" + ENDM + LD A,FFH + JR Z,MID$2 + CALL HCH2CH + PUSH DE + EX DE,HL + LD BC,5 + ADD HL,BC + EX DE,HL + CALL DEEXP + CALL CH29H + CALL DCHECK + POP DE +MID$2: POP BC + LD C,A + EX DE,HL + LD A,M + SUB B + JR C,MIDNUL + INC A + CP C + JR NC,+3 + LD C,A + LD A,B + DEC A + JR MID$EE +; +MIDNUL: XOR A + LD C,A + JR MID$EE +; +BCHECK: LD A,B + OR A + JP NZ,ER03 + LD A,C + RET +; +CH28EX: CALL HCH28H + PUSH DE + CALL EXPR8 + CALL CH2CH + CALL STROK + CALL DEEXP + LD C,E + LD B,D + POP DE + RET + SKP H + +; +TI$: ENT + PUSH HL + PUSH DE + LD HL,(TMPEND) + PUSH HL + LD A,"0" + LD B,6 + CALL ?SETHL + SVC .TIMRD ;A,DE + RST 3 + DEFB .TIMRD + ENDM + POP HL + OR A + JR Z,TI$2 + INC M + INC HL + INC M + INC M + DEC HL +TI$2: EX DE,HL + LD BC,8CA0H ;10H + CALL CLDGIT + LD BC,E10H ;1H + CALL CLDGIT + CP 3AH + JR C,TI$4 + SUB 10 + DEC DE + LD (DE),A + DEC DE + LD A,(DE) + INC A + LD (DE),A + INC DE + INC DE +TI$4: DEC DE + DEC DE + LD A,(DE) + INC DE + LD B,A + LD A,(DE) + INC DE + LD C,A + LD A,B + CP 32H + JR NZ,TI$6 + LD A,C + CP 34H + JR NZ,TI$6 + LD HL,(TMPEND) + LD A,"0" + LD B,6 + CALL ?SETHL + JR TI$8 +TI$6: LD BC,258H ;10M + CALL CLDGIT + LD BC,3CH ;1M + CALL CLDGIT + + LD BC,0AH ;10S + CALL CLDGIT + LD A,30H + ADD A,L + LD (DE),A +TI$8: LD HL,(TMPEND) + LD DE,6 + EX DE,HL + ADD HL,DE + LD (TMPEND),HL + EX DE,HL + LD DE,(STRST) + OR A + SBC HL,DE + EX DE,HL + POP HL + LD M,6 + INC HL + LD M,E + INC HL + LD M,D + INC HL + INC HL + INC HL + EX DE,HL + POP HL + LD A,3 + LD (PRCSON),A + JP HLFTCH +; +CLDGIT: OR A + SBC HL,BC + JR C,CLDGRT + LD A,(DE) + INC A + LD (DE),A + JR CLDGIT +CLDGRT: ADD HL,BC + INC DE + RET +; +TIMDAI: ENT + TESTX F4H ;TI$=.... + CALL TESTX + DEFB F4H + ENDM + CALL STREXP + LD A,B + CP 6 + JP NZ,ER03 + PUSH HL + PUSH DE + LD HL,0 + CALL TIMASC + CP 24 + JP NC,ER03 + CP 12 + LD A,0 + JR C,TIMDA2 + PUSH DE + + LD DE,12 + OR A + SBC HL,DE + POP DE + INC A +TIMDA2: PUSH AF + CALL TIMASC + CP 60 + JP NC,ER03 + CALL TIMASC + CP 60 + JP NC,ER03 + POP AF + EX DE,HL + SVC .TIMST + RST 3 + DEFB .TIMST + ENDM + POP DE + POP HL + RET +; +TIMASC: PUSH DE + LD D,H + LD E,L + ADD HL,HL + ADD HL,HL + ADD HL,DE + LD D,H + LD E,L + ADD HL,HL + ADD HL,DE + ADD HL,HL + ADD HL,HL + POP DE + LD A,(DE) + INC DE + SUB 30H + JP C,ER03 + CP 0AH + JP NC,ER03 + PUSH BC + LD C,A + ADD A,A + ADD A,A + ADD A,C + ADD A,A + LD C,A + LD A,(DE) + INC DE + SUB 30H + JP C,ER03 + CP 0AH + JP NC,ER03 + ADD A,C + LD C,A + LD B,0 + ADD HL,BC + POP BC + RET + + SKP H + +; +INTGTV: ENT + LD DE,(VARED) + LD (TMPEND),DE + LD DE,(INTFAC) +GETVAR: PUSH DE + CALL VSRTST +GETFNV: LD A,M + CP "(" + JP Z,ARRAY + PUSH HL + CALL CHVRNM + JR NC,CRNVAR + LD A,C + LD C,L + LD B,H + POP HL + POP DE + RET +; +CRNVAR: LD A,(DE) + ADD A,C ;VAR.LEN.+TYPE + ADD A,2 + PUSH BC + EX DE,HL + LD HL,(TMPEND) + PUSH HL + OR A + SBC HL,DE + INC HL + LD C,L + LD B,H + POP HL + PUSH DE + EX DE,HL + LD L,A + LD H,0 + ADD HL,DE + EX DE,HL + CALL MEMECK + LDDR + LD E,A + LD D,0 + SVC .ADDP2 + RST 3 + DEFB .ADDP2 + ENDM + POP HL + POP BC + LD DE,KEYBUF + LD M,C ;TYPE SET + INC HL + SCF + SBC A,C ;B=A-C-1 + LD B,A +VARSL1: LD A,(DE) ;VAR.LEN.&NAME + LD M,A + INC DE + INC HL + DJNZ VARSL1 + + PUSH HL + LD B,C + CALL ?CLRHL ;VAR.CLR + LD M,A ;VAR.END MARK + LD A,C + POP BC + POP HL + POP DE + RET +; +VSRTST: CALL HLFTCH + SUB "A" + CP 26 + JP NC,ER01 + LD DE,KEYBUF + LD B,0 +VSRTS1: INC DE + LD A,M + CALL TSTVAR + JR C,TSTTYP + LD (DE),A + INC B + LD A,B + CP 3 + JR C,+3 + DEC B + INC HL + JR VSRTS1 +TSTTYP: LD DE,KEYBUF + EX DE,HL + LD M,B + EX DE,HL + LD C,5 + CP 24H ;$ + RET NZ + LD C,3 + INC HL + RET +; +ADJUST: LD HL,-5 + EX DE,HL + ADD HL,DE + EX DE,HL + ADD HL,DE + LD A,B + JP STRCK +; +; +STRLCK: LD B,FFH +STRLL1: INC B + LD A,M + OR A + RET Z + INC HL + CP '"' + RET Z + JR STRLL1 +; +STRENT: ENT + LD A,B + + OR A + RET Z + CALL LDHLDE + EX DE,HL + CALL MEMECK + EX DE,HL + RET +; +; +MEMECK: ENT ;SBC SP,DE + PUSH HL + LD HL,-512 + ADD HL,SP + SBC HL,DE + POP HL + RET NC + JP ER06' +; +; +; +; PUSH DE +; KEYBUF..LEN. NAME +; HL=( +; +ARRAY0: LD DE,(INTFAC) + PUSH DE + JR ARRAY2 +; +ARRAY: XOR A + LD (AUTDIM),A + INC HL + LD (ARYTXT),HL +ARRAY2: LD B,0 + EXX + POP HL ;POP FAC + PUSH HL ;PUSH FAC + PUSH HL ;PUSH FAC1 + LD HL,(TMPEND) + LD DE,KEYBUF + PUSH HL + LD A,(DE) + LD M,A + INC DE + INC HL + LD B,A + CALL STRENT + POP DE + LD (TMPEND),HL + LD HL,(STRST) + EX DE,HL + OR A + SBC HL,DE + EX (SP),HL ;NAME ADR. + PUSH HL ;PUSH FAC1 + EXX +TSALOP: POP DE ;POP FAC1 + PUSH DE ;PUSH FAC1 + PUSH BC ;PUSH B,TYPE(C) + LD BC,(ARYTXT) + LD A,(AUTDIM) + + PUSH BC + PUSH AF + LD BC,(DGBF00) + PUSH BC + CALL DEEXP ;¯¯DE=EXP(INT) + BIT 7,D + JP NZ,ER03 + EX AF,AF' + POP BC + LD (DGBF00),BC + POP AF + LD (AUTDIM),A + POP BC + LD (ARYTXT),BC + EX AF,AF' + INC HL + CP ")" + JR Z,TSFARY + CP "," + JP NZ,ER01 + POP BC ;POP B,TYPE(C) + INC B ;(.,.,.,.) + LD A,B + CP 4 + JP NC,ER03 + EXX + POP HL ;POP FAC1 + POP DE ;POP NAME ADR. + EXX + PUSH DE ;ANS + EXX + PUSH DE ;PUSH NAME ADR. + PUSH HL ;PUSH FAC1 + EXX + JR TSALOP +; +TSFARY: POP BC ;POP B,TYPE(C) + EXX + POP HL ;POP FAC1 + POP DE ;POP NAME ADR. + EXX + INC B ;ARRAY POINT + PUSH DE ;ANS + PUSH HL ;PUSH TEXT POINT + EXX + LD HL,(STRST) + ADD HL,DE + LD B,M + INC B + LD DE,KEYBUF + CALL LDDEHL + EXX + SET 7,C + CALL CHVRNM + RES 7,C + JR NC,ARYDIM + LD A,B + CP M + JP NZ,ER07 ;DUPLICATE +;LD A,(AUTDIM) + +;OR A +;JP NZ,ER07 + INC HL + EX DE,HL + POP HL + LD (DGBF00),HL ;TEXT END + EXX + LD HL,0000H + EXX + EX DE,HL +ADRCL: LD E,M + INC HL + LD D,M + INC HL + EX (SP),HL + PUSH DE + EXX + POP DE + CALL DIMMUL + EXX + PUSH HL + OR A + SBC HL,DE + JP NC,ER03 + EXX + POP DE + CALL DIMADD + EXX + POP HL + DJNZ ADRCL + PUSH HL + EXX + LD A,C + LD D,B + BIT 6,A + JR NZ,VARDIM + AND 0FH + LD E,A + PUSH AF + CALL DIMMUL + PUSH HL + EXX + POP BC + POP AF + POP HL + ADD HL,BC + LD C,L + LD B,H +VARDME: LD HL,(DGBF00) + POP DE + RET +; +VARDIM: LD E,M + INC HL + LD D,M + POP HL + LD C,L + LD B,H + LD M,E + INC HL + + LD M,D + AND 0FH + JR VARDME +; +; +ARYDIM: EXX + LD A,(AUTDIM) + OR A + JP Z,ER03 + POP HL ;TEXT POINT + LD (DGBF00),HL + EXX + LD DE,(TMPEND) + LD L,B + LD H,0 + ADD HL,HL + ADD HL,DE + EX DE,HL + INC DE + CALL MEMECK + LD M,B + INC HL + EXX + LD HL,1 + EXX +ADRCL': POP DE + LD A,(AUTDIM) + OR A + JR NZ,ADRC'' + PUSH HL ;1 + EX DE,HL + LD DE,10 + SCF + SBC HL,DE + JP NC,ER03 + POP HL ;1 +ADRC'': INC DE + LD M,E + INC HL + LD M,D + INC HL + PUSH DE + EXX + POP DE + CALL DIMMUL + EXX + DJNZ ADRCL' + LD E,C + LD D,0 + PUSH BC + PUSH DE + EXX + POP DE + CALL DIMMUL + PUSH HL + EXX + POP BC + PUSH BC ;2 A*B*C*D + EX DE,HL + LD HL,(TMPEND) ;(.,.,.)*2 + + LD L,M + LD H,0 + ADD HL,HL + LD A,(KEYBUF) ;+NAME + ADD A,5 ;+TY+LN+NL+(.,.) + ADD A,L + LD L,A + LD A,0 + ADC A,H + LD H,A + JR C,DIMOVM + ADD HL,BC + JR C,DIMOVM + PUSH HL ;3 LEN + ADD HL,DE ;+TEMPEND +DIMOVM: JP C,ER06' + EX DE,HL + CALL MEMECK + PUSH HL ;4 TMPEND + EXX + POP HL ;4 TMPEND + LD BC,(STRST) ;VAR END + DEC BC + OR A + SBC HL,BC + PUSH HL ;4 TRANS LEN + EXX + POP BC ;4 TRANS LEN + LDDR + POP DE ;3 LEN + SVC .ADDP2 + RST 3 + DEFB .ADDP2 + ENDM + POP BC ;2 CLR LEN + PUSH DE ;2 LEN + EXX + POP DE ;2 LEN + LD H,B + LD L,C + POP BC ;1 TYPE + LD A,C + OR 80H + LD M,A + INC HL + DEC DE + LD M,E + INC HL + LD M,D + INC HL + LD DE,KEYBUF + LD A,(DE) + INC A + LD B,A + CALL LDHLDE + LD DE,(TMPEND) + LD A,(DE) + LD M,A + INC HL + INC DE + + ADD A,A + LD B,A + CALL LDHLDE + PUSH HL + EXX + POP HL +DIMCLR: XOR A + LD M,A + INC HL + DEC BC + LD A,B + OR C + JR NZ,DIMCLR + LD M,A + EXX + POP DE + LD A,(AUTDIM) + OR A + JR Z,VARCUL + LD HL,(DGBF00) + RET +; +VARCUL: LD HL,(ARYTXT) + PUSH DE + JP ARRAY2 + SKP H + +; +DIM: ENT + LD A,FFH + LD (AUTDIM),A +NXTDIM: CALL VSRTST + LD A,M + CALL CH28H + CALL ARRAY0 + CALL HLFTCH + CP "," + RET NZ + INC HL + JR NXTDIM +; +DIMADD: ADD HL,DE + RET NC + JR SORDIM +; +DIMMUL: PUSH BC + EX DE,HL + LD C,L + LD A,H + LD HL,0 + CALL DMMULS + LD A,C + CALL DMMULS + POP BC + RET +; +DMMULS: OR A + JR Z,SKPMUL + LD B,8 +DMMULP: ADD HL,HL + JR C,SORDIM + RLCA + JR NC,DMMULE + ADD HL,DE + JR C,SORDIM +DMMULE: DJNZ DMMULP + RET +; +SKPMUL: LD A,H + LD H,L + LD L,0 + OR A + RET Z +SORDIM: JP ER06 +; +; +ARYTXT: DEFS 2 +AUTDIM: DEFS 1 + SKP H + +; +VARFN2: SUB "A" + CP 26 + JP NC,ER01 + LD BC,(FNVRBF) + LD A,B + OR C + JR NZ,FNGTVR + CALL GETVAR +FNGTV2: PUSH DE + PUSH HL + LD L,C + LD H,B + LD B,A + LD C,A + CALL LDDEHL + POP HL + LD A,C + POP DE + JP FACRX5 +; +FNGTVR: PUSH DE + CALL VSRTST + PUSH HL + INC B + LD DE,KEYBUF + LD HL,(TMPEND) + CALL STRENT + LD B,0 + LD HL,(FNVRBF) + CALL HLFTCH + CP F4H + JR Z,FNSHNO + CP "(" + JR NZ,SERROL ;¯¯JP NZ,ER01 +FNGTL1: INC HL + INC B + PUSH BC + CALL VSRTST + LD A,C + POP DE + CP E ;TYPE + LD C,E ;¯¯ + JR NZ,FNGTL2 + PUSH DE + LD C,B + INC C + PUSH HL + LD HL,(TMPEND) + LD DE,KEYBUF + CALL HLDECK + POP HL + POP BC + JR Z,FNSHOK +FNGTL2: CALL HLFTCH + CP ")" + JR Z,FNSHNO + CP "," + JR Z,FNGTL1 ;¯¯¯ +SERROL: JP ER01 ;¯¯ + +FNSHNO: LD HL,(TMPEND) + LD DE,KEYBUF + LD A,M + LD (DE),A + LD B,A + INC HL + INC DE + LD A,M + LD (DE),A + DJNZ -4 + POP HL + POP DE + CALL FNGTV1 + JR FNGTV2 +; +FNSHOK: LD HL,(FNTXBF) + CALL HCH28H + DEC B + JR Z,FNSH13 + DEC HL +FNSH11: PUSH BC +FNSH12: CALL IFSKSB + CALL ENDCHK + JP Z,ER01 + CP ")" + JP Z,ER01 + CP "," + JR NZ,FNSH12 + POP BC + DJNZ FNSH11 + INC HL +FNSH13: EX DE,HL + POP HL + EX (SP),HL + EX DE,HL + LD BC,(FNVRBF) + PUSH BC + LD BC,0 + LD (FNVRBF),BC + CALL EXPR8 + POP HL + LD (FNVRBF),HL + POP HL + JP HLFTCH +; +FNGTV1: PUSH DE + JP GETFNV + SKP H + +; +CHVRNM: ENT + LD HL,(VARST) +ASLOP: LD DE,KEYBUF + LD A,M + OR A + RET Z + CP 40H + JR NC,ARYATA + CP C + JR NZ,SKIPUS + INC HL + LD A,(DE) + CP M + JR NZ,SKIPU2 + LD B,A +VARCL1: INC DE + INC HL + LD A,(DE) ;ÛÛ + CP M ;ÛÛ +;CALL NZ,SMALCH + JR NZ,SKIPU3 + DJNZ VARCL1 + INC HL + SCF + RET +SKIPU3: INC HL + DJNZ SKIPU3 + LD A,C + JR ARSKFN +SKIPU2: LD A,C + DEC HL +SKIPUS: AND 0FH ;TYPE + INC HL + ADD A,M ;NAME LEN. + INC HL +ARSKFN: LD E,A + LD D,0 + ADD HL,DE + JR ASLOP +; +; +ARYATA: CP C ;TYPE + JR Z,ARMSN1 + INC HL +MIDNAM: LD E,M + INC HL + LD D,M + DEC HL + ADD HL,DE + JR ASLOP +; +NXTVR1: LD A,C + SUB B + CPL + LD C,A + LD B,FFH + ADD HL,BC + POP BC +NXTVR: DEC HL + + DEC HL + JR MIDNAM +; +; +ARMSN1: LD A,M + EXX + LD C,A + LD B,00H + EXX + INC HL + PUSH DE + LD E,M + INC HL + LD D,M + INC HL + EX DE,HL + ADD HL,DE +;LD (ARYEDA),HL + EX DE,HL + POP DE + LD A,(DE) + CP M ;NAME LEN. + JR NZ,NXTVR + PUSH BC + LD B,A + LD C,A +AYNMCK: INC HL + INC DE + LD A,(DE) ;ÛÛ + CP M ;ÛÛ + JR NZ,NXTVR1 + DJNZ AYNMCK + INC HL + POP BC + SCF + RET + SKP H + +; +DEFFN: ENT + CALL VSRTST + SET 6,C + PUSH HL + CALL CHVRNM + JP C,ER07 ;ARY DEF ERR + LD M,C + EX (SP),HL + PUSH HL + DEC HL +FNSKP1: CALL IFSKSB + OR A + JR Z,FNSKED + CP 3AH ;: + JR NZ,FNSKP1 +FNSKED: POP DE + PUSH HL + INC HL + SBC HL,DE + LD A,(KEYBUF) + ADD A,4 + LD C,A + LD B,0 + LD A,L + ADD HL,BC + LD B,A + PUSH HL + EXX + POP BC + PUSH BC + PUSH HL + PUSH DE + PUSH BC + LD HL,0 + ADD HL,SP + LD DE,(TMPEND) + DEC H + OR A + SBC HL,DE + LD A,12 + JP C,NESTER + POP BC + POP DE + POP HL + LD HL,(TMPEND) + PUSH HL + ADD HL,BC + EX (SP),HL + PUSH HL + LD DE,(STRST) ;VAR END + OR A + SBC HL,DE + LD C,L + LD B,H + POP HL + POP DE + LDDR + POP DE + SVC .ADDP2 + + RST 3 + DEFB .ADDP2 + ENDM + DEC DE + POP HL + EX (SP),HL + INC HL + LD M,E + INC HL + LD M,D + INC HL + LD DE,KEYBUF + LD A,(DE) + LD M,A + LD B,A + INC DE + INC HL + LD A,(DE) + LD M,A + DJNZ -4 + INC HL + PUSH HL + EXX + POP HL + CALL LDHLDE + LD M,0 + POP HL + RET +; +FNEXP: ENT + PUSH DE + CALL VSRTST + POP IX + PUSH BC + SET 6,C + LD DE,(FNTXBF) + LD (FNTXBF),HL + PUSH DE + CALL CHVRNM + JP NC,ER15 ;UNDEF FN + LD DE,(FNVRBF) + LD (FNVRBF),HL + PUSH DE + PUSH IX + DEC HL +FNEQSK: CALL IFSKSB + CALL ENDCHK + JP Z,ER01 + CP F4H ;= + JR NZ,FNEQSK + INC HL + POP DE + PUSH DE + CALL EXPR8 + POP DE + LD HL,(FNTXBF) + POP BC + LD (FNVRBF),BC + POP BC + LD (FNTXBF),BC + + EX DE,HL + POP BC + LD A,C + CALL STRCK + LD BC,5 + ADD HL,BC + EX DE,HL + CALL HLFTCH + CP "(" + RET NZ + PUSH DE + LD B,1 +SK29LP: PUSH BC + CALL IFSKSB + POP BC + CALL ENDCK0 + JP Z,ER01 + CP "(" + JR NZ,+3 + INC B + CP ")" + JR NZ,SK29LP + DJNZ SK29LP + INC HL + CALL HLFTCH + POP DE + RET +; +STRCK: CP 3 + JR NZ,STROMT +STROK: ENT + LD A,(PRCSON) + CP 3 + RET Z + JP ER04 ;TYPE MISMATCH +STROMT: ENT + LD A,(PRCSON) + CP 3 + RET NZ + JP ER04 +; +FNVRBF: ENT + DEFW 0 +FNTXBF: DEFS 2 + SKP H + +; +; +; +HLDECK: LD A,(DE) + CP M + RET NZ + PUSH BC + PUSH DE + PUSH HL + LD B,C +HLDEC1: LD A,(DE) + CP M + JR NZ,HLDEC2 + INC DE + INC HL + DJNZ HLDEC1 + XOR A +HLDEC2: POP HL + POP DE + POP BC + RET +; +; Joy stick command +; +STCK: ENT + CALL HCH28H + PUSH DE + CALL DEEXP + CALL DCHECK + CP 3 + JP NC,ER03 + POP DE + PUSH AF + CALL HCH29H + POP AF + SVC .STICK + RST 3 + DEFB .STICK + ENDM + EX DE,HL + PUSH DE + CALL PUT1B + JP EOF8 +; +STIG: ENT + CALL HCH28H + PUSH DE + CALL DEEXP + CALL DCHECK + CP 5 + JP NC,ER03 + POP DE + PUSH AF + CALL HCH29H + POP AF + SVC .STRIG + RST 3 + DEFB .STRIG + ENDM + EX DE,HL + + PUSH DE + CALL PUT1B + JP EOF8 +; + END diff --git a/software/asm/mz-xz009/FLOAT.ASM b/software/asm/mz-xz009/FLOAT.ASM new file mode 100644 index 0000000..1d6ab1f --- /dev/null +++ b/software/asm/mz-xz009/FLOAT.ASM @@ -0,0 +1,1945 @@ +; ---------------------------- +; MZ-800 BASIC Floating point +; FI:FLOAT ver 1.0A 7.18.84 +; Programed by T.Miho +; ---------------------------- +; + INCLD MACRO +; +; +CLRFAC: ENT + PUSH HL + LD B,5 + CALL ?CLRHL + POP HL + RET +; +NEG: ENT + CALL STROMT +TOGLE: ENT + LD A,M + OR A + RET Z + INC HL + LD A,M + XOR 80H + LD M,A + DEC HL + RET +; +; +;(HL)=(HL)-(DE) +; +SUB: ENT + CALL STROMT + LD C,A + LD A,80H + JP ADDSUB +; +;(HL)=(HL)+(DE) +; +ADD: ENT + LD A,(PRCSON) + CP 03H + JP Z,STRADD + LD C,A + XOR A +ADDSUB: LD (HLBUF),HL + PUSH DE + PUSH HL + LD (SPBUF),SP + INC HL + INC DE + LD B,M ; + XOR M + EX DE,HL + XOR M + DEC HL + DEC DE + EX DE,HL + RLCA + + LD A,B + LD (SIGN),A + JP C,FSUB ;HL-DE +; +FADD: XOR A ;HL+DE + CP M + JP Z,TRANS ;(HL)_(DE) + LD A,(DE) + OR A + JR Z,FLEXIT ;SIGN SET RET + SUB M ;DE-HL + JP SFADD +; +; +FLEXIT: LD SP,(SPBUF) + POP HL + POP DE + EI + LD A,M + OR A + JP Z,ABS + LD A,(SIGN) + AND 80H + INC HL + RES 7,M + OR M + LD M,A + DEC HL + RET +; +TRANS: LD B,0 + LD A,5 + LD C,A + EX DE,HL + LDIR + JP FLEXIT +; +STRADD: LD B,M + LD A,(DE) + ADD A,B + JP C,ER05 ;STRING TOO LONG + LD C,A + PUSH DE + PUSH HL + PUSH DE + INC HL + LD E,M + INC HL + LD D,M + LD HL,(STRST) + ADD HL,DE + EX DE,HL + LD HL,(TMPEND) + CALL STRENT + EX (SP),HL + LD B,M + INC HL + LD E,M + INC HL + LD D,M + + LD HL,(STRST) + ADD HL,DE + EX DE,HL + POP HL + CALL STRENT + LD A,C + LD DE,(TMPEND) + LD BC,(STRST) + EX DE,HL + OR A + SBC HL,BC + EX DE,HL + LD (TMPEND),HL + POP HL + LD M,A + INC HL + LD M,E + INC HL + LD M,D + DEC HL + DEC HL + POP DE + RET +; +; +CMP: ENT + LD A,(PRCSON) + CP 3 + JR NZ,FLTCP2 + PUSH DE + PUSH HL + LD A,(DE) + OR M + JR Z,STCMPE + LD A,(DE) + CP M + JR C,+3 + LD A,M + OR A + JR Z,STCMPF + INC HL + LD C,M + INC HL + LD B,M + EX DE,HL + INC HL + LD E,M + INC HL + LD D,M + LD HL,(STRST) + EX DE,HL + ADD HL,DE + EX DE,HL + ADD HL,BC + EX DE,HL + LD B,A + OR A + JR Z,STCMPE +STCMPL: LD A,(DE) + CP M + + JR NZ,STCMPE + INC DE + INC HL + DJNZ STCMPL +STCMPF: POP DE + POP HL + LD A,(DE) + CP M + EX DE,HL + RET +; +STCMPE: POP HL + POP DE + RET +; +; +; +FLTCP2: INC DE + INC HL + LD A,(DE) + DEC DE + XOR M + RLCA + JR NC,FLTCP3 + LD A,M + DEC HL + RLCA + RET +FLTCP3: LD A,M + DEC HL + RLCA + JR NC,FLTCMP + CALL FLTCMP + RET Z + CCF + RET +; +FLTCMP: PUSH DE + PUSH HL + EX DE,HL + LD A,(DE) + CP M + JR NZ,SUBNZ + INC DE + INC HL + LD A,M + OR 80H + LD B,A + LD A,(DE) + OR 80H + CP B + JR NZ,SUBNZ + LD A,(PRCSON) + LD B,A + DEC B + DEC B +CMPL: INC DE + INC HL + LD A,(DE) + CP M + + JR NZ,SUBNZ + DJNZ CMPL +SUBNZ: POP HL + POP DE + RET +; +ZERO: POP HL + PUSH HL + CALL CLRFAC + JP FLEXIT +; +FSUB: CALL FLTCMP + JR Z,ZERO + JR NC,SUBOK + LD A,(SIGN) + XOR 80H + LD (SIGN),A + SCF +SUBOK: EX AF,AF' + LD A,M + OR A + JP Z,TRANS + LD A,(DE) + OR A + JP Z,FLEXIT + SUB M + JR C,FSUB11 + CP 32 + JP NC,TRANS + JR SUBOK2 +FSUB11: NEG + CP 32 + JP NC,FLEXIT +SUBOK2: EX AF,AF' + JR C,SUBOK' + EX DE,HL +SUBOK': EX AF,AF' + JP SSUB +; +OVERF: LD SP,(SPBUF) + EI + POP HL + POP DE + LD A,(OFLAG) + OR A + JP Z,ER02 +;SET MAX NUM HERE ***** + RET +; +; +; +; +SFADD: JR NC,SNSH + NEG + CP 32 + JP NC,FLEXIT + EX DE,HL + JR SADD1 +SNSH: CP 32 + JP NC,TRANS + +SADD1: CALL SSHIFT + LD A,H + EXX + ADC A,H ; ADJUST WITH CARRY + EXX + LD H,A ; + LD A,L + EXX + ADC A,L + EXX + LD L,A + LD A,D + EXX + ADC A,D + EXX + LD D,A + LD A,E + EXX + ADC A,E + EXX + JR NC,SSTORE + RRA + RR D + RR L + RR H + INC C + JP Z,OVERF +SSTORE: LD E,A + LD A,C + EXX + LD BC,5 + LD HL,(HLBUF) + LD M,A + ADD HL,BC + DI + LD SP,HL + EXX + PUSH HL + PUSH DE + JP FLEXIT +; +SSHIFT: DI + LD (SPBF),SP + EX AF,AF' + INC HL + LD SP,HL + EXX + POP DE ;E,D,L,H + SET 7,E ;CY=0 + POP HL + OR A +SHFLP2: EX AF,AF' + CP 8 + JR C,BITET2 + SUB 8 + EX AF,AF' + RL H + LD H,L + LD L,D + LD D,E + + LD E,0 + JR SHFLP2 +BITET2: OR A + JR Z,BITSE2 +BITST2: EX AF,AF' + OR A + RR E + RR D + RR L + RR H + EX AF,AF' + DEC A + JR NZ,BITST2 +BITSE2: EXX + EX DE,HL + LD C,M + INC HL + LD SP,HL + POP DE + SET 7,E + POP HL + EX AF,AF' + LD SP,(SPBF) + EI + RET +; +SSUB: CP 32 + JP NC,FLEXIT + CALL SSHIFT + LD A,H + EXX + SBC A,H + EXX + LD H,A + LD A,L + EXX + SBC A,L + EXX + LD L,A + LD A,D + EXX + SBC A,D + EXX + LD D,A + LD A,E + EXX + SBC A,E + EXX +SSFL2: OR A + JR Z,BSIFT +SSFL3: BIT 7,A + JR NZ,SSTOR2 + RL H + RL L + RL D + RLA + DEC C + JP NZ,SSFL3 + JP ZERO +SSTOR2: LD E,A + + JP SSTORE +BSIFT: LD A,C + SUB 8 + LD C,A + LD A,D + LD D,L + LD L,H + LD H,0 + JR Z,+4 + JR NC,SSFL2 + JP ZERO +; +;--------------------- +; +EXPCHK: LD C,A + INC HL + INC DE + LD A,(DE) + XOR M + LD (SIGN),A + DEC HL + DEC DE + RET +; +MUL: ENT + CALL STROMT + CALL EXPCHK + PUSH DE + PUSH HL + LD (SPBUF),SP + LD A,M + OR A + JP Z,ZERO + LD A,(DE) + OR A + JP Z,ZERO + INC DE + PUSH DE + POP IX + ADD A,M + LD E,A + LD A,0 + ADC A,A + LD D,A + LD (EXPSGN),DE + INC HL + XOR A + LD (CYFLG),A + LD D,M + SET 7,D + INC HL + LD E,M + INC HL + PUSH HL + LD H,A + LD L,A + EXX + POP HL + LD D,M + INC HL + + LD E,M + LD B,A + LD C,A + LD H,A + LD L,A + EXX + LD A,(IX+0) + OR 80H + LD C,4 ;BYTES COUNTER +SMULL1: LD B,8 ;BIT COUNTER + OR A + JP Z,SMULL5 +SMULL2: RLCA + JR NC,SMULL4 + EX AF,AF' + EXX + LD A,C + ADD A,B + LD C,A + ADC HL,DE + EXX + ADC HL,DE + JR NC,SMULL3 + LD A,1 + LD (CYFLG),A +SMULL3: EX AF,AF' +SMULL4: SRL D + RR E + EXX + RR D + RR E + RR B + EXX + DJNZ SMULL2 +SMULL6: INC IX + LD A,(IX+0) + DEC C + JR NZ,SMULL1 + EXX + LD A,(CYFLG) + OR A + JR Z,SMULL7 + LD DE,(EXPSGN) + INC DE + LD (EXPSGN),DE + EXX + SCF + RR H + RR L + EXX + RR H + RR L + RR C +SMULL7: BIT 7,C + JR Z,SMULL8 + LD DE,1 + ADD HL,DE + EXX + LD DE,0 + ADC HL,DE + + EXX + JR NC,SMULL8 + LD DE,(EXPSGN) + INC DE + LD (EXPSGN),DE + EXX + LD H,80H + EXX +SMULL8: POP IX + PUSH IX + LD (IX+4),L + LD (IX+3),H + EXX + LD (IX+2),L + LD (IX+1),H + LD HL,(EXPSGN) + OR A + LD DE,81H + SBC HL,DE + LD A,H + ADD A,0 + JP M,UNDRFL + JP NZ,OVERF + LD (IX+0),L + JP FLEXIT +; +SMULL5: LD A,E + EXX + LD B,E + LD E,D + LD D,A + EXX + LD E,D + LD D,0 + JP SMULL6 +; +; +UNDRFL: LD SP,(SPBUF) ;**** + JP ZERO +; +DIV: ENT + CALL STROMT + CALL EXPCHK + PUSH DE + PUSH HL + LD (SPBUF),SP + LD A,(DE) + OR A + JP Z,ER02 ;DIVID BY ZERO + EX AF,AF' + LD A,M + OR A + JP Z,ZERO + EXX + ADD A,81H + LD B,A + LD A,0 + ADC A,A + EX AF,AF' + LD C,A + + LD A,B + SUB C + LD C,A + EX AF,AF' + LD B,A + EX AF,AF' + LD A,B + SBC A,0 + JP C,UNDRFL + JP NZ,OVERF + LD A,C + PUSH AF ;PUSH A(EXP) + EXX + INC DE + INC HL + LD B,M + SET 7,B + INC HL + LD C,M + INC HL + PUSH HL + EX DE,HL + LD D,M + SET 7,D + INC HL + LD E,M + INC HL + PUSH HL + LD H,B + LD L,C + EXX + POP HL + LD D,M + INC HL + LD E,M + POP HL + LD A,M + INC HL + LD L,M + LD H,A + EXX ;HLH'L'/DED'E' + LD C,5 ;C=5 +SDIVL1: LD B,8 ;B=8 + XOR A +SDIVL2: BIT 7,H + JR NZ,SDIVL3 + OR A +SDIVL4: RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + DJNZ SDIVL2 + PUSH AF + DEC C + JR NZ,SDIVL1 + JP SDIVED +; +SDIVL3: OR A + EXX + + SBC HL,DE + EXX + SBC HL,DE + CCF + JR C,SDIVL4 + EXX + ADD HL,DE + EXX + ADC HL,DE + OR A + RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + DJNZ SDIVL5 + PUSH AF + LD B,8 + DEC C + JP Z,SDIVED +SDIVL5: EXX + OR A + SBC HL,DE + EXX + SBC HL,DE + SCF + RLA + DJNZ SDIVL6 + PUSH AF + LD B,8 + DEC C + JR Z,SDIVED +SDIVL6: EXX + ADD HL,HL + EXX + ADC HL,HL + JR C,SDIVL5 + JP SDIVL2 +; +SDIVED: POP AF + LD H,A ;H' + EXX + POP AF + LD E,A ;E + POP AF + LD D,A ;D + POP AF + LD C,A ;C + POP AF + LD B,A ;B + POP AF ;A(EXP) +SDIVL9: BIT 7,B + JR NZ,SDIVE2 + EXX + SLA H + EXX + RL E + RL D + RL C + RL B + + DEC A + JP NZ,SDIVL9 + JP ZERO +SDIVE2: EXX + RL H + EXX + JR NC,SDIVL8 + LD HL,1 + ADD HL,DE + EX DE,HL + LD HL,0 + ADC HL,BC + LD B,H + LD C,L + JR NC,SDIVL8 + LD B,80H + INC A +SDIVL8: POP HL + PUSH HL + LD M,A + INC HL + LD M,B + INC HL + LD M,C + INC HL + LD M,D + INC HL + LD M,E + JP FLEXIT +; +HLBUF: DEFS 2 +SIGN: DEFS 1 +SPBUF: DEFS 2 +SPBF: DEFS 2 +CYFLG: DEFS 1 +EXPSGN: DEFS 2 +OFLAG: DEFS 1 +; + SKP H + +; +TSTSGN: INC HL + BIT 7,M + DEC HL + RET +; +MULTWO: INC M + RET NZ + JP ER02 +; +DIVTWO: LD A,M + OR A + RET Z + DEC M + RET NZ + JP CLRFAC +; +ADDHL5: PUSH HL + INC HL + INC HL + INC HL + INC HL + INC HL + EX DE,HL + LD HL,(MEMMAX) + DEC HL + SBC HL,DE + JP C,ER06 + POP HL + RET +; +FACSET: PUSH HL + LD (SNFAC0),HL + CALL ADDHL5 + EX DE,HL + LD (SNFAC1),HL + CALL ADDHL5 + EX DE,HL + LD (SNFAC2),HL + CALL ADDHL5 + LD (SNFAC3),DE + POP HL + RET +; +; +POWERS: ENT ;(HL)^(DE) + CALL STROMT + EX DE,HL + LD A,M + OR A + JP Z,POWR1 + EX DE,HL + LD A,M + OR A + JP Z,CLRFAC + CALL TSTSGN + JR Z,POWER1 + CALL TOGLE + EX DE,HL + PUSH DE + + PUSH HL + LD DE,ZFAC1 + CALL LDIR5 ;(ZFAC1)=(DE) + LD HL,ZFAC1 + CALL FRACT + LD A,M + OR A + JP NZ,ER03 + POP HL + PUSH HL + CALL HLFLT + BIT 0,L + POP DE + POP HL + JR Z,POWER1 + CALL POWER1 + JP TOGLE +; +POWER1: EX DE,HL + LD A,M + OR A + JR Z,POWR1 + CALL TSTSGN + JR Z,POWER2 + CALL TOGLE + CALL POWER2 + PUSH DE + PUSH HL + LD DE,ZFAC1 + CALL LDIR1 ;(ZFAC1)=1 + LD HL,ZFAC1 + POP DE + CALL DIV ;(ZFAC1)/(HL) + PUSH DE + CALL LDIR5 ;(HL)=(ZFAC1) + POP HL + POP DE + RET +; +POWR1: PUSH DE + CALL LDIR1 + POP HL + RET +; +POWER2: PUSH DE + LD DE,ZFAC1 + CALL LDIR5 ;(ZFAC1)=(DE) + POP HL + CALL LOG ;LOG(HL) + LD DE,ZFAC1 + CALL MUL ;(HL)*(DE) + JP EXP ;EXP(HL) + SKP H + +; +.NOT.: ENT + CALL STROMT + PUSH DE + PUSH HL + CALL HLFLT + LD A,L + CPL + LD E,A + LD A,H + CPL + LD D,A + JR AND9 +; +.AND.: ENT + LD A,A2H ;AND D + DEFB 1 +.OR.: ENT + LD A,B2H ;OR D + DEFB 1 +.XOR.: ENT + LD A,AAH ;XOR D +; + LD (AND2),A + INC A + LD (AND4),A + CALL STROMT + PUSH DE + PUSH HL + CALL HLFLT + EX DE,HL + CALL HLFLT + LD A,H +AND2: AND D ;AND, OR, XOR + LD D,A + LD A,L +AND4: AND E ;AND, OR, XOR + LD E,A +AND9: POP HL + CALL FLTHEX + POP DE + RET + SKP H + +; +ABS: ENT + INC HL + RES 7,M + DEC HL + RET +; +INTOPR: ENT + CALL TSTSGN + JP Z,INT + CALL MVFAC1 + CALL INT + LD DE,ZFAC1 + CALL CMP + RET Z +ONESUB: LD DE,FLONE + JP SUB +; +ONEADD: LD DE,FLONE + JP ADD +; +ONECMP: LD DE,FLONE + JP CMP +; +MVFAC1: PUSH HL + PUSH DE + LD DE,ZFAC1 + CALL LDIR5 + POP DE + POP HL + RET +; +; +MOD: ENT + CALL INT + EX DE,HL + CALL INT + EX DE,HL + CALL MVFAC1 + CALL DIV + CALL INT + CALL MUL + PUSH DE + LD DE,ZFAC1 + CALL SUB + POP DE + JP TOGLE +; +; +YEN: ENT + CALL INT + EX DE,HL + CALL INT + EX DE,HL + CALL DIV + JP INT +; +; +SQR: ENT + LD A,M + + OR A + RET Z + CALL TSTSGN + JP NZ,ER03 + CALL LOG + CALL DIVTWO + JP EXP +; +RETONE: PUSH HL + EX DE,HL + CALL LDIR1 + POP HL + POP BC + RET +; +ATNLM1: DEFB 7EH + DEFB 4CH +; +ATNLM2: DEFB 80H + DEFB 2BH +; +ATN: ENT + PUSH BC + INC HL + LD A,M + RES 7,M + DEC HL + PUSH AF + CALL ATN'' + POP AF + POP BC + RLCA + RET NC + JP TOGLE +; +ATN'': CALL ONECMP + JR C,ATN' + CALL ADDHL5 + PUSH DE + PUSH HL + CALL LDIR5 + POP DE + PUSH DE + CALL LDIR1 + POP HL + POP DE + CALL DIV + CALL ATN' + LD DE,FLTHPI ;PI/2 + CALL SUB + JP ABS +; +ATN': LD A,FFH + LD (SINSGN),A + LD DE,ATNLM1 + CALL CMP + JR C,ATNCUL + LD DE,ATNLM2 + CALL CMP + PUSH AF + + CALL ADDHL5 + POP AF + PUSH HL + PUSH DE + CALL LDIR5 + POP HL + JR C,ATNMID + CALL ONEADD + EX (SP),HL + CALL SUB + POP DE + CALL DIV + CALL ATNCUL + LD DE,FLTQPI ;PI/4 + JP ADD +; +ATNMID: LD DE,SQRTMO + CALL MUL + CALL ONEADD + EX (SP),HL + LD DE,SQRTMO + CALL SUB + POP DE + CALL DIV + CALL ATNCUL + CALL MULTWO + LD DE,FLTQPI ;PI/4 + CALL ADD + JP DIVTWO +; +SQRTMO: DEF5 7F,54,13,CC,D0 + DEFW 547FH + DEFW CC13H + DEFB D0H + ENDM +; +ATNCUL: PUSH BC + PUSH HL + CALL FACSET + POP HL + PUSH HL + PUSH DE + CALL LDIR5 + POP HL + LD E,L + LD D,H + CALL MUL + LD DE,(SNFAC2) + POP HL + PUSH HL + CALL LDIR5 + LD A,(PRCSON) + DEC A + CP 04H + LD B,A + LD HL,TANTBL + JP Z,SIN6 + LD B,10 + JP SIN6 +; + +COS: ENT + PUSH BC + LD A,M + OR A + JP Z,RETONE + LD DE,FLTHPI ;PI/2 + CALL SUB + CALL TOGLE + POP BC +; +SIN: ENT + PUSH BC + INC HL + LD A,M + RES 7,M + AND 80H + CPL + LD (SINSGN),A + DEC HL + LD DE,FLT2PI ;PI*2 + PUSH HL + CALL CMP + JR C,SIN1 + CALL DIV + CALL FRACT + CALL MUL +SIN1: LD DE,FLTPAI + CALL CMP + JR C,SIN2 + CALL SUB + LD A,(SINSGN) + XOR 80H + LD (SINSGN),A +SIN2: LD DE,FLTHPI ;PI/2 + CALL CMP + JR C,SIN4 + LD DE,FLTPAI + CALL SUB + CALL ABS +SIN4: CALL FACSET + POP HL + PUSH DE + LD DE,FLTQPI ;PI/4 + CALL CMP + JR NC,COSCUL + POP DE + PUSH HL + PUSH DE + CALL LDIR5 + POP HL + LD E,L + LD D,H + CALL MUL + LD DE,(SNFAC2) + POP HL + PUSH HL + CALL LDIR5 + LD A,(PRCSON) + LD B,A + LD HL,SINTBL + +SIN6: PUSH BC + PUSH HL + LD HL,(SNFAC2) + LD DE,(SNFAC3) + CALL MUL + POP HL + PUSH HL + LD DE,(SNFAC1) + PUSH DE + CALL LDIR5 + POP HL + LD DE,(SNFAC2) + CALL MUL + EX DE,HL + LD HL,(SNFAC0) + CALL ADD + POP HL + LD DE,5 + ADD HL,DE + POP BC + DJNZ SIN6 + POP HL + POP BC + LD A,(SINSGN) + INC HL + XOR M + CPL + LD M,A + DEC HL + LD A,(PRCSON) + CP 08H + LD A,M + JR Z,SIN9 + CP 5CH ; ADJUST +SIN8: RET NC + JP CLRFAC +; +SIN9: CP 4DH ; ADJUST + JR SIN8 +; +COSCUL: LD DE,FLTHPI ;PI/2 + CALL SUB + CALL ABS + POP DE + PUSH HL + PUSH DE + CALL LDIR5 + POP HL + LD E,L + LD D,H + CALL MUL + LD DE,(SNFAC2) + CALL LDIR1 + POP DE + PUSH DE + CALL LDIR1 + LD A,(PRCSON) + LD B,A + LD HL,COSTBL + JR SIN6 + +; +SINSGN: DEFS 1 +; +; +TAN: ENT + PUSH BC + PUSH HL + CALL ADDHL5 + EX DE,HL + LD (SNFAC4),HL + CALL ADDHL5 + LD (SNFAC5),DE + POP HL + PUSH HL + CALL LDIR5 + LD HL,(SNFAC4) + EX DE,HL + POP HL + PUSH HL + CALL LDIR5 + LD HL,(SNFAC5) + CALL SIN + POP DE + PUSH DE + CALL LDIR5 + LD HL,(SNFAC4) + CALL COS + EX DE,HL + POP HL + CALL DIV + POP BC + RET +; +SINTBL: DEF5 7E,AA,AA,AA,AB + DEFW AA7EH + DEFW AAAAH + DEFB ABH + ENDM + DEF5 7A,08,88,88,89 + DEFW 087AH + DEFW 8888H + DEFB 89H + ENDM + DEF5 74,D0,0D,00,D0 + DEFW D074H + DEFW 000DH + DEFB D0H + ENDM + DEF5 6E,38,EF,1D,2B + DEFW 386EH + DEFW 1DEFH + DEFB 2BH + ENDM + DEF5 67,D7,32,2B,40 + DEFW D767H + DEFW 2B32H + DEFB 40H + ENDM + DEF5 60,30,92,30,9D + DEFW 3060H + + DEFW 3092H + DEFB 9DH + ENDM + DEF5 58,D7,3F,9F,3A + DEFW D758H + DEFW 9F3FH + DEFB 3AH + ENDM + DEF5 50,4A,96,3B,82 + DEFW 4A50H + DEFW 3B96H + DEFB 82H + ENDM +; +COSTBL: DEF5 80,80,00,00,00 + DEFW 8080H + DEFW 0000H + DEFB 00H + ENDM + DEF5 7C,2A,AA,AA,AB + DEFW 2A7CH + DEFW AAAAH + DEFB ABH + ENDM + DEF5 77,B6,0B,60,B6 + DEFW B677H + DEFW 600BH + DEFB B6H + ENDM + DEF5 71,50,0D,00,D0 + DEFW 5071H + DEFW 000DH + DEFB D0H + ENDM + DEF5 6B,93,F2,7D,BC + DEFW 936BH + DEFW 7DF2H + DEFB BCH + ENDM + DEF5 64,0F,76,C7,80 + DEFW 0F64H + DEFW C776H + DEFB 80H + ENDM + DEF5 5C,C9,CB,A5,46 + DEFW C95CH + DEFW A5CBH + DEFB 46H + ENDM + DEF5 54,57,3F,9F,3A + DEFW 5754H + DEFW 9F3FH + DEFB 3AH + ENDM +; +TANTBL: DEF5 7F,AA,AA,AA,AB + DEFW AA7FH + DEFW AAAAH + DEFB ABH + ENDM + + DEF5 7E,4C,CC,CC,CD + DEFW 4C7EH + DEFW CCCCH + DEFB CDH + ENDM + DEF5 7E,92,49,24,92 + DEFW 927EH + DEFW 2449H + DEFB 92H + ENDM + DEF5 7D,63,8E,38,E4 + DEFW 637DH + DEFW 388EH + DEFB E4H + ENDM + DEF5 7D,BA,2E,8B,A3 + DEFW BA7DH + DEFW 8B2EH + DEFB A3H + ENDM + DEF5 7D,1D,89,D8,9E + DEFW 1D7DH + DEFW D889H + DEFB 9EH + ENDM + DEF5 7D,88,88,88,89 + DEFW 887DH + DEFW 8888H + DEFB 89H + ENDM + DEF5 7C,70,F0,F0,F1 + DEFW 707CH + DEFW F0F0H + DEFB F1H + ENDM + DEF5 7C,D7,94,35,E5 + DEFW D77CH + DEFW 3594H + DEFB E5H + ENDM + DEF5 7C,43,0C,30,C3 + DEFW 437CH + DEFW 300CH + DEFB C3H + ENDM +; +; +SGN: ENT + LD DE,0 + LD A,M + OR A + JR Z,SGNSET + CALL TSTSGN + INC DE + JR Z,SGNSET + DEC DE + DEC DE +SGNSET: CALL FLTHEX + RET +; + +; +RAD: ENT + LD DE,FLTRAD + JR +5 +PAI: ENT + LD DE,FLTPAI + PUSH BC + CALL MUL + POP BC + RET +; +FLT2PI: ENT + DEF5 83,49,0F,DA,A2 ;PI*2 + DEFW 4983H + DEFW DA0FH + DEFB A2H + ENDM +FLTPAI: ENT + DEF5 82,49,0F,DA,A2 ;PI + DEFW 4982H + DEFW DA0FH + DEFB A2H + ENDM +FLTHPI: DEF5 81,49,0F,DA,A2 ;PI/2 + DEFW 4981H + DEFW DA0FH + DEFB A2H + ENDM +FLTQPI: DEF5 80,49,0F,DA,A2 ;PI/4 + DEFW 4980H + DEFW DA0FH + DEFB A2H + ENDM +; +FLTRAD: DEF5 7B,0E,FA,35,13 + DEFW 0E7BH + DEFW 35FAH + DEFB 13H + ENDM +; +; +PEEK: ENT + PUSH HL + CALL HLFLT + LD E,(HL) + LD D,0 + POP HL + CALL FLTHEX + RET +; +; +RND: ENT + LD A,M + OR A + JR Z,RNDMIZ + CALL TSTSGN + JR Z,NORRND +RNDMIZ: PUSH HL + LD HL,4193H + LD (SEED),HL + + POP HL + XOR A + LD R,A +NORRND: PUSH BC + LD DE,(SEED) + LD A,R + XOR D + RRC A + RRC A + RRC A + LD D,A + LD A,R + XOR E + RLC A + RLC A + LD E,D + LD D,A + LD (SEED),DE + PUSH HL + INC HL + RES 7,D + LD M,D + INC HL + LD M,E + INC HL + LD A,R + LD M,A + POP HL + LD M,81H + CALL ONESUB + POP BC + RET +SEED: DEFW 4193H +; +EXP: ENT + PUSH BC + LD A,M + OR A + JP Z,RETONE + INC HL + LD A,M + LD (EXPSIN),A + RES 7,M + DEC HL + LD DE,LNTWO' + CALL MUL + PUSH HL + CALL ADDHL5 + PUSH DE + CALL LDIR5 + POP HL + CALL INT + PUSH HL + CALL HLFLT + XOR A + CP H + JP NZ,ER02 + LD A,L + LD (EXPOFF),A + POP DE + + POP HL + PUSH HL + CALL SUB + PUSH DE + PUSH HL + CALL LDIR1 + POP DE + POP HL + CALL DIVTWO + EX DE,HL + XOR A + LD B,8 +EXPLP1: PUSH BC + PUSH AF + CALL CMP + JR C,EXPNL1 + CALL SUB + POP AF + SET 7,A + PUSH AF +EXPNL1: POP AF + RLC A + EX DE,HL + PUSH AF + CALL DIVTWO + POP AF + EX DE,HL + POP BC + DJNZ EXPLP1 + LD (EXPHBT),A + PUSH DE + LD DE,LNTWO + LD A,(PRCSON) + BIT 3,A + JR NZ,+5 + LD DE,LNTWOF + CALL MUL + POP DE + PUSH DE + CALL LDIR5 + POP HL + LD A,(PRCSON) + BIT 3,A + JP Z,EXPSKP + CALL MULTWO + LD DE,FLTEN + CALL ADD + CALL DIVTWO + POP DE + PUSH DE + CALL MUL + LD DE,FLTEN + CALL DIVTWO + CALL ADD + CALL MULTWO + POP DE + PUSH DE + CALL MUL + LD DE,FLT120 + CALL MUL + + CALL MULTWO + CALL ONEADD + CALL DIVTWO + POP DE + PUSH DE + CALL MUL + CALL ONEADD + POP DE + PUSH DE + CALL MUL +EXPSK': CALL ONEADD + EX (SP),HL + EX DE,HL + PUSH DE + CALL LDIR1 + POP HL + LD DE,EXDTBL + LD A,(EXPHBT) + LD B,8 +EXPCLP: RLC A + JR NC,SKPEXP + PUSH AF + PUSH BC + CALL MUL + POP BC + POP AF +SKPEXP: REP5 INC,DE + INC DE + INC DE + INC DE + INC DE + INC DE + ENDM + DJNZ EXPCLP + LD A,(EXPOFF) + ADD A,M + JP C,ER02 + LD M,A + POP DE + CALL MUL + POP BC + LD A,(EXPSIN) + RLC A + RET NC + PUSH BC + PUSH DE + PUSH HL + CALL LDIR5 + POP DE + PUSH DE + CALL LDIR1 + POP HL + POP DE + CALL DIV + POP BC + RET +; +EXPSKP: POP DE + PUSH DE + CALL MUL + + LD A,M + OR A + CALL NZ,DIVTWO + CALL ADD + JP EXPSK' +; +EXPOFF: DEFS 1 +EXPSIN: DEFS 1 +EXPHBT: DEFS 1 +; +LOGD: ENT + PUSH BC + CALL LOG + LD DE,LOGE10 + CALL MUL + POP BC + RET +; +LOG: ENT ;LN(HL) + PUSH BC + CALL TSTSGN + JP NZ,ER03 + LD A,M + OR A + JP Z,ER03 + SUB 81H + LD (LOGEXP),A + LD M,81H + XOR A + LD B,8 + LD DE,EXDTBL +LOGCLL: PUSH BC + PUSH AF + CALL CMP + JR C,LOGNCL + PUSH HL + LD HL,40 + ADD HL,DE + EX DE,HL + EX (SP),HL + CALL MUL + POP DE + POP AF + SET 7,A + PUSH AF +LOGNCL: POP AF + RLC A + REP5 INC,DE + INC DE + INC DE + INC DE + INC DE + INC DE + ENDM + POP BC + DJNZ LOGCLL + LD (SNFAC0),HL + CALL ADDHL5 + EX DE,HL + LD E,A + + LD D,0 + CALL FLTHEX + LD A,M + OR A + JR Z,NOTDCR + SUB 08H + LD M,A +NOTDCR: LD A,(LOGEXP) + CP 80H + JR C,+4 + NEG + PUSH HL + CALL ADDHL5 + EX DE,HL + LD (SNFAC1),HL + LD E,A + LD D,0 + CALL FLTHEX + LD A,(LOGEXP) + AND 80H + INC HL + OR M + LD M,A + DEC HL + EX DE,HL + POP HL + CALL ADD + LD A,(PRCSON) + LD DE,LNTWO! + CP 05H + JR Z,+5 + LD DE,LNTWO + CALL MUL + PUSH HL + LD DE,(SNFAC1) + LD HL,(SNFAC0) + PUSH HL + PUSH DE + CALL LDIR5 + POP HL + CALL ONEADD + EX (SP),HL + CALL SUB + POP DE + CALL DIV + PUSH DE + CALL LDIR5 + POP HL + PUSH DE + LD E,L + LD D,H + CALL MUL + POP DE + PUSH HL + PUSH DE + CALL LDIR5 + POP HL + LD DE,LOGDAT + CALL ADD + EX DE,HL + + POP HL + CALL MUL + LD DE,FLTEN + CALL MULTWO + CALL ADD + CALL DIVTWO + EX DE,HL + LD HL,(SNFAC0) + CALL MUL + LD DE,FLTHR' + CALL MUL + POP DE + CALL ADD + POP BC + RET +; +LOGEXP: DEFS 1 +; +; +LOGE10: DEF5 7F,5E,5B,D8,A9 + DEFW 5E7FH + DEFW D85BH + DEFB A9H + ENDM +; +; +FLTHR': DEF5 7F,4C,CC,CC,CD + DEFW 4C7FH + DEFW CCCCH + DEFB CDH + ENDM +; +LOGDAT: DEF5 81,55,55,55,56 + DEFW 5581H + DEFW 5555H + DEFB 56H + ENDM +; +EXDTBL: DEF5 81,35,04,F3,34 ;2^(1/2) + DEFW 3581H + DEFW F304H + DEFB 34H + ENDM + DEF5 81,18,37,F0,52 ;2^(1/4) + DEFW 1881H + DEFW F037H + DEFB 52H + ENDM + DEF5 81,0B,95,C1,E4 ;2^(1/8) + DEFW 0B81H + DEFW C195H + DEFB E4H + ENDM + DEF5 81,05,AA,C3,68 ;2^(1/16) + DEFW 0581H + DEFW C3AAH + DEFB 68H + ENDM + DEF5 81,02,CD,86,99 ;2^(1/32) + DEFW 0281H + + DEFW 86CDH + DEFB 99H + ENDM + DEF5 81,01,64,D1,F4 ;2^(1/64) + DEFW 0181H + DEFW D164H + DEFB F4H + ENDM + DEF5 81,00,B1,ED,50 ;2^(1/128) + DEFW 0081H + DEFW EDB1H + DEFB 50H + ENDM + DEF5 81,00,58,D7,D3 ;2^(1/256) + DEFW 0081H + DEFW D758H + DEFB D3H + ENDM + DEF5 80,35,04,F3,34 + DEFW 3580H + DEFW F304H + DEFB 34H + ENDM + DEF5 80,57,44,FC,CB + DEFW 5780H + DEFW FC44H + DEFB CBH + ENDM + DEF5 80,6A,C0,C6,E8 + DEFW 6A80H + DEFW C6C0H + DEFB E8H + ENDM + DEF5 80,75,25,7D,16 + DEFW 7580H + DEFW 7D25H + DEFB 16H + ENDM + DEF5 80,7A,83,B2,DC + DEFW 7A80H + DEFW B283H + DEFB DCH + ENDM + DEF5 80,7D,3E,0C,0D + DEFW 7D80H + DEFW 0C3EH + DEFB 0DH + ENDM + DEF5 80,7E,9E,11,5D + DEFW 7E80H + DEFW 119EH + DEFB 5DH + ENDM + DEF5 80,7F,4E,CB,5A + DEFW 7F80H + DEFW CB4EH + DEFB 5AH + ENDM +; +FLT120: DEF5 7A,08,88,88,89 + + DEFW 087AH + DEFW 8888H + DEFB 89H + ENDM +; +LNTWO: DEF5 80,31,72,17,F8 + DEFW 3180H + DEFW 1772H + DEFB F8H + ENDM +; +LNTWOF: DEF5 80,31,72,17,F8 + DEFW 3180H + DEFW 1772H + DEFB F8H + ENDM +; +LNTWO': DEF5 81,38,AA,3B,2A ;1/LN(2) + DEFW 3881H + DEFW 3BAAH + DEFB 2AH + ENDM +; +LNTWO!: DEF5 80,31,72,17,F8 ; * + DEFW 3180H + DEFW 1772H + DEFB F8H + ENDM +; +; +SNFAC0: DEFS 2 +SNFAC1: DEFS 2 +SNFAC2: DEFS 2 +SNFAC3: DEFS 2 +SNFAC4: DEFS 2 +SNFAC5: DEFS 2 +; + END diff --git a/software/asm/mz-xz009/GRPH.ASM b/software/asm/mz-xz009/GRPH.ASM new file mode 100644 index 0000000..fbc20d1 --- /dev/null +++ b/software/asm/mz-xz009/GRPH.ASM @@ -0,0 +1,716 @@ +; ----------------------------- +; MZ-800 BASIC Graphic command +; FI:GRPH ver 1.0B 9.21.84 +; Programed by T.Miho +; ----------------------------- +; + INCLD MACRO +; +BITFU2: DEFB 0 ;Default W0/W1 +COL: ENT ;Color code + DEFB 03H +; +;;;;;;;;;;;;;;; +; +; SET/RESET [c,w]x,y +; +SET: ENT + DEFB F6H +RESET: ENT + XOR A + PUSH AF + CALL COORD0 + SVC .POSSV + RST 3 + DEFB .POSSV + ENDM + POP AF ;SET/RESET + PUSH HL + EXX + SVC .PSET + RST 3 + DEFB .PSET + ENDM + POP HL + RET +; +;;;;;;;;;;;;;;;;;; +; +; LINE/BLINE [c,w] x0,y0,x1,y1,..... +; +LINE: ENT + DEFB F6H +BLINE: ENT + XOR A + LD (LINE4+1),A + CALL COORD0 + CALL HCH2CH +LINE2: EXX + PUSH HL ;YS + PUSH DE ;XS + EXX + CALL COORD + POP DE ;XS + EX (SP),HL ;YS,Text + EXX +LINE4: LD A,0 ;LINE/BLINE + SVC .LINE + RST 3 + DEFB .LINE + ENDM + + POP HL + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR Z,LINE2 + SVC .POSSV + RST 3 + DEFB .POSSV + ENDM + RET + SKP H + +; +;;;;;;;;;;;;;;;;;;;;;;;; +; +; PATTERN [C,W] N,X$ +; +PATTER: ENT + CALL COLCON + CALL IDEEXP + XOR A + BIT 7,D + JR Z,GRDSP4 + PUSH HL + LD H,A + LD L,A + SBC HL,DE + EX DE,HL + POP HL + LD A,1 +GRDSP4: EX AF,AF' + LD A,D + OR A + JR NZ,ER03A + LD A,E + PUSH AF + EX AF,AF' + PUSH AF + CALL HCH2CH + CALL STREXP + POP AF + LD C,A + POP AF + PUSH HL + LD H,C + SVC .PATTR + RST 3 + DEFB .PATTR + ENDM + POP HL + CALL ENDCHK + JR NZ,PATTER + RET + SKP H + +;;;;;;;;;;;;;;;;;;; +; +; POSITION x,y +; +POSITI: ENT + CALL COORD + SVC .POSSV + RST 3 + DEFB .POSSV + ENDM + RET +; +; Get X-Y coordinate +; +COORD0: CALL COLCON +COORD: CALL COORD1 ;Get x,y coordinate + PUSH DE + TEST1 ',' + CALL TEST1 + DEFB ',' + ENDM + CALL COORD1 + PUSH DE + EXX + POP HL + POP DE + EXX + RET +; +; +COORD1: CALL IDEEXP + LD A,D ;0000 ... 3FFF + ADD A,40H ;C000 ... FFFF + RET P +ER03A: JP ER03 + SKP H + +;;;;;;;;;;;;;;;;;;;;;;; +; +; color palette +; +PALET: ENT + CALL ENDCHK + JP Z,ER01 + CALL PALRD + CALL COLCK2 + AND 03H + PUSH AF + LD A,(PALBK) + LD D,E + SRL D + SRL D + CP D + JP NZ,ER22 + TESTX ',' + CALL TESTX + DEFB ',' + ENDM + CALL PALRD + LD B,A + POP AF + SVC .DPLST + RST 3 + DEFB .DPLST + ENDM + RET +; +PALRD: CALL IBYTE + CP 16 ;0 .. 15 check + JR NC,ER03A + RET +; + SKP H + +;;;;;;;;;;;;;;;;;;;; +; +; BOX [c,w] xs,ys,xe,ye +BOX: ENT + CALL COORD0 + EXX + PUSH HL ;YS + PUSH DE ;XS + EXX + CALL HCH2CH + CALL COORD + EXX + PUSH HL ;YE + PUSH DE ;XE + EXX + CALL ENDCHK + JR Z,BOX9 + CALL CH2CH + CALL ENDCHK + LD A,(COL) + CALL NZ,COLCHK + SCF +BOX9: EXX + POP DE + POP HL + EXX + POP DE + EX (SP),HL + SVC .BOX + RST 3 + DEFB .BOX + ENDM + POP HL + RET + SKP H + +; +;;;;;;;;;;;;;;;;;; +; +; COLOR c,w +; +COLOR: ENT + CALL COLSUB + LD A,(COL) + SVC .DCOL + RST 3 + DEFB .DCOL + ENDM + LD (SELCOL),A + LD A,(PWMODE) + LD (BITFU2),A + CALL ENDZ + RET +; +;;;;;;;;;;;;;;;; +; +; COLOR CONTROL EXP +; +COLCON: ENT + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + TEST1 "[" + CALL TEST1 + DEFB "[" + ENDM + JR NZ,COLCN1 + CALL COLSUB + LD A,(COL) + SVC .DGCOL + RST 3 + DEFB .DGCOL + ENDM + TESTX "]" + CALL TESTX + DEFB "]" + ENDM + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + RET +; +COLCN1: LD A,(SELCOL) + LD (COL),A + SVC .DGCOL + RST 3 + DEFB .DGCOL + ENDM +COLCN2: LD A,(BITFU2) + LD (PWMODE),A + RET +; +COLSUB: TEST1 "," + CALL TEST1 + + DEFB "," + ENDM + JR Z,COLC8 + CALL COLCHK + LD (COL),A + TEST1 ',' + CALL TEST1 + DEFB ',' + ENDM + JR NZ,COLCN2 +COLC9: CALL IBYTE + CP 2 + JR NC,ER03B + LD (PWMODE),A + RET +; +COLC8: LD A,(SELCOL) + LD (COL),A + JR COLC9 +; +COLCHK: ENT + PUSH BC + CALL IBYTE + POP BC +COLCK2: LD A,(CRTMD1) + RRA + JR C,CMD1 + RRA + JR C,CMD2 + RRA + JR C,CMD3 +CMD1: LD A,E + CP 4 + JR NC,ER03B + RET +CMD2: LD A,E + CP 16 + JR NC,ER03B + RET +CMD3: LD A,E + CP 2 + RET C +ER03B: JP ER03 +; + SKP H + +;;;;;;;;;;;;;;;;;;;; +; +;PAINT COMMAND +; +PAINT: ENT + CALL COLCON + CALL POSITI + LD B,0 + LD DE,PAINTB + PUSH DE + CALL ENDCHK + JR Z,PAINT3 +PAINT1: CALL CH2CH + PUSH DE + CALL COLCHK + POP DE + LD (DE),A + INC DE + INC B + LD A,B + CP 16 + JP Z,ER01 + CALL ENDCHK + JR NZ,PAINT1 +PAINT2: EX (SP),HL ;data adrs + PUSH HL + LD HL,-527 + ADD HL,SP + LD (PAIWED),HL + POP HL + SVC .PAINT + RST 3 + DEFB .PAINT + ENDM + JP C,ER06 + POP HL + RET +; +PAINT3: LD A,(COL) + LD (DE),A + INC B ; data count + JR PAINT2 +PAINTB: DEFS 16 + SKP H + +;;;;;;;;;;;;;;;;;;;; +; +;CIRCLE COMMAND +; +CIRCLE: ENT + PUSH HL + LD HL,0 + LD (CW.H+1),HL + LD (CW.XS+1),HL + LD (CW.YS+1),HL + LD (CW.XE+1),HL + LD (CW.YE+1),HL + LD HL,KK + CALL CLRFAC + LD HL,FLT2PI + LD DE,SK ;\mßám\l=2PAI + CALL LDIR5 + POP HL +;\s\ºl yÝ-Ä + CALL COORD0 + SVC .POSSV + RST 3 + DEFB .POSSV + ENDM + CALL HCH2CH + CALL IDEEXP + PUSH HL + LD A,D + AND C0H + JP NZ,ER03 + EX DE,HL + LD (CW.R+2),HL ;ÞÙZs + LD (CW.XS+1),HL + LD (CW.XE+1),HL + LD HL,(INTFAC) + LD DE,CIR.R + CALL LDIR5 + POP HL + CALL ENDCHK + JP Z,CW + CALL CH2CH + TEST1 ',' + CALL TEST1 + DEFB ',' + ENDM + JR Z,CIRCL2 + CALL HIRIT + CALL ENDCHK + JP Z,CW + CALL CH2CH +CIRCL2: TEST1 ',' + CALL TEST1 + DEFB ',' + ENDM + JR Z,CIRCL8 + LD IX,CW.XS+1 + LD IY,KK + CALL STX + CALL ENDCHK + JP Z,CW + + CALL CH2CH +CIRCL8: TEST1 ',' + CALL TEST1 + DEFB ',' + ENDM + JR Z,CIRCL4 + LD IX,CW.XE+1 + LD IY,SK + CALL STX + CALL ENDCHK + JP Z,CW + CALL CH2CH +CIRCL4: TESTX 'O' + CALL TESTX + DEFB 'O' + ENDM + SCF + JR +3 +CW: XOR A + PUSH HL + PUSH AF + LD HL,KK + LD DE,SK + CALL SUB + CALL LDIR5 + LD A,(KK) + OR A + LD B,0 + JR Z,CW2 ;KK=SK + LD HL,KK+1 + RES 7,M + DEC HL ;HL:= ABS(KK-SK) + LD DE,FLTPAI + CALL CMP + LD B,1 + JR C,CW2 ; ABS() < PI + LD DE,FLT2PI + CALL CMP + LD B,2 + JR C,CW2 ; PI <= ABS() < 2*PI + LD B,3 ;2*PI <= ABS() +CW2: LD A,(SK+1) + AND 80H + OR B + LD B,A + POP AF ;CF='O' + LD A,B + EXX +CW.XS: LD DE,0 ;Start X +CW.YS: LD HL,0 ;Start Y +CW.H: LD BC,0 ;HIRITU + EXX +CW.XE: LD DE,0 ;End X +CW.YE: LD HL,0 ;End Y +CW.R: LD IX,0 ;R + SVC .CIRCL + RST 3 + DEFB .CIRCL + ENDM + POP HL + + OR A + RET +; +HIRIT: CALL IDEEXP + CALL PUSHR + LD HL,(INTFAC) + INC HL + BIT 7,M + JP NZ,ER03 + DEC HL + LD DE,FLONE + CALL CMP + RET Z + LD A,1 + JR C,HI + LD HL,FLONE + LD DE,CIRW3 + PUSH DE + CALL LDIR5 + POP HL + LD DE,(INTFAC) + CALL DIV + LD A,2 +HI: LD (CW.H+1),A + LD DE,256DT + CALL MUL + LD DE,0.5DT + CALL ADD + CALL HLFLT + LD A,L + LD (CW.H+2),A + BIT 0,H + RET Z + XOR A + LD (CW.H+1),A + RET +; +STX: PUSH IX + PUSH IY + CALL IDEEXP + POP DE ;KK/SK + POP IX + PUSH HL + PUSH IX + LD HL,(INTFAC) + CALL LDIR5 + LD HL,(INTFAC) + LD DE,HL + REP5 INC,DE + INC DE + INC DE + INC DE + INC DE + INC DE + ENDM + CALL LDIR5 + CALL COS ;HL=(INTFAC)+5 + LD DE,CIR.R + CALL MUL + CALL STXSUB + + LD HL,(INTFAC) + CALL SIN + LD DE,CIR.R + CALL MUL + CALL NEG + CALL STXSUB + POP IX + POP HL + RET +; +STXSUB: INC HL + BIT 7,M + PUSH AF + RES 7,M + DEC HL + LD DE,0.5DT + CALL ADD + POP AF + INC HL + JR Z,+4 + SET 7,M + DEC HL + CALL HLFLT + EX DE,HL + POP HL ;RET ADRS + EX (SP),HL ;Save coordinate + LD M,E + INC HL + LD M,D + INC HL + INC HL + EX (SP),HL + JP (HL) +; +; +;CIRCLE WORK AREA PART-2 +; +CIR.R: DEFS 5 +; +CIRW3: DEFS 5 +; +256DT: DEF5 89,00,00,00,00 + DEFW 0089H + DEFW 0000H + DEFB 00H + ENDM +0.5DT: DEF5 80,00,00,A7,C6 + DEFW 0080H + DEFW A700H + DEFB C6H + ENDM +; +KK: DEFS 5 +SK: DEFS 5 +; +; SYMBOL command +; +DIRARE: EQU 27D0H +; +SMBOL: ENT + + CALL COORD0 ;position load + SVC .POSSV ;position input + RST 3 + DEFB .POSSV + ENDM + CALL HCH2CH +;string pointer load + CALL STREXP +;string zero check + LD A,B + OR A + PUSH BC + PUSH HL + LD C,B + LD B,0 + LD HL,DIRARE + EX DE,HL + JR Z,SMBL2 + LDIR ;string data xfer +SMBL2: POP HL + CALL HCH2CH + CALL IBYTE ;yoko bairitsu + LD A,D + OR E + JR Z,ERJP3 ;zero error + PUSH DE + CALL HCH2CH + CALL IBYTE ;tate bairitsu + LD A,D + OR E +ERJP3: JP Z,ER03 ;zero error + LD A,E + POP DE + LD D,A + CALL ENDCHK ;end check + PUSH DE + JR Z,SMBL1 + CALL HCH2CH + CALL IBYTE ;angle load + LD A,3 + CP E + JP C,ER03 + LD A,E + DEFB 06H +SMBL1: XOR A + POP DE + POP BC + LD C,A ;angle push + LD A,B ;string length + OR A + RET Z ;zero return + LD A,C ;angle pop + PUSH HL + EX DE,HL + LD DE,DIRARE + SVC .SYMBL + RST 3 + DEFB .SYMBL + ENDM + POP HL + + RET +; + SKP H + +; +;;;;;;;;;;;;;; +; +; HCOPY 1/2/3 +; CLS 1/2/3 +; +HCOPY: ENT + CALL ENDZ + PUSH HL + LD A,00H ;ASAHI modify + SVC .HCPY + RST 3 + DEFB .HCPY + ENDM + POP HL + RET +; +CLS: ENT + CALL ENDZ + PUSH HL + SVC .CLS + RST 3 + DEFB .CLS + ENDM + POP HL + RET +; + END diff --git a/software/asm/mz-xz009/H-CMT.ASM b/software/asm/mz-xz009/H-CMT.ASM new file mode 100644 index 0000000..5b7b0a6 --- /dev/null +++ b/software/asm/mz-xz009/H-CMT.ASM @@ -0,0 +1,910 @@ +; ----------------------------- +; PLE-monitor CMT-driver +; FI:M-CMT ver 0.1 6.05.84 +; ----------------------------- +; + INCLD MACRO +; +$CMT: ENT + DEFW $RS ;###diff Lx + DEFM "CMT" + DEFB 0 + DEFB 5FH ;Seq, W, R +$CMTF2: DEFB C0H ;CMT, 1OPN + DEFB 0 + DEFW CTINI ;INIT + DEFW CTRINF ;RO + DEFW CTWINF ;WO + DEFW .RET ;START + DEFW 256 ;Block/byte + DEFW CTRDAT ;INP + DEFW CTWDAT ;OUT + DEFW 0 ;DELETE + DEFW 0 ;WDIR + DEFW ER59 ;FREE +; +CTINI: TEST1 "T" ; Change EOF process + CALL TEST1 + DEFB "T" + ENDM + LD HL,$CMTF2 + SET ##EOFE,M ; Tape BASIC mode + RET Z + RES ##EOFE,M ; Disk BASIC mode + OR A + RET +; +CTWINF: CALL PUSHR + LD DE,IBUFE + LD A,M + LD C,5 + CP 2 ; BTX 2 ==> 5 + JR Z,CTWF2 + LD C,4 + CP 3 ; BSD 3 ==> 4 + JR Z,CTWF2 + LD C,A +; +CTWF2: LD A,C + LD (DE),A + INC HL + INC DE + LD BC,17 + LDIR + INC HL + INC HL + LD BC,6 + LDIR + LD B,128-24 + CALL ?CLRDE + LD HL,IBUFE + + LD BC,128 + CALL SAVE1 + JR CTWD9 +; +CTWDAT: CALL SAVE2 +; +CTWD9: JP C,BREAKX ; break! + RET ; ok! +;------------------------------- +; +; read inf +; ent HL:adrs +;------------------------------- +CTRINF: LD A,37H ; SCF + LD (CTRDAT),A + PUSH HL + LD HL,IBUFE + LD BC,128 + CALL LOAD1 + JR C,CTERR ; error or break + LD DE,FINMES ; "Found" + CALL FNMPRT ; ? file name + POP DE + LD A,(ZLOG) + OR A ; ROPEN or LOAD? + LD A,M + JP NZ,CTRI1 ; R + LD C,2 ; L BTX 5 ==> 2 + CP 5 + JR Z,CTRI2 +CTRI1: LD C,3 ; BSD 4 ==> 3 + CP 4 + JR Z,CTRI2 + LD C,A + SUB 2 + CP 2 + JP C,ER61 ; file mode error! +; +CTRI2: LD A,C + LD (DE),A + INC HL + INC DE + LD BC,17 + LDIR + XOR A + LD B,2 + CALL ?CLRDE + LD BC,6 + LDIR + LD B,32-18-2-6 + JP ?CLRDE +;---------------------------------- +; +; read data +; ent HL:adrs +; BC:byte size +;---------------------------------- +CTRDAT: XOR A ; XOR A / SCF + JR NC,CTRD2 + LD A,AFH ;XOR A + + LD (CTRDAT),A + PUSH HL ; first time only + LD HL,ELMD + LD DE,LDNGMS ; "Loading" + CALL FNMPRT ; ? file name + POP HL +; +CTRD2: CALL LOAD2 + RET NC ; ok! +; +CTERR: CP 2 + JP NZ,BREAKX ; break! + LD A,70+80H + JP ERRORJ ; error! +;----------------------------------- +; +; CMT SAVE +; +;----------------------------------- +SAVE1: ENT ; Inf. + LD A,CCH + JR SAVE3 +; +SAVE2: ENT ; Data + LD A,53H +; +SAVE3: LD (SPSV+1),SP ;;; + LD SP,IBUFE ;;; + PUSH DE + LD E,A + LD D,D7H ; 'W'=Dreg. + LD A,B + OR C + JR Z,RET1 + CALL CKSUM ; check sum set + CALL MOTOR ; motor on + JR C,WRI3 ; break! + LD A,E + CP CCH + JR NZ,WRI2 ; write Data + PUSH DE + LD DE,WRTMES ; "Writing" + CALL FNMPRT ; ? file name + POP DE +; +WRI2: DI + CALL GAP ; write gap + CALL NC,WTAPE ; write Inf. or Data +; +WRI3: DI + CALL MSTOP ; motor off +; +RET1: POP DE +; +SPSV: LD SP,0 ;xxx + PUSH AF + SVC .EI + RST 3 + DEFB .EI + ENDM + + POP AF + RET +;-------------------------------- +; +; CMT LOAD +; +;-------------------------------- +LOAD1: ENT ; Inf. + LD A,CCH + JR LOAD3 +; +LOAD2: ENT ; Data + LD A,53H +LOAD3: LD (SPSV+1),SP ;;; + LD SP,IBUFE ;;; + PUSH DE + LD D,D2H ; 'L'->Dreg + LD E,A + LD A,B + OR C + JR Z,RET1 + CALL MOTOR ; motor on + DI + CALL NC,TMARK ; read gap & tape mark + CALL NC,RTAPE ; read Inf. or Data + JR WRI3 +;------------------------------------- +; +; CMT VERIFY +; +;------------------------------------- +CMTVRF: ENT ; Data + PUSH HL + LD DE,VFNGMS ; "Verifying" + LD HL,ELMD + CALL FNMPRT ; ? file name + POP HL + CALL LOAD?2 + RET NC ; ok! + CP 2 + JP NZ,BREAKX ; break! + LD A,3+80H + JP ERRORJ ; error! +; +LOAD?2: ENT + LD (SPSV+1),SP ;;; + LD SP,IBUFE ;;; + PUSH DE + LD D,D2H + LD E,53H + LD A,B + OR C + JR Z,RET1 + CALL CKSUM ; check sum set + CALL MOTOR ; motor on + DI +; + CALL NC,TMARK ; read gap & tape mark + CALL NC,TVRFY ; verify + JR WRI3 + +;---------------------------------------- +; motor on +; exit CF=0:ok +; CF=1:break +;---------------------------------------- +MOTOR: CALL PUSHR + SVC .DI + RST 3 + DEFB .DI + ENDM + LD A,F8H + OUT (LSD0),A ; break set + LD B,10 +; +MOT1: IN A,(LSD2) + AND 10H + JR Z,MOT4 +; +MOT2: LD B,FFH ; 2sec delay +; +MOT3: CALL DLY7 ; 7ms delay + DJNZ MOT3 ; motor entry adjust + XOR A ; CF=0 + RET +; +MOT4: LD A,6 + OUT (LSD3),A + INC A + OUT (LSD3),A + DJNZ MOT1 + LD A,(CMTMSG) + OR A + JR NZ,MOT6 + SVC .CR2 + RST 3 + DEFB .CR2 + ENDM + LD A,7FH ; Play mark + SVC .CRT1X + RST 3 + DEFB .CRT1X + ENDM + LD A," " + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + LD A,D + CP D7H ; 'W' + LD DE,RECMES ; "RECORD." + JR Z,MOT5 ; write + LD DE,PLYMES ; "PLAY" +; +MOT5: SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM + SVC .CR2 + RST 3 + DEFB .CR2 + + ENDM +; +MOT6: IN A,(LSD2) + AND 10H + JR NZ,MOT2 + IN A,(LSD1) + AND 80H + JR NZ,MOT6 + SCF ; CF=1,break! + RET +;----------------------------------- +; +; write tape +; +; in BC=byte size +; HL=adr. +; +; exit CF=0:ok. +; CF=1:break +;----------------------------------- +WTAPE: PUSH DE + PUSH BC + PUSH HL + LD D,2 ; repeat set + LD A,F8H + OUT (LSD0),A ; break set +; +WTAP1: LD A,M + CALL WBYTE ; 1 byte write + IN A,(LSD1) + AND 80H ; break check + SCF + JR Z,RTP5 ; break! + INC HL + DEC BC + LD A,B + OR C + JR NZ,WTAP1 + LD HL,(SUMDT) ; check sum write + LD A,H + CALL WBYTE ; high + LD A,L + CALL WBYTE ; low + CALL LONG + XOR A + DEC D + JR Z,RTP5 ; ok! + LD B,A ; Breg=256 +; +WTAP2: CALL SHORT ; write short 256 + DJNZ WTAP2 + POP HL + POP BC + PUSH BC + PUSH HL + JR WTAP1 ; repeat +;------------------------------------- +; +; read tape +; + +; in BC=byte size +; HL=load adr. +; +; exit CF=0:ok +; CF=1,Acc=2:error +; else:break +;------------------------------------- +RTAPE: PUSH DE + PUSH BC + PUSH HL + LD D,2 ; repeat set +; +RTP1: CALL EDGE ; edge search:(49c) + JR C,RTP5 ; break!:7c +; reading point search + CALL DLY3 ; 17c (1232c) + IN A,(LSD2) + AND 20H + JR Z,RTP1 ; again + LD HL,0 + LD (SUMDT),HL + POP HL + POP BC + PUSH BC + PUSH HL +; +RTP3: CALL RBYTE ; 1 byte read + JR C,RTP5 ; error! + LD M,A ; data->(mem.) + INC HL + DEC BC + LD A,B + OR C + JR NZ,RTP3 + LD HL,(SUMDT) ; check sum + CALL RBYTE ; high + JR C,RTP5 ; error! + CP H + JR NZ,RTP6 ; error! + CALL RBYTE ; low + JR C,RTP5 ; error! + CP L + JR NZ,RTP6 ; error! +; +RTP4: XOR A +; +RTP5: POP HL + POP BC + POP DE + RET +; +RTP6: DEC D + JR NZ,RTP1 ; repeat +; +VFERR: LD A,2 ; error + SCF + JR RTP5 +;------------------------------------- +; +; verify tape + +; +; in BC=byte size +; HL=adr. +; +; exit CF=0:ok +; CF=1,Acc=2:error +; else:break +;------------------------------------- +TVRFY: PUSH DE + PUSH BC + PUSH HL + LD D,2 ; repeat set +; +TVF1: CALL EDGE ; edge search:(49c) + JR C,RTP5 ; break!:7c +; reading point search + CALL DLY3 ; 17c (1232c) + IN A,(LSD2) + AND 20H + JR Z,TVF1 ; again + POP HL + POP BC + PUSH BC + PUSH HL +; +TVF2: CALL RBYTE ; 1 byte read + JR C,RTP5 ; error! + CP M ; CP A.(mem.) + JR NZ,VFERR ; verify error! + INC HL + DEC BC + LD A,B + OR C + JR NZ,TVF2 + LD HL,(CSMDT) ; Check sum. + CALL RBYTE ; high + JR C,RTP5 ; error! + CP H + JR NZ,VFERR ; error! + CALL RBYTE ; low + JR C,RTP5 ; error! + CP L + JR NZ,VFERR ; error! + DEC D + JR NZ,TVF1 ; repeat + JR RTP4 ; ok! +; +RECMES: DEFM 'RECORD.' + +PLYMES: DEFM 'PLAY' + DEFB 0 +;-------------------------------------- +; +; file name print +;-------------------------------------- +FNMPRT: LD A,(CMTMSG) + OR A + RET NZ + SVC .CR2 + RST 3 + + DEFB .CR2 + ENDM + SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM + PUSH HL + INC HL + LD A,'"' + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + LD D,16 +; +FNMLP: LD A,M + CP 0DH + JR Z,FNMLE + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + INC HL + DEC D + JR NZ,FNMLP +; +FNMLE: LD A,'"' + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + SVC .CR2 + RST 3 + DEFB .CR2 + ENDM + POP HL + RET +; +WRTMES: DEFM 'WRITING ' + + + DEFB 0 +FINMES: DEFM 'FOUND ' + + + DEFB 0 +LDNGMS: DEFM 'LOADING ' + + + DEFB 0 +VFNGMS: DEFM 'VERIFYING ' + + + DEFB 0 +; +; +;----------------------------------------- +; +; tape format +; + +; +; <460us><496us><240us> <264us> +; b b b b b b +; gxxxxxx° gxx° gxx° g +; xxxxxt b hxxxxxxt hxxt hxxt +; b b b b +; b b b b +; / / / / / / +; ! ! Read point! ! Read point +; ! 368us ! 368us +; Read edge Read edge +; +;----------------------------------------- +; +; Information format : Data format +; : +; * gap : * gap +; short 10 sec : short 5 sec +; (22000) : (11000) +; * tape mark : * tape mark +; long 40 : long 20 +; short 40 : short 20 +; * long 1 : * long 1 +; * Information : * Data +; block : block +; (128 bytes) : (???? bytes) +; * check sum : * check sum +; (2 bytes) : (2 bytes) +; * long 1 : * long 1 +; * short 256 : * short 256 +; * Information : * Data +; block : block +; (128 bytes) : (???? bytes) +; * check sum : * check sum +; (2 bytes) : (2 bytes) +; * long 1 : * long 1 +; +;----------------------------------------- +; +; +; EDGE (tape data edge search) +; (85c+111c)/4= 49 clock +; +; exit CF=0:ok +; CF=1:break +; +EDGE: LD A,F8H + OUT (LSD0),A ; break set + NOP +; +EDG1: IN A,(LSD1) + AND 81H ; shift & break + JR NZ,EDG2 + SCF + RET +; +EDG2: IN A,(LSD2) ; 11c + AND 20H ; 7c + JR NZ,EDG1 ; CSTR D5=0: 7c/12c +; + +EDG3: IN A,(LSD1) ; 11c + AND 81H ; 7c + JR NZ,EDG4 ; 7c/12c + SCF + RET +; +EDG4: IN A,(LSD2) ; 7c + AND 20H ; 7c + JR Z,EDG3 ; CSTR D5=1: 7c/12c + RET ; 10c +;-------------------------------------- +; +; 1 byte read +; +; exit SUMDT=Store +; CF=1:break +; CF=0:data=Acc +;-------------------------------------- +RBYTE: PUSH DE + PUSH BC + PUSH HL + LD HL,0800H ; 8 repeat set +; +RBY1: CALL EDGE ; edge search:(49c) + JP C,TM4 ; break!:7c +; reading point search:17c(1232c) + CALL DLY3 ; 17c (1232c) + IN A,(LSD2) ; data read + AND 20H ; CF=0 + JP Z,RBY2 ; again + PUSH HL + LD HL,(SUMDT) ; check sum set + INC HL + LD (SUMDT),HL + POP HL + SCF ; CF=1 +; +RBY2: LD A,L + RLA ; rotate left + LD L,A + DEC H + JP NZ,RBY1 ; repeat + CALL EDGE + LD A,L + JR TM4 ; ok! +;------------------------------------- +; +; 1 byte write +; in Acc=data +;------------------------------------- +WBYTE: PUSH BC + LD B,8 ; 8 repeat set + CALL LONG ; write long +; +WBY1: RLCA ; rotate left + CALL C,LONG ; 'H' long + CALL NC,SHORT ; 'L' short + DEC B + JP NZ,WBY1 ; repeat + POP BC + + RET +;------------------------------------- +; +; tape mark read +; +; in E=CCH:Inf. long40,short40 +; else:Data long20,short20 +; +; exit CF=0:ok +; CF=1:break +; +;------------------------------------- +TMARK: CALL GAPCK +; + PUSH DE + PUSH BC + PUSH HL + LD HL,2828H ; H=40,L=40 + LD A,E + CP CCH ;'L' + JR Z,TM0 + LD HL,1414H ; H=20,L=20 +; +TM0: LD (TMCNT),HL +; +TM1: LD HL,(TMCNT) +; +TM2: CALL EDGE ; edge search:(49c) + JR C,TM4 ; break!:7c +; reading point search:17c(1232c) + CALL DLY3 ; 17c (1232c) + IN A,(LSD2) + AND 20H + JR Z,TM1 ; again + DEC H + JR NZ,TM2 +; +TM3: CALL EDGE ; edge search:(49c) + JR C,TM4 ; break!:7c +; reading point search:17c(1232c) + CALL DLY3 ; 17c (1232c) + IN A,(LSD2) + AND 20H + JR NZ,TM1 ; again + DEC L + JR NZ,TM3 + CALL EDGE +; +TM4: POP HL +; +TM5: POP BC + POP DE + RET +;------------------------------------ +; +; check sum set +; +; in BC=byte size +; HL=adr. +; + +; exit SUMDT=store +; CSMDT=store +;------------------------------------ +CKSUM: PUSH DE + PUSH BC + PUSH HL + LD DE,0 +; +CKS1: LD A,B + OR C + JR NZ,CKS2 + EX DE,HL + LD (SUMDT),HL + LD (CSMDT),HL + JR TM4 ; ret +; +CKS2: LD A,(HL) + PUSH BC + LD B,8 ; 8 bits +; +CKS3: RLCA ; rotate left + JR NC,CKS4 + INC DE +; +CKS4: DJNZ CKS3 + POP BC + INC HL + DEC BC + JR CKS1 +;-------------------------------------- +; +; gap + tape mark +; +; in E=CCH:short gap (10 sec) +; else:short GAP ( 5 sec) +;-------------------------------------- +GAP: PUSH DE + PUSH BC + LD A,E + LD BC,55F0H ; Inf. 22000(10 sec) + LD DE,2828H ; short40,long40 + CP CCH ;'L' + JP Z,GAP1 + LD BC,2AF8H ; Data 11000( 5 sec) + LD DE,1414H ;short20,long20 +; +GAP1: CALL SHORT ; write short + DEC BC + LD A,B + OR C + JR NZ,GAP1 +; +GAP2: CALL LONG ; write long + DEC D + JR NZ,GAP2 +; +GAP3: CALL SHORT ; write short + DEC E + JR NZ,GAP3 + CALL LONG + + JR TM5 +;----------------------------------------- +; +; GAP check +; (long100 search) +;----------------------------------------- +GAPCK: PUSH DE + PUSH BC + PUSH HL +; +GAPCK1: LD H,100 ; 100 repeat set +; +GAPCK2: CALL EDGE ; edge search:(49c) + JR C,TM4 ; error!:7c + CALL DLY3 ; reading point search:17c(1232c) + IN A,(LSD2) + AND 20H + JR NZ,GAPCK1 ; again + DEC H + JR NZ,GAPCK2 + JR TM4 +;---------------------------------------- +; +; SHORT AND LONG PULSE FOR 1 BIT WRITE +;---------------------------------------- +SHORT: PUSH AF ; 11c + LD A,03H ; 7c + OUT (LSD3),A ; 11c + CALL DLY1 ; 17c (408c) + CALL DLY1 ; 17c (408c) + LD A,02H ; 7c + OUT (LSD3),A ; 11c + CALL DLY1 ; 17c (408c) + CALL DLY1 ; 17c (408c) + POP AF ; 10c + RET ; 10c +; +; +LONG: PUSH AF ; 11c + LD A,03H ; 7c + OUT (LSD3),A ; 11c + CALL DLY4 ; 17c (1704c) + LD A,02H ; 7c + OUT (LSD3),A ; 11c + CALL DLY4 ; 17c (1704c) + POP AF ; 10c + RET ; 10c +;---------------------------------------- +; +; MOTOR STOP +;---------------------------------------- +MSTOP: PUSH AF + PUSH BC + PUSH DE + LD B,10 +; +MST1: IN A,(LSD2) ; motor check + AND 10H + JR Z,MST3 ; ok + LD A,06H ; motor off + + OUT (LSD3),A + INC A + OUT (LSD3),A + DJNZ MST1 +; +MST3: POP DE + POP BC + POP AF + RET +;------------------------------------------- +; +; 7.046 ms delay ... 24989c +;------------------------------------------- +DLY7: ENT + PUSH BC ; 11c + LD B,20 ; 7c +; +DLY.7: CALL DLY3 ; 17*19+17 (23332c) + CALL DLY0 ; 17*19+17 ( 226c) + DJNZ DLY.7 ; 13*19+8 + POP BC ; 10c + RET ; 10c +;------------------------------------------- +; +; 14 clock delay +;------------------------------------------- +DLY0: NOP ; 4c + RET ; 10c +;------------------------------------------- +; +; 347.4 us delay ... 1232c +;------------------------------------------- +DLY3: NOP ; 4c + LD A,76 ; 7c +; +DLYA: DEC A ; 4*XX+4 + JR NZ,DLYA ; 12*XX+7 + RET ; 10c +;----------------------------------- +; +; Delay for short. +; 115.0 us delay ... 408c +;----------------------------------- +DLY1: ENT + LD A,24 ; 7c + JR DLYA ; 12c +;----------------------------------- +; +; Delay for long. +; 480.4 us delay ... 1704c +;----------------------------------- +DLY4: ENT + LD A,105 ; 7c + JR DLYA ; 12c +; + END diff --git a/software/asm/mz-xz009/H-FD.ASM b/software/asm/mz-xz009/H-FD.ASM new file mode 100644 index 0000000..e2cf427 --- /dev/null +++ b/software/asm/mz-xz009/H-FD.ASM @@ -0,0 +1,74 @@ +; ---------------------------- +; PL-monitor FD dummy +; FI:DMY-FD ver 003 3.28.84 +; ---------------------------- +; + INCLD MACRO +; +; +$FD: ENT + DEFW $QD + DEFB 0 +; +CLX: ENT ;dummy routines +DUST: ENT +FLOFF: ENT +FREEX: ENT +INREC: ENT +INX1B: ENT +LD.DIR: ENT +LDX: ENT +LOPX: ENT +OPX: ENT +PRREC: ENT +PRX1B: ENT +RECST: ENT +SVX: ENT + OR A + RET +; +FLOCK: ENT +FSWAP: ENT + JP ER59 + SKP H + +; +; SVC .DELET +; +FDELET: ENT + CALL PUSHR + LD HL,(ZDELT) ;SEQ + LD A,L + OR H + JR Z,FREN2 + PUSH HL + SVC .LOPEN + RST 3 + DEFB .LOPEN + ENDM + LD A,2 + LD (ZRWX),A + CALL ?OPEND + JR FREN4 +; +; SVC .RENAM +; +FRENAM: ENT + CALL PUSHR + LD HL,(ZWDIR) + LD A,L + OR H +FREN2: JP Z,ER59 + PUSH HL + SVC .LOPEN + RST 3 + DEFB .LOPEN + ENDM + LD HL,ELMD + CALL SETFNAM + LD HL,200H + LD (ZLOG),HL + CALL SERFLW ;check already exist +FREN4: POP IX + JP IOCALL + END diff --git a/software/asm/mz-xz009/H-QD.ASM b/software/asm/mz-xz009/H-QD.ASM new file mode 100644 index 0000000..cd4d97e --- /dev/null +++ b/software/asm/mz-xz009/H-QD.ASM @@ -0,0 +1,1410 @@ +; ---------------------------- +; MZ-800 Monitor QD driver +; FI:M-QD ver 0.2A 9.5.84 +; ---------------------------- +; + INCLD MACRO +; +; +; +$QD: ENT + DEFW $USR + DEFM "QD" + DEFW 0 + DEFB 5FH ;Seq, W, R + DEFB 40H ;1OPN + DEFB 32 ;Max dir + DEFW Q.INI + DEFW Q.RINF + DEFW Q.WINF + DEFW Q.ON + DEFW 1024 + DEFW Q.RDAT + DEFW Q.WDAT + DEFW 0 ;DELETE + DEFW 0 ;WRDIR + DEFW Q.FREE +; +; +Q.FREE: XOR A + SCF + RET +; +; +Q.INI: RET C + TEST1 "Y" + CALL TEST1 + DEFB "Y" + ENDM + JR Z,Q.INI2 + OR A + JP NZ,ER03 + CALL OKYN +Q.INI2: CALL Q.RDY + RET C + SVC .DI + RST 3 + DEFB .DI + ENDM + LD C,2 + JR QDIOX + SKP H + +; +; Dir search start +; +Q.ON: OR A + JR NZ,QDOFF + SVC .DI + RST 3 + DEFB .DI + ENDM + XOR A + LD (FNUPS),A ;KILL # + LD C,5 + CALL QDIOR + LD BC,1 +; +QDIOR: LD (QDPC),HL + LD (QDPE),DE + LD HL,QDPB + LD M,B + DEC HL + LD M,C + JR QDIO +; +QDOFF: ENT + CALL PUSHR + LD C,6 + JR QDIOX +; +; Read inf +; ent HL:adrs +; +Q.RINF: LD BC,3 + LD DE,64 + CALL QDIOR + RET NC + CP 40 ;not found + SCF + RET NZ + LD A,0 + RET +; +; Read data +; ent HL:buffer adars +; BC:byte size +; +Q.RDAT: SVC .DI + RST 3 + DEFB .DI + ENDM + LD DE,BC + LD BC,0103H +; +QDIOX: CALL QDIOR + SVC .EI + RST 3 + DEFB .EI + ENDM + RET + SKP H + +; +; Write inf +; +Q.WINF: LD A,37H ;SCF + LD (Q.WD1),A +Q.RDY: LD BC,0101H + JR QDIOR +; +; Write data +; +Q.WDAT: PUSH AF + SVC .DI + RST 3 + DEFB .DI + ENDM +Q.WD1: XOR A ;XOR A / SCF + JR NC,Q.WD2 + LD A,AFH ;XOR A + LD (Q.WD1),A + CALL SERFLW ;First time only + LD (QDPG),HL + LD HL,ELMD + LD DE,64 + POP AF + JR Q.WD3 +; +Q.WD2: LD (QDPG),HL + POP AF + SET 0,A +Q.WD3: LD (QDPI),BC + LD B,A + LD C,4 + JR QDIOX +; +; +;QD WORK +; +; +QDTBL: ENT +QDPA: ENT + DEFB 0 +QDPB: ENT + DEFB 0 +QDPC: ENT + DEFW 0 +QDPE: ENT + DEFW 0 +QDPG: ENT + DEFW 0 +QDPI: ENT + DEFW 0 +; +HDPT: ENT + DEFB 0 +HDPT0: ENT + DEFB 0 +; +FNUPS: DEFB 0 +FNUPS1: DEFB 0 +FNUPF: DEFB 0 + +; +FNA: ENT + DEFB 0 +FNB: ENT + DEFB 0 +; +MTF: ENT + DEFB 0 +RTYF: ENT + DEFB 0 +SYNCF: ENT + DEFB 0 +; +RETSP: ENT + DEFW 0 +; +FMS: EQU EFFFH +; + SKP H + +; +;------------------------------ +; +; QDIO +; +;------------------------------ +; +; +QDIO: ENT + LD A,5 ;Retry 5 + LD (RTYF),A +; +RTY: DI + CALL QMEIN + EI + RET NC + PUSH AF + CP 40 + JR Z,RTY4 + CALL MTOF + LD A,(QDPA) + CP 4 ;Write ? + JR NZ,RTY3 + LD A,(FNUPF) + OR A + JR Z,RTY5 + XOR A ;FNUPF CLR + LD (FNUPF),A + LD A,(FNA) + PUSH HL ;RETSP <= SP-2 + LD (RETSP),SP + POP HL +; + DI + CALL QDSVFN + EI + JR C,RTY2 + CALL MTOF +; +RTY3: CP 3 ;Read ? + JR NZ,RTY5 + LD HL,HDPT + DEC (HL) +; +RTY5: POP AF + PUSH AF + CP 41 + JR NZ,RTY2 +; + LD HL,RTYF + DEC (HL) + JR Z,RTY2 + POP AF + LD A,(FNUPS1) + LD (FNUPS),A + JR RTY +; +RTY2: CALL WRCAN + CALL QDHPC +RTY4: POP AF + + RET +; + SKP H + +; +QMEIN: LD (RETSP),SP + LD A,(QDPA) + DEC A + JR Z,QDRC ;Ready Check + DEC A + JR Z,QDFM ;Format + DEC A + JR Z,QDRD ;Read + DEC A + JP Z,QDWR ;Write + DEC A + JR Z,QDHPC ;Head Point Clear + JR MTOFX ;Motor Off +; +;------------------------- +; +; Head Point Clear +; +;------------------------- +; +QDHPC: ENT + PUSH AF + XOR A + LD (HDPT),A + POP AF + RET +; +;------------------------- +; +; Ready Check +; +;------------------------- +; +QDRC: ENT + LD A,(QDPB) + JP QREDY +; + SKP H + +; +;------------------------- +; +; Format +; +;------------------------- +; +QDFM: ENT + XOR A + CALL QDSVFN + CALL SYNCS2 + LD BC,FMS + LD A,AAH +; +QDFM1: CPL + LD D,A + CALL TRANS + DEC BC + LD A,B + OR C + JR Z,QDFM2 + LD A,D + JR QDFM1 +; +QDFM2: CALL EOM + CALL MTOF + CALL MTON + LD A,(FNB) + DEC A + JR NZ,FMERR + CALL SYNCL2 + LD BC,FMS + LD E,55H +QDFM3: CP E + JR NZ,FMERR + DEC BC + LD A,B + OR C + JR Z,QDFM4 + LD A,E + CPL + LD E,A + CALL RDATA + JR QDFM3 +; +QDFM4: CALL RDCRC +MTOFX: JP MTOF +; +FMERR: LD A,41 ;Hard Err + SCF + RET +; + SKP H + +; +;------------------------- +; +; Read +; +;------------------------- +; +QDRD: ENT + LD A,(MTF) + OR A + CALL Z,MTON + CALL HPS + RET C + CALL BRKC +; + CALL RDATA + LD C,A + CALL RDATA + LD B,A + OR C ;Byte size zero check + JP Z,QDWE1 + LD HL,(QDPE) ;Byte size check + SBC HL,BC + JP C,QDWE1 + LD HL,(QDPC) +; +;Block Data Read +; +BDR: CALL RDATA + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JR NZ,BDR + CALL RDCRC + LD A,(QDPB) + BIT 0,A + JR NZ,MTOFX + RET +; + SKP H + +; +;Head Point Search +; +HPS: ENT + LD HL,FNB + DEC (HL) + JR Z,HPNFE ;Not Found + CALL SYNCL2 + LD C,A ;BLKFLG => C reg + LD A,(HDPT) + LD HL,HDPT0 + CP (HL) ;Search ok ? + JR NZ,HPS1 + INC A ;HDPT count up + LD (HDPT),A + LD (HL),A ;HDPT0 count up + LD A,(QDPB) + XOR C + RRA + RET NC ;= +; +;Dummy read +; +DMR: CALL RDATA + LD C,A + CALL RDATA + LD B,A +; +DMR1: CALL RDATA + DEC BC + LD A,B + OR C + JR NZ,DMR1 + CALL RDCRC + JR HPS ;next +; +HPS1: INC (HL) + JR DMR +; +HPNFE: LD A,40 ;Not Found + SCF + RET +; + SKP H + +; +;------------------------- +; +; Write +; +;------------------------- +; +QDWR: ENT + LD A,(FNUPS) + LD (FNUPS1),A + LD A,(MTF) + OR A + JR NZ,QDWR1 + CALL MTON + LD A,(FNUPS) + LD HL,FNB + ADD A,(HL) + LD (FNB),A + INC A + LD (HDPT),A + CALL HPS + JP NC,QDWE1 ;Hard err +QDWR1: LD A,(QDPB) + LD B,A + AND 1 + JR NZ,QDWR2 + LD DE,QDPC + LD A,B + RES 2,A + CALL BDW + CALL BRKC +; +QDWR2: LD DE,QDPG + LD A,(QDPB) + SET 0,A + CALL BDW + CALL MTOF + CALL BRKC +; + LD A,(QDPB) + AND 4 + JR Z,NFNUP + LD A,(FNA) + LD HL,FNUPS + ADD A,(HL) + CALL QDSVFN + LD A,1 + LD (FNUPF),A +QDWR4: LD A,(FNA) + LD HL,FNUPS1 + ADD A,(HL) + INC A + LD (FNB),A + INC A + LD (HDPT),A + CALL HPS + JR NC,QDWE1 + LD A,(QDPB) + AND 1 + JR NZ,QDWR3 + + LD DE,QDPC + CALL BDV + RET C +QDWR3: LD DE,QDPG + CALL BDV + RET C + LD A,(FNUPF) + OR A + JR Z,QDWR5 +WRCAN: XOR A + LD (FNUPS),A + LD (FNUPF),A +; +QDWR5: JP MTOF +; +QDWE1: LD A,41 + SCF + RET +; +NFNUP: CALL MTON + JR QDWR4 +; +;Block Data Write +; +BDW: PUSH AF + LD HL,FNUPS + INC (HL) + CALL SYNCS2 + POP AF + CALL TRANS + CALL RSET + LD A,C + CALL TRANS + LD A,B + CALL TRANS +; +BDW1: LD A,(HL) + CALL TRANS + INC HL + DEC BC + LD A,B + OR C + JR NZ,BDW1 + JP EOM +; +;HL,BC SET +; +RSET: EX DE,HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + EX DE,HL + RET +; +;Block Data Verify +; + +BDV: CALL SYNCL2 + CALL RSET + CALL RDATA + CP C + JR NZ,QDWE1 + CALL RDATA + CP B + JR NZ,QDWE1 +; +BDV1: CALL RDATA + CP (HL) + JR NZ,QDWE1 + INC HL + DEC BC + LD A,B + OR C + JR NZ,BDV1 + JP RDCRC +; +; +; i/o port adrs +; +SIOAD: EQU F4H ; sio A data +SIOBD: EQU F5H ; sio B data +SIOAC: EQU F6H ; sio A control +SIOBC: EQU F7H ; sio B control +; +; +; +; Ready & Write protect +; Acc = '0' : Ready check +; Acc = '1' : & Write Protect +; +QREDY: ENT + LD B,A + LD A,02H ;SIO hard check + OUT (SIOBC),A + LD A,81H + OUT (SIOBC),A + LD A,02H + OUT (SIOBC),A + IN A,(SIOBC) + AND 81H + CP 81H + JP NZ,IOE50 ;Not ready + LD A,10H + OUT (SIOAC),A + IN A,(SIOAC) + LD C,A + AND 08H + JP Z,IOE50 ;Not ready + LD A,B + OR A + RET Z ;No err + LD A,C + AND 20H + RET NZ ;No err + JP IOE46 ;Write protect +; + SKP H + +; +; +; Write FN +; +QDSVFN: ENT + PUSH AF + LD HL,SIOSD + LD B,09H + CALL LSINT ;save init +; +SREDY: LD A,10H + OUT (SIOAC),A + IN A,(SIOAC) + AND 8 + JP Z,IOE50 ;Not ready + LD A,10H + OUT (SIOBC),A + IN A,(SIOBC) + AND 8 + JR Z,SREDY + LD BC,00E9H ;Wait 160ms + CALL TIMW + CALL SBRK ;Send Break + CALL SYNCS1 ;FN Only SYNC + POP AF + CALL TRANS ;FN=A + CALL EOM ;CRC FLAG(7EH) + JR FNEND +; +; +; +; MTON -- QD MOTOR ON +; READ FILE NUMBER +; READ &CHECK CRC,FLAG +; +MTON: ENT + LD HL,SIOLD + LD B,0BH + CALL LSINT ;load init +; +LREDY: LD A,10H + OUT (SIOAC),A + IN A,(SIOAC) + AND 8 + JP Z,IOE50 ;Not ready + CALL BRKC + LD A,10H + OUT (SIOBC),A + IN A,(SIOBC) + AND 8 + JR Z,LREDY + LD BC,00E9H ;Wait 160ms + CALL TIMW + CALL SYNCL1 ;LOAD SYNC + LD (FNA),A + INC A + LD (FNB),A + CALL RDCRC +FNEND: LD HL,SYNCF + SET 3,(HL) + + XOR A + LD (HDPT0),A + RET +; + SKP H + +; +; sio initial +; +; +LSINT: LD C,SIOAC + OTIR + LD A,05H + LD (MTF),A + OUT (SIOBC),A + LD A,80H + OUT (SIOBC),A + RET +; +; Motor off +; +MTOF: ENT + PUSH AF + LD A,05H + OUT (SIOAC),A + LD A,60H + OUT (SIOAC),A ;WRGT OFF,TRANS DISABLE + LD A,05H + OUT (SIOBC),A + XOR A + LD (MTF),A + OUT (SIOBC),A + POP AF + RET +; +; + SKP H + +; +; SYNCL1 -- LOAD F.N SYNC ONLY +; (SEND BREAK 110ms) +; SYNCL2 -- LOAD FIRST FILE SYNC +; (SEND BREAK 110ms) +; SYNCL3 -- LOAD FILES SYNC +; (SEND BREAK 002ms) +; +SYNCL2: ENT + LD A,58H + LD B,0BH + LD HL,SIOLD + CALL SYNCA + LD HL,SYNCF + BIT 3,(HL) + LD BC,3 ;WAIT 2ms + JR Z,TMLPL + RES 3,(HL) +SYNCL1: LD BC,00A0H ;WAIT 110ms +; +TMLPL: CALL TIMW + LD A,05H + OUT (SIOBC),A + LD A,82H + OUT (SIOBC),A + LD A,03H + OUT (SIOAC),A + LD A,D3H + OUT (SIOAC),A + LD BC,2CC0H ;loop 220ms +; +SYNCW0: LD A,10H + OUT (SIOAC),A + IN A,(SIOAC) + AND 10H + JR Z,SYNCW1 + DEC BC + LD A,B + OR C + JR NZ,SYNCW0 + JP IOE54 ;Un format +; +SYNCW1: LD A,03H + OUT (SIOAC),A + LD A,C3H + OUT (SIOAC),A + LD B,9FH ;loop 3ms +; +SYNCW2: LD A,10H + OUT (SIOAC),A + IN A,(SIOAC) + AND 01H + JR NZ,SYNCW3 + DEC B + JR NZ,SYNCW2 + JP IOE54 ;Un format +; +SYNCW3: LD A,03H + OUT (SIOAC),A + LD A,C9H + + OUT (SIOAC),A + CALL RDATA + JP RDATA +; +; +; +; SYNCS1 -- SAVE F.N SYNC +; (SEND BREAK 220ms) +; SYNCS2 -- SAVE FIRST FILE SYNC +; (SEND BREAK 220ms) +; SYNCS3 -- SAVE FILES SYNC +; (SEND BREAK 020ms) +; +SYNCS2: ENT + LD A,98H + LD B,09H + LD HL,SIOSD + CALL SYNCA + CALL SBRK +; + LD HL,SYNCF + BIT 3,(HL) + LD BC,001DH ;WAIT 20ms + JR Z,TMLPS + RES 3,(HL) +SYNCS1: LD BC,0140H ;WAIT 220ms +; +TMLPS: CALL TIMW + LD A,05H + OUT (SIOAC),A + LD A,EFH + OUT (SIOAC),A + LD BC,1 ;WAIT 0.7ms + CALL TIMW + LD A,C0H + OUT (SIOAC),A + LD A,A5H + JR TRANS +; +; +; +; SBRK -- SEND BREAK (00H) +; +SBRK: ENT + LD A,05H + OUT (SIOAC),A + LD A,FFH + OUT (SIOAC),A + RET +; +; +; +SYNCA: LD C,SIOAC + OUT (C),A + LD A,5 + OUT (SIOBC),A + LD A,80H + OUT (SIOBC),A + OTIR + RET + +; + SKP H + +; +; +; +; EOM -- End off message +; Save CRC#1,#2,FLAG +; File space check +; +; +EOM: ENT + LD BC,1 ;WAIT 0.7ms + CALL TIMW + LD A,10H + OUT (SIOBC),A + IN A,(SIOBC) + AND 8 + RET NZ + JP IOE53 ;NO file space +; +; RDCRC -- READ CRC & CHECK +; +RDCRC: ENT + LD B,3 +RDCR1: CALL RDATA + DJNZ RDCR1 +RDCR2: IN A,(SIOAC) + RRCA + JR NC,RDCR2 ; Rx Available + LD A,01H + OUT (SIOAC),A + IN A,(SIOAC) + AND 40H + JR NZ,IOE41 ;Hard err + OR A + RET +; + SKP H + +; +; Save 1 chr by Acc +; & ready check +; +TRANS: ENT + PUSH AF +TRA1: IN A,(SIOAC) + AND 4 ;TRANS buf null + JR Z,TRA1 + POP AF + OUT (SIOAD),A +NRCK: LD A,10H + OUT (SIOAC),A + IN A,(SIOAC) + AND 08H + JP Z,IOE50 ;Not ready + RET +; +; Read data (1 chr) +; +RDATA: ENT + CALL NRCK + IN A,(SIOAC) ;RR0 + RLCA + JR C,IOE41 ;Hard err + RRCA + RRCA + JR NC,RDATA + IN A,(SIOAD) + OR A + RET +; + SKP H + +; +; i/o err +; +IOE41: LD A,41 ;Hard err + DEFB 21H +IOE46: LD A,46 ;Write protect + DEFB 21H +IOE50: LD A,50 ;Not ready + DEFB 21H +IOE53: LD A,53 ;No file space + DEFB 21H +IOE54: LD A,54 ;Un format + LD SP,(RETSP) + SCF + RET +; +; +;--------------------------------- +; +; wait timer clock 3.54368MHz +; +; BC=001H= 0.7ms( 0.698ms) +; 003H= 2.0ms( 2.072ms) +; 01DH= 20.0ms( 19.929ms) +; 0A0H=110.0ms(109.899ms) +; 0E9H=160.0ms(160.036ms) +; 140H=220.0ms(219.787ms) +; +;--------------------------------- +; +TIMW: PUSH AF +TIMW1: LD A,150 ;MZ-1500=152 +TIMW2: DEC A + JR NZ,TIMW2 + DEC BC + LD A,B + OR C + JR NZ,TIMW1 + POP AF + RET +; + SKP H + +; +;-------------------------------- +; +; SIO CH A COMMAND CHAIN +; +; SIOLD -- LOAD INIT. DATA +; SIOSD -- SAVE INIT. DATA +; +;-------------------------------- +; +SIOLD: DEFB 58H ;CHANNEL RESET + DEFB 04H ;POINT WR4 + DEFB 10H ;X1 CLOCK + DEFB 05H ;POINT WR1 + DEFB 04H ;CRC-16 + DEFB 03H ;POINT WR3 + DEFB D0H ;ENTER HUNT PHASE +;Rx 8bits + DEFB 06H ;POINT WR6 + DEFB 16H ;SYNC CHR(1) + DEFB 07H ;POINT WR7 + DEFB 16H ;SYNC CHR(2) +; +SIOSD: DEFB 98H ;CHANNEL RESET +;Tx CRC Generator reset + DEFB 04H ;POINT WR4 + DEFB 10H ;X1 CLOCK + DEFB 06H ;POINT WR6 + DEFB 16H ;SYNC CHR(1) + DEFB 07H ;POINT WR7 + DEFB 16H ;SYNC CHR(2) + DEFB 05H ;POINT WR5 + DEFB 6DH ;Tx CRC ENABLE +; +; +; BREAK CHECK +; +BRKC: LD A,E8H + OUT (LSD0),A + NOP + IN A,(LSD1) + AND 81H + RET NZ + CALL WRCAN + JP BREAKX ;Can't CONT +; +; +; ----------------------------- +; MZ-800 monitor +; LDALL +; SVALL +; ver 0.1A 08.08.84 +; ----------------------------- +; +; RAM i/o port +; +RCADR: EQU EBH ;RAM file ctrl port +RDADR: EQU EAH ;RAM file data port +; +; RAM equ table + +; +RMLIM: EQU 0000H ;RAM file limit +RMADR: EQU 0002H ;RAM file usage +RMTOP: EQU 0010H ;RAM file top adrs +; +; LDAL,SVAL WORK +; +RMFRE: DEFW 0 +FAS: DEFW 0 +NFT: DEFW 0 ;1 File top +NBT: DEFW 0 ;1 Block top +; +FLAGF: DEFB 0 +FNUPB: DEFB 0 +; +BLKF: DEFB 0 +BLKSL: DEFB 0 +BLKSH: DEFB 0 +; +; SVC .LSALL +; ent A=0 ... LOAD ALL +; A=1 ... SAVE ALL +; +LSALL: ENT + CALL PUSHR + LD HL,LDALM + OR A + JR Z,+5 + LD HL,SVALM + LD (LSAL1+1),HL + SVC .CLRIO + RST 3 + DEFB .CLRIO + ENDM + CALL QDHPC + PUSH HL + LD (RETSP),SP + POP HL + XOR A + CALL QREDY + JR C,LSAL2 + LD A,5 ;max retry + LD (RTYF),A +LSAL3: SVC .DI + RST 3 + DEFB .DI + ENDM +LSAL1: CALL 0 ;xxx LDALM or SVALM + CALL MTOF + SVC .EI + RST 3 + DEFB .EI + ENDM + RET NC + CP 41 + JR NZ,LSAL2 + LD HL,RTYF + DEC M + JR NZ,LSAL3 + LD A,41 + +LSAL2: JP ERRORJ + SKP H + +; +; LDALL main roution +; +; +LDALM: LD (RETSP),SP + LD HL,RMLIM + CALL EMLD2 + DEC DE ;RMFRE-end point buffer + DEC DE ;end point buffer(2byte) + LD (RMFRE),DE ;RAM buffer MAX adrs + LD HL,RMADR + CALL EMLD2 + LD HL,RMTOP + OR A + SBC HL,DE + JP NZ,RMER ;RAM Not init + LD (NFT),DE ;first NFT set(0010H) + INC DE + INC DE + LD (NBT),DE ;first NBT set(0012H) + LD HL,FAS + LD M,0 ;1 file byte size clear + INC HL + LD M,0 + CALL MTON +; +LDALN: LD HL,FNB + DEC M + JP Z,LDEND + CALL SYNCL2 + LD (BLKF),A + CALL RDATA + LD (BLKSL),A + CALL RDATA + LD (BLKSH),A +; + LD HL,(BLKSL) + LD DE,(NBT) + ADD HL,DE ;NBT+Block size + JR C,LDALEE ;over + LD BC,2 + ADD HL,BC ;HL+BLKF+BLKS(H,L) +LDALEE: JP C,LDALE ;64K over + LD BC,(RMFRE) + SBC HL,BC ;usedadrs-maxused + JR Z,FBUF0 ;free just + JP NC,LDALE ;NTB+lodingsize+3>free +FBUF0: LD HL,BLKF + LD BC,3 + CALL EMSVD + EX DE,HL + LD DE,(BLKSL) + LD A,D ;size zero check + OR E + JP Z,IOE41 ;size zero error +; +; +LEQM: IN A,(SIOAC) + RLCA + JR C,LEQME + + RRCA + RRCA + JR NC,LEQM + IN A,(SIOAD) + LD C,RCADR + LD B,H + OUT (C),L + DEC C + OUT (C),A + INC HL + DEC DE + LD A,D + OR E + JR NZ,LEQM + CALL RDCRC + LD (NBT),HL + LD HL,(FAS) ;1 file all size + LD DE,(BLKSL) + ADD HL,DE + INC HL + INC HL + INC HL + LD (FAS),HL + LD A,(BLKF) + BIT 2,A + JR NZ,LDALO ;end block ? +; +LDALP: CALL BRKCHK + JP NZ,LDALN + JP BREAKZ +; +LDALO: LD DE,(NFT) + ADD HL,DE + INC HL + INC HL + LD (NFT),HL ;next NFT + PUSH HL + EX DE,HL + LD DE,(FAS) + CALL EMSV2 + LD HL,0 + LD (FAS),HL + POP HL + INC HL + INC HL + LD (NBT),HL + JR LDALP +; +LDEND: LD HL,(NFT) + LD DE,RMADR + EX DE,HL + CALL EMSV2 + EX DE,HL + NOP + LD DE,0 + CALL EMSV2 + RET +; +LDALE: CALL LDEND + LD A,53 + +LEQME: SCF + RET +; + SKP H + +; +; SVALL main roution +; +SVALM: LD (RETSP),SP + XOR A + LD (FNUPB),A + LD (FLAGF),A + LD (FNUPS),A + LD HL,RMTOP + CALL EMLD2 + LD A,D + OR E + RET Z ;RAM Not file +; + CALL MTON + LD A,(FNB) + DEC A + JP NZ,QDER ;QD Not init + LD HL,RMTOP +; +SVALN: CALL EMLD2 + LD (FAS),DE + LD A,D + OR E + JR Z,SVALQ + INC HL + INC HL +; +; +SVALO: PUSH HL + CALL SYNCS2 + POP HL + CALL EMLD1 + CALL TRANS + INC HL + CALL EMLD2 + LD (BLKSL),DE + LD A,E + CALL TRANS + LD A,D + CALL TRANS + INC HL + INC HL +SEQM: LD C,RCADR + LD B,H + OUT (C),L + DEC C + IN B,(C) +; +SEQM1: IN A,(SIOAC) + AND 4 + JR Z,SEQM1 + LD A,B + OUT (SIOAD),A + INC HL + DEC DE + LD A,D + OR E + JR NZ,SEQM +; + +; check EOM +; + LD BC,1 + CALL TIMW + LD A,10H + OUT (SIOBC),A + IN A,(SIOBC) + AND 8 + JR NZ,SEQM2 + LD A,53 + LD (FLAGF),A + JP SVALQ +; +SEQM2: PUSH HL + LD HL,FNUPS + INC M + CALL BRKCHK + JP Z,BREAKZ + LD HL,(FAS) + LD DE,(BLKSL) + LD BC,3 + XOR A + SBC HL,DE + SBC HL,BC + JR Z,SVALP + LD (FAS),HL + POP HL + JR SVALO +; +SVALP: POP HL + LD A,(FNUPS) + LD (FNUPB),A + JP SVALN +; + SKP H + +; +SVALQ: LD A,(FNUPB) + LD (FNUPS),A + CALL MTOF + CALL MTON + LD HL,RMTOP +; +SVALT: CALL EMLD2 + LD (FAS),DE + INC HL + INC HL +; +SVALR: LD A,(FNUPB) + DEC A + JP Z,SVALU + LD (FNUPB),A +; + PUSH HL + CALL SYNCL2 + POP HL + LD D,A + CALL EMLD1 + CP D + JR NZ,QDHER + INC HL + CALL EMLD2 + LD (BLKSL),DE + CALL RDATA + CP E + JR NZ,QDHER + CALL RDATA + CP D + JR NZ,QDHER + INC HL + INC HL +; +; +VEQM: IN A,(SIOAC) + RLCA + JR C,QDHER + RRCA + RRCA + JR NC,VEQM + IN A,(SIOAD) +; + LD C,RCADR + LD B,H + OUT (C),L + DEC C + IN B,(C) + CP B + JR NZ,QDHER + INC HL + DEC DE + LD A,D + OR E + JR NZ,VEQM + CALL RDCRC + PUSH HL + CALL BRKCHK + + JP Z,BREAKZ + LD HL,(FAS) + LD DE,(BLKSL) + LD BC,3 + XOR A + SBC HL,DE + SBC HL,BC + JR Z,SVALS + LD (FAS),HL + POP HL + JR SVALR +; +SVALS: POP HL + JR SVALT +; +SVALU: CALL MTOF + LD A,(FNUPS) + CALL QDSVFN + XOR A + LD (FNUPS),A + LD A,(FLAGF) + OR A + RET Z + SCF + RET +; +; +QDER: +RMER: LD A,54 + SCF + RET +; +QDHER: + LD A,41 + SCF + RET +; +; + END diff --git a/software/asm/mz-xz009/HLA b/software/asm/mz-xz009/HLA new file mode 100644 index 0000000..2cad21e --- /dev/null +++ b/software/asm/mz-xz009/HLA @@ -0,0 +1,39 @@ +# This viminfo file was generated by Vim 8.0. +# You may edit it if you are careful! + +# Viminfo version +|1,4 + +# Value of 'encoding' when this file was written +*encoding=utf-8 + + +# hlsearch on (H) or off (h): +~h +# Command Line History (newest to oldest): +:q +|2,0,1616620341,,"q" + +# Search String History (newest to oldest): + +# Expression History (newest to oldest): + +# Input Line History (newest to oldest): + +# Debug Line History (newest to oldest): + +# Registers: + +# File marks: +'0 1 0 /srv/dvlp/Projects/dev/github/tranZPUter/software/asm/MZ-XZ009/fgrep +|4,48,1,0,1616620341,"/srv/dvlp/Projects/dev/github/tranZPUter/software/asm/MZ-XZ009/fgrep" + +# Jumplist (newest first): +-' 1 0 /srv/dvlp/Projects/dev/github/tranZPUter/software/asm/MZ-XZ009/fgrep +|4,39,1,0,1616620341,"/srv/dvlp/Projects/dev/github/tranZPUter/software/asm/MZ-XZ009/fgrep" + +# History of marks within files (newest to oldest): + +> /srv/dvlp/Projects/dev/github/tranZPUter/software/asm/MZ-XZ009/fgrep + * 1616620340 0 + " 1 0 diff --git a/software/asm/mz-xz009/IOCS.ASM b/software/asm/mz-xz009/IOCS.ASM new file mode 100644 index 0000000..6eb64dd --- /dev/null +++ b/software/asm/mz-xz009/IOCS.ASM @@ -0,0 +1,1643 @@ +; -------------------------- +; MZ-800 BASIC IOCS command +; FI:IOCS ver 1.0B 9.20.84 +; Programed by T.Miho +; -------------------------- +; + INCLD MACRO +; +; +RUNRFL: EQU 11A4H ;KEYBUF label +BKEYBF: EQU 11A5H ;KEYBUF+1 label +; +; ZFLAG1 bit position +; +##RND: EQU 5 ;FD +##SEQ: EQU 6 ;CMT, QD, RAM +##STRM: EQU 7 ;CRT, KB, LPT, RS, USR +; +; ZRWX bit position +; +##ROPN: EQU 0 ;R.opened +##WOPN: EQU 1 ;W.opened +##XOPN: EQU 2 ;X.opened +##EOF: EQU 7 ;End of file +; +; +CMTLU: EQU 80H +LDALU: EQU 81H +CRTLU: EQU 88H +LPTLU: EQU 89H +DATLU: EQU 8AH +; +; +CRTLU?: LD A,(ZLOG) + CP CRTLU + RET +; +PRTEXP: ENT + CALL EXPR + LD A,(PRCSON) + CP 3 + PUSH HL + EX DE,HL + JR Z,PRTEX2 + CALL CVNMFL + POP HL + SVC .COUNT + RST 3 + DEFB .COUNT + ENDM + RET +PRTEX2: CALL CVTSDC + POP HL + RET + SKP H + +; +; PRINT command +; +PRINT: ENT + XOR A + LD (DISPX),A + CALL GETLU + SVC .LUCHK + RST 3 + DEFB .LUCHK + ENDM + JP C,ER44 ;not open + BIT 2,A ;X? + JP NZ,PRX + BIT 1,A ;W? + JP Z,ER59 ;can't exec + CALL LU2CH + CALL CRTLU? + JR NZ,PRT04 + LD A,(SELCOL) + LD (COL),A + TEST1 "[" + CALL TEST1 + DEFB "[" + ENDM + JR NZ,PRT04 + CALL COLCHK + LD (COL),A + TESTX "]" + CALL TESTX + DEFB "]" + ENDM +PRT04: CALL ENDCHK + JP Z,PRTCR +PRT10: LD A,M + CP E3H ;USING + JR Z,PRUSNG + LD BC,PRT20 + PUSH BC ;Return adrs + CP ";" + RET Z + CP "," + RET Z + CP E6H ;TAB + JR Z,PRTAB + CALL PRTEXP + JP PRTMS2 +; +PRT20: CALL ENDCHK + JP Z,PRTCR + CP "," + JR NZ,PRT30 + CALL CRTLU? + JR C,PRT25 + IOCALL ZPOS ;TAB10 + LD IX,(ZPOS) + CALL IOCALL + ENDM + LD B,A + SUB 10 + + JR NC,-2 + NEG + LD B,A + CALL PRTAB2 + JR PRT30 +PRT25: CALL PRTCR +PRT30: LD A,M + CP "," + JR Z,+4 + CP ";" + JR NZ,+3 + INC HL + CALL ENDCHK + RET Z + JR PRT10 +; +PRTAB: CALL CRTLU? + JP C,ER59 + CALL ICH28H + CALL IBYTE + CALL HCH29H + IOCALL ZPOS + LD IX,(ZPOS) + CALL IOCALL + ENDM + SUB E + RET NC + NEG + LD B,A + CALL CRTLU? + LD A,13H ;Cursor right + JR Z,+4 +PRTAB2: LD A," " + LD DE,BKEYBF + PUSH BC + PUSH DE + CALL ?SETDE + POP DE + POP BC + JR PRTMS2 + SKP 3 +; +PRUSNG: INC HL ;PRINT USING + CALL STREXP + LD A,B + OR A + JP Z,ER03 + PUSH HL + LD HL,BKEYBF + PUSH HL + PUSH BC + CALL LDHLDE + POP BC + LD A,F0H + LD E,B + LD D,0 + INC DE + + SVC .OPSEG + RST 3 + DEFB .OPSEG + ENDM + LD (USINGS),HL + LD (USINGP),HL + POP DE + CALL LDHLDE + LD M,0 + POP HL +PRUSG2: CALL ENDCHK + JR Z,PRUSG8 + INC HL + CP "," + JR Z,PRUSG4 + CP ";" + JP NZ,ER01 +PRUSG4: CALL ENDCHK + JR Z,PRUSG9 + CALL EXPRNX + PUSH HL + LD BC,(TMPEND) + PUSH BC + CALL USNGSB + POP DE + CALL PRTMSG + POP HL + JR PRUSG2 +PRUSG8: CALL PRTCR +PRUSG9: LD A,F0H + SVC .DLSEG + RST 3 + DEFB .DLSEG + ENDM + RET +; +; +.CR: DEFW 0DH ;FMP +PRTCR: ENT + LD DE,.CR +; +PRTMSG: ENT + SVC .COUNT ;print message + RST 3 + DEFB .COUNT + ENDM +PRTMS2: CALL CRTLU? + JR Z,PRTMC + SVC .PRSTR + RST 3 + DEFB .PRSTR + ENDM + RET +; +PRTMC: PUSH AF + LD A,(COL) + SVC .DCOL + RST 3 + DEFB .DCOL + ENDM + + POP AF + SVC .PRSTR + RST 3 + DEFB .PRSTR + ENDM + LD A,(SELCOL) + SVC .DCOL + RST 3 + DEFB .DCOL + ENDM + RET +; + SKP H + +; +; READ command +; +READ: ENT + LD A,DATLU + LD (ZLOG),A + JR INP10 +; +; INPUT command +; +INPUT: ENT ;INPUT command + CALL GETLU + SVC .LUCHK + RST 3 + DEFB .LUCHK + ENDM + JP C,ER44 ;not open + BIT 2,A ;X? + JP NZ,INX + BIT 0,A ;R? + JP Z,ER59 ;can't exec + CALL LU2CH + CALL CRTLU? + JR NZ,INP10 + CALL HLFTCH + CP '"' + LD DE,MEM?IN + LD B,2 + JR NZ,INP05 + CALL STREXP + TESTX ";" + CALL TESTX + DEFB ";" + ENDM +INP05: LD A,B + OR A + JR Z,INP10 +INP07: LD A,(DE) + INC DE + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + DJNZ INP07 +INP10: LD (INPSP+1),SP + LD DE,(VARED) + LD (TMPEND),DE +INP15: LD DE,(TMPEND) + CALL MEMECK + CALL INTGTV + PUSH AF + PUSH BC + CALL ENDCHK + JR Z,INP20 + CALL CH2CH + JR INP15 +; +ER44: LD A,44 ;not opened + DEFB 21H +ER59: LD A,59+80H ;can't exec + + JP ERRORJ +; +MEM?IN: DEFM "? " +; +; +INP20: XOR A + PUSH AF ;END=00 + PUSH HL + SVC .INSTT + RST 3 + DEFB .INSTT + ENDM + LD HL,(INPSP+1) + DEC HL +INP24: LD A,M + OR A + JR Z,INP30 + DEC HL + DEC HL + LD B,M + DEC HL + LD C,M + DEC HL + PUSH HL + PUSH AF ;Type + PUSH BC ;Adrs + LD DE,(TMPEND) + CALL INPMX + LD H,0 + LD L,B + ADD HL,DE + LD M,0 + POP DE ;Adrs + POP AF ;Type + CALL INSUB + POP HL + JR INP24 +INP30: POP HL +INPSP: LD SP,0 ;xxx + RET +; +INPMX: LD A,(ZLOG) + CP DATLU + JR Z,DATINP + SVC .INMSG + RST 3 + DEFB .INMSG + ENDM + RET + SKP H + +; +; +INSUB: CP 3 ;String ? + JR NZ,INSUB4 ; No + LD HL,(TMPEND) ; Yes + LD A,B + JP STRLET +; +INSUB4: PUSH DE + LD HL,(INTFAC) + LD DE,(TMPEND) + EX DE,HL + CALL HLFTCH + CP "E" + JP Z,ER03 + EX DE,HL + CALL CVFLAS + EX DE,HL + TEST1 0 + CALL TEST1 + DEFB 0 + ENDM + JP NZ,ER03 + EX DE,HL + POP DE + JP LDIR5 + SKP H + +; +; RESTORE command +; +RESTOR: ENT + XOR A + LD (DATFLG),A + CALL ENDCHK + CALL NZ,GETLIN + EX DE,HL + CALL NZ,DTSRCX + EX DE,HL + JP DATA ;ON RESTORE +; +DATINP: PUSH HL + PUSH DE + CALL DATINX + POP DE + POP HL + RET +; +DATIN0: LD HL,(TEXTST) + CALL DTSRCX +DATINX: LD A,(DATFLG) ;read flag + CP 1 ;0 is restore top + JP Z,ER24 ;1 is out of data + JR C,DATIN0 ;2 is ok + LD HL,(DATPTR) ;read pointer + LD C,":" + SVC .INDAT + RST 3 + DEFB .INDAT + ENDM + LD (DATPTR),HL ;read pointer + CALL ENDCHK + SCF + CCF + RET NZ + DEC HL +DTSRCH: CALL DTSKSB ;DATA search + OR A + JR NZ,DTSRC4 + INC HL +DTSRCX: LD A,M + INC HL + OR M + LD A,1 + JR Z,DTSRC9 + INC HL + INC HL + JR DTSRCH +DTSRC4: CP 94H ;DATA + JR NZ,DTSRCH + INC HL + LD (DATPTR),HL ;read pointer + LD A,2 +DTSRC9: LD (DATFLG),A ;read flag + RET + SKP H + +; +; GETLU ... interpret #n, /P, /T +; ent HL: pointer +; ext HL: pointer +; A: LU# +; +GETLU: ENT + TEST1 "#" + CALL TEST1 + DEFB "#" + ENDM + JR NZ,GETLU2 + CALL HLFTCH + CP 20H + JP NC,ER01 + PUSH DE + PUSH BC + LD DE,ZFAC + PUSH DE + CALL FACNUM + EX (SP),HL + CALL HLFLT + LD A,H + OR A + JP NZ,ER64 + OR L + JP Z,ER64 + JP M,ER64 + POP HL + POP BC + POP DE + RET +GETLU2: TEST1 FBH ;/ + CALL TEST1 + DEFB FBH + ENDM + LD A,CRTLU + RET NZ + TEST1 "P" + CALL TEST1 + DEFB "P" + ENDM + LD A,LPTLU + RET Z + TESTX "T" + CALL TESTX + DEFB "T" + ENDM + LD A,CMTLU + RET +; +; +LU2CH: LD A,(ZLOG) + OR A + RET M + JP HCH2CH + SKP H + +; +; DEFAULT "dev:" +; +DEFAULT:ENT + CALL DEVNAM + SVC .SETDF + RST 3 + DEFB .SETDF + ENDM + RET +; +; INIT "dev:command" +; +INIT: ENT + CALL ENDCHK + LD B,0 + CALL NZ,STREXP +; +INIT2: PUSH HL + SVC .DEVNM + RST 3 + DEFB .DEVNM + ENDM + SVC .FINIT + RST 3 + DEFB .FINIT + ENDM + POP HL + RET +; +; +; ROPEN, WOPEN, XOPEN +; +ROPEN: ENT + LD A,1 + DEFB 1 +WOPEN: ENT + LD A,2 + DEFB 1 +XOPEN: ENT + LD A,4 + PUSH AF + LD (ZRWX),A + CALL GETLU + CP CRTLU + JR NZ,+4 + LD A,CMTLU + LD (ZLOG),A + CALL LU2CH + CALL ELMT + POP AF + CP 4 ;X + JR Z,+4 +OPN.B: LD A,3 ;BSD + LD (ELMD),A + PUSH AF + SVC .RWOPN + RST 3 + DEFB .RWOPN + ENDM + + LD A,(ELMD) + POP BC + CP B + JP NZ,ER61 + RET + SKP H + +; +; CLOSE/KILL command +; +CLOSE: ENT + DEFB F6H +KILL: ENT + XOR A + LD B,A + CALL ENDCHK + JR Z,CLALL ;all files +CLKL2: CALL GETLU + CP CRTLU + RET NC + SVC .CLKL + RST 3 + DEFB .CLKL + ENDM + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR CLKL2 +; +CLALL: XOR A + SVC .CLKL + RST 3 + DEFB .CLKL + ENDM + RET +; +; +ELMT: ENT + CALL END2C + LD B,0 + CALL NZ,STREXP + PUSH HL + SVC .DEVFN + RST 3 + DEFB .DEVFN + ENDM + POP HL + RET + SKP H + +; +DEVNAM: PUSH HL + CALL HLFTCH + LD DE,ELMWRK + LD B,1 + CALL ELMCK + CALL NC,ELMCK + JR C,DEVNM2 + CALL ELMCK + CALL TSTNUM + CALL ELMCK2 + CALL ENDCHK + JR NZ,DEVNM2 + LD A,":" + LD (DE),A + POP AF ;dummy + LD DE,ELMWRK + JR DEVNM4 +DEVNM2: POP HL + CALL ENDCHK + LD B,0 + CALL NZ,STREXP +DEVNM4: PUSH HL + SVC .DEVNM + RST 3 + DEFB .DEVNM + ENDM + INC M + DEC M + JP NZ,ER58 + POP HL + RET +; +ELMCK: CP "A" + RET C + CP "Z"+1 + CCF +ELMCK2: RET C + LD (DE),A + INC HL + INC DE + LD A,M + INC B + RET +; +ELMWRK: DEFS 4 + SKP H + +; +; LOAD "dev:filename" +; +LOAD: ENT + TEST1 E5H ;ALL + CALL TEST1 + DEFB E5H + ENDM + JR NZ,LOAD2 + XOR A +LSALL: SVC .LSALL + RST 3 + DEFB .LSALL + ENDM + RET +LOAD2: CALL ELMT + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JP Z,LOADA + PUSH HL + CALL LDRDY + DEC A + JR Z,LDOBJ + DEC A + JP NZ,ER61 ;il file mode + CALL CKCOM + CALL CLRVAR + CALL LDFIL + JR LOAD9 +LDOBJ: LD HL,(ELMD22) ;load addr + PUSH HL + LD DE,(MEMLMT) + CALL COMPR + LD DE,(ELMD20) ;size + LD BC,(MEMMAX) + CALL NC,MEMOBJ + JP C,ER18 + POP HL + SVC .LOADF + RST 3 + DEFB .LOADF + ENDM +LOAD9: CALL LDEND + POP HL + RET +; +MEMOBJ: ADD HL,DE + RET C + EX DE,HL + LD HL,BC +COMPR: ENT + PUSH HL + OR A + SBC HL,DE + POP HL + RET +; +; CHAIN "dev:filename" + +; +CHAIN: ENT + CALL ELMT + CALL LDRDY + CP 2 + JP NZ,ER61 ;il file mode + LD A,(LSWAP) + OR A + JP Z,RUN2 + JP SWAP2 + SKP H + +; +; MERGE "dev:filename" +; +MERGE: ENT + CALL CKCOM + CALL ELMT + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR Z,MERGEA + SVC .LOPEN + RST 3 + DEFB .LOPEN + ENDM + CP 2 + JP NZ,ER61 + PUSH HL + LD HL,(VARED) + LD (TMPEND),HL + LD BC,1000 + ADD HL,BC + JP C,ER06' + PUSH HL + LD BC,(ELMD20) ;size + INC B + ADD HL,BC + JP C,ER06' + SBC HL,SP + JP NC,ER06' + POP HL + PUSH HL + SVC .LOADF + RST 3 + DEFB .LOADF + ENDM + POP HL + CALL MERGE0 + POP HL + RET +; +MERGE0: CALL LDDEMI + LD A,D + OR E + RET Z + PUSH DE + CALL LDDEMI + PUSH HL + LD HL,DE + LD (EDLINE),HL + CALL DELSUB + POP HL + POP BC + PUSH BC + PUSH HL + CALL INSTLIN + POP HL + POP BC + ADD HL,BC + DEC HL + + DEC HL + DEC HL + DEC HL + JR MERGE0 + SKP H + +; +; LOAD/MERGE/RUN ascii +; +LOADA: CALL CKCOM + LD A,1 + DEFB 1 +MERGEA: LD A,0 + DEFB 1 +RUNA: LD A,2 + PUSH AF + TESTX "A" + CALL TESTX + DEFB "A" + ENDM + CALL ENDZ + LD A,1 + LD (ZRWX),A + LD A,LDALU + LD (ZLOG),A + CALL OPN.B + POP AF + PUSH AF + PUSH HL ;RJOB + LD HL,0 + LD DE,FFFFH + OR A + CALL NZ,DELSUB ;load/run only + LD A,LDALU + SVC .LUCHK + RST 3 + DEFB .LUCHK + ENDM + LD HL,(VARED) + LD (TMPEND),HL + LD BC,1000 + ADD HL,BC + JP C,ER06 + PUSH HL ;load start adrs + LD (LDAPTR),HL +LDA2: LD HL,-512 + ADD HL,SP + LD DE,(LDAPTR) + SBC HL,DE + JP C,ER06 + LD DE,(TMPEND) + SVC .INMSG + RST 3 + DEFB .INMSG + ENDM + LD A,B + OR A + JR Z,LDA4 + CALL CVBCAS + LD A,B + OR C + JP Z,ER03 + LD HL,(LDAPTR) + PUSH HL ;load pointer + INC HL + INC HL + + LD M,C + INC HL + LD M,B + INC HL + PUSH HL + LD HL,DE + TEST1 0 + CALL TEST1 + DEFB 0 + ENDM + JP Z,ER03 + POP HL + LD A,(DE) + CP " " + JR NZ,+3 + INC DE + CALL CVIMTX + LD M,0 + INC HL + LD (LDAPTR),HL + POP DE ;old load pointer + OR A + SBC HL,DE + EX DE,HL ;DE := length + LD M,E + INC HL + LD M,D + JR LDA2 +LDA4: LD HL,(LDAPTR) + CALL LDHL00 + CALL CLR + POP HL ;load start adrs + CALL MERGE0 + POP HL ;RJOB + POP AF + CP 2 ;RUN ? + RET NZ ;no (load/merge) + JP RUNX ;RUN from text-top +; +LDAPTR: DEFS 2 + SKP H + +; +; RUN "dev:filename" +; +FRUN: ENT + CALL ELMT + PUSH HL + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR NZ,RUN1 + CALL HLFTCH + CP "A" + JP Z,RUNA +RUN1: CALL LDRDY + POP HL + DEC A + JR Z,RUNOBJ + DEC A + JP NZ,ER61 ;il file mode + CALL CLRVAR +RUN2: CALL LDFIL ;jump from CHAIN + CALL LDEND + JP RUNX +; +RUNOBJ: LD D,0 ; normal + LD BC,FF00H + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR NZ,RUNOB2 + TESTX "R" + CALL TESTX + DEFB "R" + ENDM + LD D,1 ;,R + LD BC,CFF0H +RUNOB2: LD A,D + LD (RUNRFL),A ;,R flag + LD HL,(ELMD20) ;size + LD DE,(ELMD22) ;load addr + PUSH HL + CALL MEMOBJ + POP DE ;size + LD HL,$BASIC ;load file area + LD BC,FF00H + CALL NC,MEMOBJ + JP C,ER06' + LD SP,0 + CALL CLPTR + XOR A + LD (LOADFG),A + LD A,36H ;count0 mode3 + OUT (D7H),A ;8253 mode set + LD A,1 + OUT (D3H),A ;8253 music enable + LD HL,(ELMD22) ;load addr + LD DE,(TMPEND) + CALL COMPR + + JR NC,RUNOB3 +; +; destroy BASIC +; + PUSH HL + LD HL,$BASIC ;load file area + LD (TEXTST),HL + CALL CLPTR + LD HL,RUNOBE-PRXFER+BKEYBF + LD (ERRORP),HL + POP HL +; +RUNOB3: LD DE,(TMPEND) + CALL COMPR + JR NC,+3 + EX DE,HL + PUSH AF + PUSH HL + LD HL,PRXFER + LD DE,BKEYBF + PUSH DE + LD BC,RUNTBE-PRXFER + LDIR + RET ;JP BKEYBF +; +; +; ORG BKEYBF +; +PRXFER: POP HL + SVC .LOADF + RST 3 + DEFB .LOADF + ENDM + LD A,C3H ;int tbl make + LD HL,038DH + LD (1038H),A + LD (1039H),HL + LD A,01H ;320*200 4 color + SVC .DSMOD + RST 3 + DEFB .DSMOD + ENDM + SVC .DI + RST 3 + DEFB .DI + ENDM + EX AF,AF' + LD A,(RUNRFL) ;run" " ,r + OR A + CALL NZ,INITIO-PRXFER+BKEYBF + EX AF,AF' + LD HL,(ELMD24) ;exec addr + LD A,H + OR L + EXX + LD HL,(TMPEND) ;data store addr + LD DE,(ELMD22) ;load addr + LD BC,(ELMD20) ;size + OR D + OR E + + JR Z,PROX0 + LD A,E9H ;jp (hl) + LD (PRO70P-PRXFER+BKEYBF),A +PROX0: EXX + POP AF ;ldir flg + PUSH HL ;store exec addr + LD HL,PROFF-PRXFER+BKEYBF + LD DE,FF00H + LD BC,PRO80E-PROFF + LDIR + EXX + JP FF00H +; +; ORG FF00H +; +PROFF: JR NC,RUNOB4 + LDIR +RUNOB4: EX AF,AF' + RET Z ;,R + IN A,(LSDMD) ;check dipsw + AND 2 + LD A,0 ;mode 800 + OUT (LSDMD),A ; 800 mode + LD HL,PRO800-PROFF+FF00H + LD BC,PRO80E-PRO800 + JR NZ,MODSET +; + LD A,8 ;mode 700 + OUT (LSDMD),A ;700 or 800 mode + IN A,(LSE0) ;CG xfer + LD HL,1000H + LD DE,C000H + LD BC,1000H + LDIR + IN A,(LSE1) +; + LD HL,PRO700-PROFF+FF00H + LD BC,PRO70E-PRO700 +MODSET: + LD DE,CFF0H + LDIR + POP HL + LD SP,IBUFE + LD DE,D800H ;vram2 for 700 mode + JP CFF0H +; +RUNOBE: SVC .ERRX + RST 3 + DEFB .ERRX + ENDM + SVC .ERCVR + RST 3 + DEFB .ERCVR + ENDM + SVC .DI + RST 3 + DEFB .DI + ENDM + HALT +; ORG CFF0H + +PRO700: + OUT (LSE4),A +PRO701: LD A,71H ;blue and white + LD (DE),A ;vram2 clr + INC DE + LD A,D + CP E0H + JR NZ,PRO701 +PRO70P: OUT (LSE0),A ;jp (hl) + JP (HL) +PRO70E: +; +; ORG CFF0H +PRO800: + OUT (LSE0),A ;700mon rom bank off + OUT (LSE3),A ;800mon rom bank on + JP (HL) +PRO80E: +; +; +; +INITIO: + PUSH AF + DI ;run "file name",r + IM 1 + LD HL,RUNTBL-PRXFER+BKEYBF + LD B,17 + SVC .IOOUT ;io dev init + RST 3 + DEFB .IOOUT + ENDM + POP AF + RET +; +; +; +RUNTBL: +; pio channel a + DEFW FC00H ; int vecter + DEFW FCCFH ; mode 3 (bit mode) + DEFW FC3FH ; i/o reg. set + DEFW FC07H ; int seqence (disenable) +; pio channel b + DEFW FD00H ; int vecter + DEFW FDCFH ; mode 3 (bit mode) + DEFW FD00H ; i/o reg. set + DEFW FD07H ; int seqence (disenable) +; + DEFW D774H ;8253 C1 mode 2 + DEFW D7B0H ; C2 mode 0 + DEFW D6C0H ;counter2 12h + DEFW D6A8H ; + DEFW D5FBH ;counter1 1s + DEFW D53CH ; + DEFW D305H ;8253 int ok + DEFW CD01H ;RF mode 700 + DEFW CC01H ;WF mode 700 +RUNTBE: +; + SKP H + +; +LDRDY0: LD HL,(VARED) + LD (TMPEND),HL + LD DE,(POOL) + LD (OLDPOOL),DE + OR A + SBC HL,DE + LD (VARLN),HL + LD HL,-256 + ADD HL,SP + LD (LAST),HL + LD DE,(VARED) + PUSH HL + OR A + SBC HL,DE + JP C,ER06' + EX (SP),HL + EX DE,HL + LD BC,(VARLN) + INC BC + LDDR + POP DE + SVC .ADDP0 + RST 3 + DEFB .ADDP0 + ENDM + LD A,1 + LD (LOADFG),A + RET +; +LDRDY: CALL LDRDY0 + SVC .LOPEN + RST 3 + DEFB .LOPEN + ENDM + LD A,(ELMD) + RET +; +CLRVAR: LD HL,(VARED) + XOR A + DEC HL + LD M,A + DEC HL + LD M,A + LD (STRST),HL + DEC HL + LD M,A + LD (VARST),HL + DEC HL + LD M,A + LD (POOL),HL + LD HL,4 + LD (VARLN),HL + RET +; +OLDPOOL:DEFS 2 +VARLN: DEFS 2 +LAST: DEFS 2 +LOADFG: DEFB 0 +; + +CKCOM: ENT + PUSH AF + CALL ?DIRECT + JP NZ,ER19 + POP AF + RET + SKP H + +; +LDFIL: LD BC,(ELMD20) + PUSH BC + LD HL,(POOL) + LD DE,(TEXTST) + OR A + SBC HL,DE ;HL := text area size + LD L,0 + SBC HL,BC + JP C,ER06' + LD HL,0 + LD (OLDPOOL),HL + CALL RUNINT + LD HL,0 + LD (LNOBUF),HL + LD HL,(TEXTST) + SVC .LOADF + RST 3 + DEFB .LOADF + ENDM + POP BC + LD HL,(TEXTST) + ADD HL,BC + LD (OLDPOOL),HL + RET +; +LDEND: ENT + LD A,LDALU + LD B,0 + SVC .CLKL + RST 3 + DEFB .CLKL + ENDM + LD HL,LOADFG + LD A,M + OR A + RET Z + LD M,0 + LD HL,(OLDPOOL) + LD A,H + OR L + JR NZ,LDEND2 + LD HL,(TEXTST) + CALL LDHL00 +LDEND2: EX DE,HL + LD HL,(POOL) + LD BC,(VARLN) + LDIR + EX DE,HL + OR A + SBC HL,DE + EX DE,HL + SVC .ADDP0 + RST 3 + DEFB .ADDP0 + ENDM + RET + SKP H + +; +; VERIFY "CMT:filename" +; +VERIFY: ENT + PUSH HL + CALL REFLNX + POP HL + CALL ELMT + PUSH HL + SVC .LOPEN + RST 3 + DEFB .LOPEN + ENDM + CP 2 + JP NZ,ER61 + LD HL,(TEXTST) + SVC .VRFYF + RST 3 + DEFB .VRFYF + ENDM + POP HL + RET +; +; SAVE "dev:filename" +; +SAVE: ENT + TEST1 E5H ;ALL + CALL TEST1 + DEFB E5H + ENDM + LD A,1 + JP Z,LSALL + PUSH HL + CALL REFLNX + POP HL + CALL ELMT + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR Z,SAVEA + PUSH HL + LD A,2 + LD (ELMD),A + LD HL,(TEXTED) + LD DE,(TEXTST) + OR A + SBC HL,DE + LD (ELMD20),HL + LD A,(ELMD1) + CP 0DH + JP Z,ER60 + SVC .SAVEF + RST 3 + DEFB .SAVEF + ENDM + POP HL + RET +; +SAVEA: TESTX "A" + + CALL TESTX + DEFB "A" + ENDM + PUSH HL + LD A,2 + LD (ZRWX),A + LD A,LDALU + LD (ZLOG),A + CALL OPN.B + POP HL + CALL LIST0 + CALL PRTCR + LD B,1 + LD A,LDALU + SVC .CLKL + RST 3 + DEFB .CLKL + ENDM + RET + SKP H + +; +; LOCK/UNLOCK "dev:filename" +; +UNLOCK: ENT + XOR A + DEFB 1 +LOCK: ENT + LD A,1 + PUSH AF + CALL STREXP + SVC .DEVFN + RST 3 + DEFB .DEVFN + ENDM + POP AF + SVC .LOCK + RST 3 + DEFB .LOCK + ENDM + RET +; +; DIR[#n] "dev:" +; DIR[/P] dev +; +DIR: ENT + CALL GETLU + PUSH AF ;lu# + SVC .LUCHK + RST 3 + DEFB .LUCHK + ENDM + JP C,ER44 + BIT 1,A ;W? + JP Z,ER59 + CALL LU2CH + CALL DEVNAM + LD B,A ;ch# + XOR A + SVC .DIR ;read directory + RST 3 + DEFB .DIR + ENDM + LD A,B ;A=ch# + SVC .SETDF ;set default + RST 3 + DEFB .SETDF + ENDM + POP AF ;A=lu# + SVC .DIR ;print directory + RST 3 + DEFB .DIR + ENDM + RET +; +; DELETE "dev:filename" +; +FDEL: ENT + CALL STREXP + SVC .DEVFN + RST 3 + + DEFB .DEVFN + ENDM + SVC .DELET + RST 3 + DEFB .DELET + ENDM + RET +; +; RENAME "dev:oldname","newnae" +; +RENAME: ENT + CALL STREXP + SVC .DEVFN + RST 3 + DEFB .DEVFN + ENDM + CALL HCH2CH + CALL STREXP + SVC .RENAM + RST 3 + DEFB .RENAM + ENDM + RET + SKP H + +; +; random file access +; +PRX: CALL RAN0 +PRX2: CALL PRTEXP + SVC .PRREC + RST 3 + DEFB .PRREC + ENDM + CALL ENDCHK + RET Z + CALL CH2CH + JR PRX2 +; +; +INX: CALL RAN0 + LD DE,(TMPEND) + CALL MEMECK +INX2: CALL INTGTV + PUSH HL + PUSH AF + PUSH BC + LD DE,(TMPEND) + SVC .INREC + RST 3 + DEFB .INREC + ENDM + POP DE + POP AF + CALL INSUB + POP HL + CALL ENDCHK + RET Z + CALL CH2CH + JR INX2 +; +RAN0: TEST1 "(" + CALL TEST1 + DEFB "(" + ENDM + RET NZ + CALL IDEEXP + LD A,D + OR E + JP Z,ER03 + SVC .RECST + RST 3 + DEFB .RECST + ENDM + CALL HCH29H + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + RET +; + SKP H + +; +; SWAP "dev:filename" +; +SWAP: ENT + LD A,(LSWAP) + OR A + JP NZ,ER25 + PUSH HL + LD B,0 + SVC .DEVNM + RST 3 + DEFB .DEVNM + ENDM + LD (SWAPDV),DE + LD (SWAPCH),A + LD HL,(TEXTED) + LD DE,(TEXTST) + XOR A + SBC HL,DE + LD (ELMD20),HL + SVC .SWAP + RST 3 + DEFB .SWAP + ENDM + POP HL + CALL ELMT + CALL ENDZ + LD A,(ZFLAG1) + BIT ##RND,A + JP Z,ER59 + PUSH HL ;RJOB + LD HL,(SWAPNB) + ADD HL,SP + LD SP,HL + EX DE,HL + LD HL,SWAPDS + LD BC,(SWAPBY) + LDIR + CALL LDRDY + CP 2 + JP NZ,ER61 + LD (SWAP2+1),SP +SWAP2: LD SP,0 ;jump from CHAIN + CALL LDFIL + CALL LDEND + LD HL,FFFDH + PUSH HL ;SWAP flag + PUSH HL + LD A,1 + LD (LSWAP),A + LD HL,(TEXTST) + JP NXLINE +; +; Recover SWAP +; +BSWAP: ENT + XOR A + LD (LSWAP),A + POP IX +BSWAP2: POP BC + + LD A,B + CP FFH + JP NZ,ER25 + LD A,C + CP FDH + JR Z,BSWAP6 + CP FEH + LD HL,4 + JR Z,BSWAP4 + CP 12H + LD HL,10H + JP NZ,ER25 +BSWAP4: ADD HL,SP + LD SP,HL + JR BSWAP2 +; +BSWAP6: LD DE,(SWAPDV) + LD A,(SWAPCH) + SVC .SETDF + RST 3 + DEFB .SETDF + ENDM + LD B,0 + SVC .DEVNM + RST 3 + DEFB .DEVNM + ENDM + CALL LDRDY0 + OR FFH + SVC .SWAP + RST 3 + DEFB .SWAP + ENDM + CALL LDFIL + CALL LDEND + LD HL,0 + ADD HL,SP + LD DE,SWAPDS + LD BC,(SWAPBY) + LDIR + LD SP,HL + POP HL ;RJOB + RET +; +SWAPDV: DEFS 2 +SWAPCH: DEFS 1 +; +; I/O initial for cold-start +; +IOINIT: ENT + POP HL + PUSH HL + LD (ERRORP),HL + LD A,"1" + CALL IOINI2 + LD A,"2" + CALL IOINI2 + LD DE,INITD3 + LD B,INITD4-INITD3 + JR IOINI4 + +IOINI2: LD (INITD1+2),A + LD DE,INITD1 + LD B,INITD3-INITD1 +IOINI4: JP INIT2 +; +INITD1: DEFM "RS?:0,$8C,13" + + +INITD3: DEFM "CMT:T" + +INITD4: +; + END diff --git a/software/asm/mz-xz009/MACRO.ASM b/software/asm/mz-xz009/MACRO.ASM new file mode 100644 index 0000000..7abfa70 --- /dev/null +++ b/software/asm/mz-xz009/MACRO.ASM @@ -0,0 +1,83 @@ +; --------------------------- +; MZ-800 Macro define +; FI:MACRO ver 1.0 7.26.84 +; --------------------------- +; +; + MACRO SVC + RST 3 + DEFB @1 + ENDM +; + MACRO IOCALL + LD IX,(@1) + CALL IOCALL + ENDM +; + MACRO TEST1 + CALL TEST1 + DEFB @1 + ENDM +; + MACRO TESTX + CALL TESTX + DEFB @1 + ENDM +; + MACRO DEF8 + DEFW @2@1H + DEFW @4@3H + DEFW @6@5H + DEFW @8@7H + ENDM +; + MACRO DEF5 + DEFW @2@1H + DEFW @4@3H + DEFB @5H + ENDM +; + MACRO REP5 + @1 @2 + @1 @2 + @1 @2 + @1 @2 + @1 @2 + ENDM +; + MACRO SVCT +@2: EQU @1H + DEFW @3 + ENDM + END + + MACRO TBL + DEFM "@1" + DEFB "@2"+80H + ENDM + + MACRO ENTRY +ER@1: ENT + LD A,@1 + DEFB 21H + ENDM + + MACRO FKEY + DEFB FNB@1E-FNB@1S +FNB@1S: DEFM @2 + IFD @3 + DEFB @3 + ENDIF +FNB@1E: DEFS FNB@1S+15-FNB@1E + ENDM + + MACRO ERENT +ER@1: ENT + IFD @2 + LD A,@1+80H + ENDIF + IFU @2 + LD A,@1 + ENDIF + DEFB 21H + ENDM diff --git a/software/asm/mz-xz009/MON-EMM.ASM b/software/asm/mz-xz009/MON-EMM.ASM new file mode 100644 index 0000000..9c37cd6 --- /dev/null +++ b/software/asm/mz-xz009/MON-EMM.ASM @@ -0,0 +1,439 @@ +; ---------------------------- +; Lx-monitor EMM driver +; FI:MON-EMM ver 005 4.27.84 +; ---------------------------- +; + INCLD MACRO +; +$RAM: ENT + DEFW $FD + DEFM "RAM" + DEFB 0 + DEFB 5FH + DEFB 20H ;1WOPN + DEFB 32 ;Max dir + DEFW EMINI ;INIT + DEFW EMRINF + DEFW EMWINF + DEFW EMON + DEFW 1024 + DEFW EMRDAT + DEFW EMWDAT + DEFW EMDEL + DEFW EMWDIR + DEFW EMFRKB +; +EMFRKB: CALL EMFRB + LD C,H + LD B,0 ;/256 + SRL C ;/512 + SRL C ;/1024 + OR A + RET +; +EMFRB: PUSH DE + LD HL,0 ;free area(bytes) + CALL EMLD2 ;max + PUSH DE + INC HL + INC HL + CALL EMLD2 ;use + POP HL + SBC HL,DE + JP C,ER41 ;I/O ERR + POP DE + RET +; +; +EMCLR: LD DE,10H +EMSETU: LD HL,2 + CALL EMSV2 ;Set used mem + EX DE,HL + LD DE,0 + JP EMSV2 ;File end mark + SKP H + +; +EMINI: RET C + LD A,(EMFLG) + OR A + JP Z,ER50 + CALL OKYN + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + PUSH HL + CALL EMCLR + POP HL + TEST1 0 + CALL TEST1 + DEFB 0 + ENDM + RET Z ;INIT "EM:" + SVC .DEASC ;INIT "EM:$hhhh" + RST 3 + DEFB .DEASC + ENDM +EMINI2: LD HL,0 + DI + LD B,1 + LD A,D + AND FCH + CP FCH + LD HL,FFFFH + JR Z,EMINI3 ;if >=FC00 then FFFF + LD B,3 + LD A,D + OR A + LD HL,20H + JR NZ,+3 ;if <=00FF then 0020 +EMINI3: EX DE,HL + LD A,B + LD (EMFLG),A + LD HL,0 + CALL EMSV2 ;Set max mem + CALL PBCCLR + EI + RET + SKP H + +; +; EMM power on routine +; +EMMPWR: ENT + LD HL,8 + LD B,L + LD C,0 +EMPWR2: CALL EMLD1 + SUB L + OR C + LD C,A + LD A,L + CALL EMSV1 + INC L + DJNZ EMPWR2 + LD A,C + OR A + JR NZ,EMPWR4 + LD HL,0 ;already initialized + CALL EMLD2 + LD A,2 + INC D + JR Z,+3 + INC A + LD (EMFLG),A + JP PBCCLR +EMPWR4: CALL EMCLR + LD HL,0 ;check EMM installed? + LD A,5AH + CALL EMSV1 + CALL EMLD1 + SUB 5AH + LD DE,C000H ;Initial set 48KB + JR Z,EMINI2 + XOR A + LD (EMFLG),A + RET + SKP H + +; +; Dir search start +; +EMON: LD A,(EMFLG) + OR A + JP Z,ER50 + LD HL,10H + LD (EMPTR),HL + RET +; +; Read inf +; ent HL:adrs +; +EMRINF: LD BC,HL + LD HL,(EMPTR) + CALL EMLD2 + LD A,D + OR E + SCF + RET Z + INC HL + INC HL + PUSH HL + ADD HL,DE + JP C,ER41 ;I/O ERR + LD (EMPTR),HL + POP HL + INC HL + INC HL + INC HL + LD DE,BC + LD BC,32-2 + CALL EMLDD + LD BC,32+2 + ADD HL,BC + EX DE,HL + LD M,E ;Save data area adrs + INC HL + LD M,D + OR A + RET +; +; Read data +; ent HL:buffer adrs +; BC:byte size +; +EMRDAT: EX DE,HL + LD L,(IY+30) + LD H,(IY+31) + INC HL + INC HL + INC HL + CALL EMLDD + LD (IY+30),L + LD (IY+31),H + OR A + RET + SKP H + +; +; Write file +; HL:inf adrs +; +EMWINF: PUSH AF + CALL SERFLW + PUSH HL + LD HL,2 + CALL EMLD2 + LD (EMWP0),DE + PUSH DE + LD HL,64+7 + ADD HL,DE + CALL EMFRE? ;Check file space + POP DE + INC DE + INC DE + POP HL ;inf adrs + LD BC,64 + POP AF + CALL EMSVB + LD (EMWP1),DE + RET + SKP H + +; +; Write data +; HL:data adrs +; BC:data bytes +; A0:close flag +; +; +EMWDAT: PUSH AF + PUSH HL + PUSH BC + LD HL,(EMWP1) + INC BC + INC BC + INC BC + ADD HL,BC + CALL EMFRE? + POP BC + POP HL + LD DE,(EMWP1) + POP AF + PUSH AF + OR 01H ;data block + CALL EMSVB + LD (EMWP1),DE + POP AF + BIT 2,A ;close ? + RET Z ;no + PUSH DE ;yes + CALL EMSETU + POP HL + LD DE,(EMWP0) + DEC HL + DEC HL + OR A + SBC HL,DE + EX DE,HL + JP EMSV2 +; +; +EMFRE?: JR C,ER53A + PUSH HL + LD HL,0 + CALL EMLD2 + OR A + POP HL + SBC HL,DE + RET C +ER53A: JP ER53 ;No file pace + SKP H + +; +; delete file +; +EMDEL: LD HL,(ELMD30) + LD DE,-64-5 + ADD HL,DE ;HL:=move destination + CALL EMLD2 ;DE:=delete size - 2 + EX DE,HL ;DE:=move destination + ADD HL,DE + INC HL + INC HL ;HL:=move source + PUSH DE + PUSH HL + LD HL,2 + CALL EMLD2 + EX DE,HL ;HL:=last use + POP DE ;DE:=move source + PUSH DE + OR A + SBC HL,DE + INC HL + INC HL + LD BC,HL ;BC:=move bytes + POP HL ;HL:=move source + POP DE ;DE:=move destination + CALL EMLDIR + DEC DE + DEC DE ;DE:=new last-use + LD HL,2 + JP EMSV2 +; +; write dir +; +EMWDIR: LD HL,(ELMD30) + LD DE,-64 + ADD HL,DE + EX DE,HL + LD HL,ELMD + LD BC,32 + JP EMSVD + SKP H + +; +EM.P0: EQU EAH +EM.P1: EQU EBH +; +; EMM 1 Byte Write +; ent A: data +; HL:EMM adrs +; +EMSV1: ENT + PUSH BC + LD C,EM.P1 + LD B,H + OUT (C),L + OUT (EM.P0),A + POP BC + OR A + RET +; +; EMM 1 Byte Read +; ent HL:EMM adrs +; ext A: dat +; +EMLD1: ENT + PUSH BC + LD C,EM.P1 + LD B,H + OUT (C),L + IN A,(EM.P0) + POP BC + OR A + RET +; +; EMM 2 Byte Write +; ent DE:data +; HL:EMM adrs +; +EMSV2: ENT + LD A,E + CALL EMSV1 + INC HL + LD A,D + CALL EMSV1 + DEC HL + RET +; +; EMM 2 Byte Read +; ent HL:EMM adrs +; DE:data +; +EMLD2: ENT + CALL EMLD1 + LD E,A + INC HL + CALL EMLD1 + LD D,A + DEC HL + RET + SKP H + +; +; EMM write block +; ent HL :data Top +; DE :EMM Adrs +; BC :byte Size +; A :block flag +; +EMSVB: EX DE,HL + CALL EMSV1 + INC HL + LD A,C + CALL EMSV1 + INC HL + LD A,B + CALL EMSV1 + INC HL + EX DE,HL +EMSVD: ENT + EX DE,HL +EMSVE: LD A,(DE) + CALL EMSV1 + INC HL + INC DE + DEC BC + LD A,B + OR C + JR NZ,EMSVE + EX DE,HL + RET +; +; EMM BC Byte Read +; ent DE :Store Top +; HL :EMM Adrs +; BC :Byte Size +; +EMLDD: ENT + CALL EMLD1 + LD (DE),A + INC HL + INC DE + DEC BC + LD A,B + OR C + RET Z + JR EMLDD +; +; EMM BC Byte LDIR +; ent HL :EMM source top +; DE :EMM destination top +; BC :Byte Size +; +EMLDIR: ENT + CALL EMLD1 ;EMM (HL) Data => Acc + EX DE,HL + CALL EMSV1 ;Acc => (DE) EMM + EX DE,HL + INC HL + INC DE + DEC BC + LD A,B + + OR C + RET Z ;End + JR EMLDIR + END diff --git a/software/asm/mz-xz009/MON-GRPH.ASM b/software/asm/mz-xz009/MON-GRPH.ASM new file mode 100644 index 0000000..d134a50 --- /dev/null +++ b/software/asm/mz-xz009/MON-GRPH.ASM @@ -0,0 +1,2983 @@ +; ------------------------------- +; MZ-800 Monitor Graphic-package +; FI:MON-GRPH ver 1.0A 9.05.84 +; +; ------------------------------- +; +; + INCLD MACRO +KEYBF: EQU 11A4H ;KEYBUF label +;------------------------------- +; +; INIT "CRT: +; +;------------------------------- +CRTINI: ENT + TEST1 'M' + CALL TEST1 + DEFB 'M' + ENDM + JR Z,CRMD + OR A + JR Z,ICRT + CP 'B' + JP NZ,ER03 +;------------------------------- +; +; CRT palette block +; +;------------------------------- +; +PBLOCK: XOR A + LD (PALBK),A + LD A,(CRTMD2) + CP 2 + JP NZ,ER68 + INC HL + LD B,4 + CALL DEVASC + LD (PALBK),A + SVC .DPLBK + RST 3 + DEFB .DPLBK + ENDM + JR CRTLP +; +;--------------------------------- +; +; CRT mode +; +; 1.....320x200 4 Color +; 2.....320x200 16 Color +; 3.....640x200 2 Color +; 4.....640x200 4 Color +; +;--------------------------------- +; +CRMD: LD B,5 + CALL DEVASC + OR A + JR Z,ER3JP + + LD B,A + SVC .DSMOD + RST 3 + DEFB .DSMOD + ENDM + JP C,ER68 + LD A,B + LD (CRTMD2),A + XOR A + LD (INPFLG),A + SCF + ADC A,A + DJNZ -1 + LD (CRTMD1),A + CALL ICRT2 +; +CRTLP: TEST1 0 + CALL TEST1 + DEFB 0 + ENDM + RET Z + CP ',' + INC HL + JR Z,CRTINI +ER3JP: JP ER03 +; +ICRT: ENT + LD A,(CRTMD2) + SVC .DSMOD + RST 3 + DEFB .DSMOD + ENDM +ICRT2: CALL COLINI + XOR A + LD (PALBK),A + SVC .DPLBK + RST 3 + DEFB .DPLBK + ENDM + RET +; +COLINI: LD A,(CRTMD1) + LD B,3 + RRA + JR C,CI1 + LD B,15 + RRA + JR C,CI1 + LD B,1 + RRA + JR C,CI1 + LD B,3 +CI1: LD A,B + LD (SELCOL),A + SVC .DCOL + RST 3 + DEFB .DCOL + ENDM + RET + SKP H + +;------------------------ +; +; +; BYTE CONVERT TABLE +; +;----------------------- +TDOTL: ENT + DEFB FFH + DEFB FEH + DEFB FCH + DEFB F8H + DEFB F0H + DEFB E0H + DEFB C0H + DEFB 80H +; +TDOTR: ENT + DEFB 01H + DEFB 03H + DEFB 07H + DEFB 0FH + DEFB 1FH + DEFB 3FH + DEFB 7FH + DEFB FFH +; +TDOTN: ENT + DEFB 01H + DEFB 02H + DEFB 04H + DEFB 08H + DEFB 10H + DEFB 20H + DEFB 40H + DEFB 80H +;------------------------------- +; +; // 64 - 32 TRANS // +; +;------------------------------- +; +CHGRPH: ENT + LD BC,703H + LD HL,CHGTBL + JP PATCH +; +; +CHGTBL: +; word patch table +; + DEFW SYMS42+1 + DEFW BE80H + DEFW 9F40H +; + DEFW RNGCK0+1 + DEFW -640 + DEFW -320 +; + DEFW LRBSR + DEFW 640 + + DEFW 320 +; + DEFW BFL0+1 + DEFW 80 + DEFW 40 +; + DEFW BFL1+1 + DEFW 80 + DEFW 40 +; + DEFW BFC0+1 + DEFW -640 + DEFW -320 +; + DEFW BFC1+1 + DEFW 639 + DEFW 319 +; +; byte patch table +; + DEFW ADCH ;adrs + DEFB 29H ;640 ADD HL,HL + DEFB 00H ;320 +; + DEFW SYMS21+1 + DEFB 80 + DEFB 40 +; + DEFW SYMS41+1 + DEFB 80 + DEFB 40 +; + SKP H + +;---------------------------------- +; +; address calc +; +; +; ent. de=x (0-13FH,27FH) +; hl=y (0-C7H) +; +; ext. hl=vram addr +; a=vram bit +; c=de/8 +;---------------------------------- +ADCH: ADD HL,HL ;NOP + LD A,E + AND 7 + LD B,A +; + LD A,E + AND F8H + ADD A,D + RRCA + RRCA + RRCA + LD C,A + LD A,B + LD B,80H ;vramh + LD D,H + LD E,L + ADD HL,HL + ADD HL,HL + ADD HL,DE + ADD HL,HL + ADD HL,HL + ADD HL,HL ;HL=HL*40 + ADD HL,BC + RET +;----------------------------- +; +; READ POINT +; +; Ent:DE=X (0-13FH,27EH) +; HL=Y (0-C7H) +; +;----------------------------- +?POINT: ENT + CALL RNGCK + JP C,OVER + CALL ADCH +; + RLCA + RLCA + RLCA + OR 46H + LD (PNT2+1),A + LD C,LSRF + LD A,(MAXCF) + LD B,A +; + DI + IN A,(LSE0) + + XOR A +PNT1: RR B + JR C,PNT4 + OUT (C),B + OR A +PNT2: BIT 0,(HL) ;bit n,(hl) + JR Z,PNT3 + SCF +PNT3: RLA + JR PNT1 +; +PNT4: LD B,A + IN A,(LSE1) + EI + LD A,(CPLANE) + AND B + LD B,A + LD A,(DMD) + CP 6 + LD A,B + RET NZ +; + CP 4 + RET C +; + SUB 2 + RET + SKP H + +;--------------------------------- +; +; +; MODE SET (PWMODE,GMODE) +; +; ent. A= 0 RESET +; A<>0 SET +;--------------------------------- +SETW: LD A,FFH +MODSET: PUSH BC + OR A + LD A,(GMODE) + LD C,A + LD A,(PWMODE) + JR Z,RESET +; +SET: OR A + LD A,C0H ;w0 pset + JR Z,SET1 + LD A,40H ;w1 or +; +SET1: OR C + OUT (LSWF),A ;Write mode set + POP BC + RET +; +; +RESET: OR A + LD A,60H ;w1 reset + JR NZ,SET1 +; + LD A,(CPLANE) + LD B,A + LD A,C ;reverse color + CPL + AND B ;mask color + OR C0H ;w0 pset mode + OUT (LSWF),A ;Write mode set + POP BC + RET + SKP H + +;----------------------------- +; +; Point Write/Erase +; +; Ent:DE=X (0-13FH,27EH) +; HL=Y (0-C7H) +; +;----------------------------- +PSET: ENT + CALL MODSET +PSET0: CALL RNGCK + JP C,OVER + CALL ADCH + EX DE,HL + LD HL,TDOTN + LD B,0 + LD C,A + ADD HL,BC + DI + IN A,(LSE0) + LDI + IN A,(LSE1) + EI + XOR A + RET +; +; +;-------------------------------- +; +; RANGE CHECK +; +; Ent:DE=X (0-13FH,27EH) +; HL=Y (0-C7H) +; +; ext:if over then CF=1 +; +;-------------------------------- +RNGCK: ENT + PUSH BC + PUSH DE + PUSH HL + LD A,H + RLCA + JR C,RNGER +; + LD BC,-200 + ADD HL,BC + JR C,RNGER +; + LD A,D + RLCA + JR C,RNGER +; + EX DE,HL +RNGCK0: LD BC,-640 ;-320 + ADD HL,BC +RNGER: POP HL + POP DE + POP BC + RET + +; +; + SKP H + +;------------------------------ +; +; Draw line +; +; ent DE':X0, DE:X +; HL':Y0, HL:Y +; A := 0 BLINE +; <>0 LINE +; +; ext DE':X +; HL':Y +;------------------------------- +; +; +X0: EQU KEYBF ;2 +DX: EQU X0+2 ;2 +XDIRE: EQU DX+2 ;1 +Y0: EQU XDIRE+1 ;2 +DY: EQU Y0+2 ;2 +YDIRE: EQU DY+2 ;1 +; +; +WLINE0: LD A,FFH +WLINE: ENT + CALL MODSET + PUSH DE + PUSH HL + EXX + LD (X0),DE + LD (Y0),HL + EXX + PUSH HL ;y + PUSH DE ;x + EX DE,HL + LD HL,(Y0) + CALL PLS + LD (YDIRE),A + LD (DY),HL + POP DE ;x + JP NC,WYLIN ;skip if y=y0 + PUSH HL ;dy + LD HL,(X0) + CALL PLS + LD (XDIRE),A + LD (DX),HL + POP BC ;dy + POP DE ;y + JP NC,WTLIN ;skip if x=x0 + XOR A + SBC HL,BC + JR NC,WLIN04 ;skip if dx>dy + LD HL,X0 ;parameter change + LD DE,Y0 + LD B,5 +WLIN02: LD A,(DE) + LD C,M + LD M,A + LD A,C + LD (DE),A + INC HL + + INC DE + DJNZ WLIN02 +; + LD A,0EBH ;ex de,hl +WLIN04: LD (PLOT),A + LD (PLOT1),A + LD A,(YDIRE) + AND A + LD A,23H ;inc hl + JR Z,DIRE1 + LD A,2BH ;dec hl +DIRE1: LD (PP2),A +; + LD A,(XDIRE) + AND A + LD A,13H ;inc de + JR Z,DIRE2 + LD A,1BH ;dec de +DIRE2: LD (PP1),A +; + EXX + LD HL,(DX) ;initial parm set + LD D,H + LD E,L + SRL H + RR L + LD BC,(DY) + EXX +; + LD HL,(Y0) ;first point set + LD DE,(X0) + LD BC,(DX) +; +PLOT: EX DE,HL ;nop + PUSH HL + PUSH DE + PUSH BC + CALL PSET0 + POP BC + POP DE + POP HL +PLOT1: EX DE,HL ;nop +; +; + DEC BC + LD A,B + INC A + JR Z,FINW ;skip if end of line +; +; pointer calc . +; +PP1: DEFS 1 ;inc de/dec de + EXX + OR A + SBC HL,BC + EXX + JP NC,PLOT + EXX + ADD HL,DE + EXX + +PP2: DEFS 1 ;inc hl/dec hl + JP PLOT +; +; +FINW: EXX + POP HL + POP DE + EXX + RET +; +WYLIN: POP HL ;Y +WYLIN0: CALL WBOXSB + CALL WBOXSB + CALL YLINE + JR FINW +; +WTLIN: EX DE,HL + LD DE,(X0) + JR WYLIN0 +; +; +; +PLS: LD A,H + ADD A,40H + LD H,A + LD A,D + ADD A,40H + LD D,A +; + OR A + SBC HL,DE + JR C,PLS1 + LD A,H + OR L + RET Z +OVER: LD A,FFH + SCF + RET +; +PLS1: OR A + EX DE,HL + LD HL,0 + SBC HL,DE + XOR A + SCF + RET + SKP H + +;------------------------- +; +; +; Write sector +; +;------------------------- +; +WSECTR: CALL WSPUT + LD HL,(POINTX) + PUSH HL + PUSH BC ;POINTY + EXX + CALL WSPUT + LD B,2 + JP WBOX2 +; +WSPUT: POP IX ;Ret adrs + EX DE,HL + CP 2 + CALL Z,WSCTRH + LD BC,(POINTX) + ADD HL,BC + PUSH HL ;X + EX DE,HL + CP 1 + CALL Z,WSCTRH + LD BC,(POINTY) + ADD HL,BC + PUSH HL ;Y + JP (IX) +; +WSCTRH: BIT 7,H + JP Z,HIRITU + CALL WSCTRV + CALL HIRITU +WSCTRV: EX AF,AF' + CALL NEGHL + EX AF,AF' + RET + SKP H + +; +;----------------------------- +; +; Circle Write +; ent DE:End X DE':Start X +; HL:End Y HL':Start Y +; IX:R BC':Hiritu +; A:Angle flag +; if CF then sector +; +; uses KEYBUF +;----------------------------- +WCIRCL: ENT + PUSH AF + CALL SETW ;set pwmode + POP AF + PUSH AF + LD (CIR3+1),IX ;R + LD (SYUX),DE + LD (SYUY),HL + EXX + LD (CIR.HF),BC + LD (KAIX),DE + LD (KAIY),HL + LD A,C ;CIR.HF + CALL C,WSECTR + LD HL,(KAIX) + LD DE,(KAIY) +;Å BLOCK NO."Ù\Ü/BL \ÄÙ + CALL BLCKRU + LD (KBL),A + LD HL,(SYUX) + LD DE,(SYUY) +;Å BLOCK NO."Ù\Ü/SBL \mÄÙ + CALL BLCKRU + LD (SBL),A +; + LD HL,CIR.BK + LD B,8 + CALL ?CLRHL + LD HL,KBL + POP AF + LD B,A + AND 0FH + JR Z,CIR4 ;KK=SK + CP 3 + JR Z,CIR15 ;2PI <= ABS(KK-SK) + LD A,M + INC HL + CP M + JR NZ,CIR4 + LD A,B + CP 81H + JR Z,CIR4 + JR CIR14 +; +CIR15: LD A,9 + LD M,A + INC HL + LD M,A + +CIR14: LD B,8 + LD HL,CIR.BK + INC A + CALL ?SETHL + LD A,B0H ;OR B + CALL CHENGE + JR CIR3 +; +CIR4: LD A,A0H ;AND B + CALL CHENGE + LD D,00H + LD HL,(KBL) + LD B,H + LD A,L +CIR2: LD HL,CIR.BK-1 + LD E,A + ADD HL,DE + LD M,1 + CP B ;\s\ÛÛÚjlÄ \mÛÛÚjli Ã\l + JR Z,CIR3 + AND 7 + INC A + JR CIR2 +CIR3: LD HL,0 ;;;R + LD (DYY),HL + LD (XX),HL + LD HL,1 + LD (CI.D),HL + LD (YY),HL +CIR7: LD HL,(DYY) + LD DE,(CI.D) + XOR A + SBC HL,DE + LD (DYY),HL +; + LD HL,(YY) + DEC HL + LD (CYE),HL + LD A,(CIR.HF) + OR A + LD DE,HL + CALL NZ,HIRITU + CP 1 + JR Z,+3 + EX DE,HL + LD (YYY),DE + LD (YYHI),HL +; + LD HL,(XX) + OR A + LD DE,HL + CALL NZ,HIRITU + CP 1 + JR Z,+3 + EX DE,HL + LD (XXX),DE + LD (XXHI),HL +; + LD HL,(XXX) + CALL NEGHL + + LD (FUXX),HL ;FUXX = -XXX + LD HL,(YYY) + CALL NEGHL + LD (FUYE),HL ;FUYE = -YYY + LD HL,(YYHI) + CALL NEGHL + LD (FUYYHI),HL ;FUYYHI = -YYHI + LD HL,(XXHI) + CALL NEGHL + LD (FUXXHI),HL ;FUXXHI = -XXHI + LD HL,(CYE) + CALL NEGHL + LD (FUNOYE),HL ;FUNOYE = -YE +; + LD HL,CIR.BK + LD A,M ;BLOCK NO.1 + OR A + INC HL + JR Z,P222 + EXX + LD HL,(XXX) + LD (PL1+1),HL + LD B,0 + LD DE,(FUNOYE) + BIT 7,D + JR Z,P12 + LD A,(KBL) + CP 1 + JR NZ,P11 + LD HL,(KAIY) + XOR A + SBC HL,DE + JR Z,P11 + JR C,P12 +P11: INC B +P12: LD A,(SBL) + CP 1 + JR NZ,P13 + LD HL,(SYUY) + XOR A + SBC HL,DE + JR Z,P13 + JR NC,P14 +P13: LD A,1 +P14: AND B + JR Z,P15 + LD HL,(FUYYHI) + CALL PLALL +P15: EXX +; +P222: LD A,M ;BLOCK NO.2 + OR A + INC HL + JR Z,P3 + EXX + LD B,0 + LD HL,(YYY) + LD (PL1+1),HL + LD DE,(CYE) + LD A,(KBL) + + CP 2 + JR NZ,P21 + LD HL,(KAIX) + XOR A + SBC HL,DE + JR Z,P21 + JR C,P22 +P21: INC B +P22: LD A,(SBL) + CP 2 + JR NZ,P23 + LD HL,(SYUX) + XOR A + SBC HL,DE + JR Z,P23 + JR NC,P24 +P23: LD A,1 +P24: AND B + JR Z,P25 + LD HL,(FUXXHI) + CALL PLALL +P25: EXX +; +P3: LD A,M ;BLOCK NO.3 + OR A + INC HL + JR Z,P4 + EXX + LD B,0 + LD HL,(FUYE) + LD (PL1+1),HL + LD DE,(FUNOYE) + BIT 7,D + JR Z,P32 + LD A,(KBL) + CP 3 + JR NZ,P31 + LD HL,(KAIX) + XOR A + SBC HL,DE + JR Z,P31 + JR C,P32 +P31: INC B +P32: LD A,(SBL) + CP 3 + JR NZ,P33 + LD HL,(SYUX) + XOR A + SBC HL,DE + JR Z,P33 + JR NC,P34 +P33: LD A,1 +P34: AND B + JR Z,P35 + LD HL,(FUXXHI) + CALL PLALL +P35: EXX +; +P4: LD A,M ;BLOCK NO.4 + OR A + + INC HL + JR Z,P5 + EXX + LD B,0 + LD HL,(FUXX) + LD (PL1+1),HL + LD DE,(FUNOYE) + LD A,(KBL) + CP 4 + JR NZ,P41 + LD HL,(KAIY) + XOR A + SBC HL,DE + JR Z,P41 + JR NC,P42 +P41: INC B +P42: XOR A + BIT 7,D + JR Z,P44 + LD A,(SBL) + CP 4 + JR NZ,P43 + LD HL,(SYUY) + XOR A + SBC HL,DE + JR Z,P43 + JR C,P44 +P43: LD A,1 +P44: AND B + JR Z,P45 + LD HL,(FUYYHI) + CALL PLALL +P45: EXX +; +P5: LD A,M ;BLOCK NO.5 + OR A + INC HL + JR Z,P6 + EXX + LD B,0 + LD HL,(FUXX) + LD (PL1+1),HL + LD DE,(CYE) + LD A,(KBL) + CP 5 + JR NZ,P51 + LD HL,(KAIY) + XOR A + SBC HL,DE + JR Z,P51 + JR NC,P52 +P51: INC B +P52: LD A,(SBL) + CP 5 + JR NZ,P53 + LD HL,(SYUY) + XOR A + SBC HL,DE + JR Z,P53 + JR C,P54 + +P53: LD A,1 +P54: AND B + JR Z,P55 + LD HL,(YYHI) + CALL PLALL +P55: EXX +; +P6: LD A,M ;BLOCK NO.6 + OR A + INC HL + JR Z,P7 + EXX + LD B,0 + LD HL,(FUYE) + LD (PL1+1),HL + LD DE,(FUNOYE) + LD A,(KBL) + CP 6 + JR NZ,P61 + LD HL,(KAIX) + XOR A + SBC HL,DE + JR Z,P61 + JR NC,P62 +P61: INC B +P62: XOR A + BIT 7,D + JR Z,P64 + LD A,(SBL) + CP 6 + JR NZ,P63 + LD HL,(SYUX) + XOR A + SBC HL,DE + JR Z,P63 + JR C,P64 +P63: LD A,1 +P64: AND B + JR Z,P65 + LD HL,(XXHI) + CALL PLALL +P65: EXX +; +P7: LD A,M ;BLOCK NO.7 + OR A + INC HL + JR Z,P8 + EXX + LD HL,(YYY) + LD (PL1+1),HL + LD DE,(CYE) + LD B,0 + LD A,(KBL) + CP 7 + JR NZ,P71 + LD HL,(KAIX) + XOR A + SBC HL,DE + JR Z,P71 + JR NC,P72 + +P71: INC B +P72: LD A,(SBL) + CP 7 + JR NZ,P73 + LD HL,(SYUX) + XOR A + SBC HL,DE + JR Z,P73 + JR C,P74 +P73: LD A,1 +P74: AND B + JR Z,P75 + LD HL,(XXHI) + CALL PLALL +P75: EXX +; +P8: LD A,M ;BLOCK NO.8 + OR A + INC HL + JR Z,PE + EXX + LD HL,(XXX) + LD (PL1+1),HL + LD DE,(CYE) + LD B,0 + LD A,(KBL) + CP 8 + JR NZ,P81 + LD HL,(KAIY) + XOR A + SBC HL,DE + JR Z,P81 + JR C,P82 +P81: INC B +P82: LD A,(SBL) + CP 8 + JR NZ,P83 + LD HL,(SYUY) + XOR A + SBC HL,DE + JR Z,P83 + JR NC,P84 +P83: LD A,1 +P84: AND B + JR Z,P85 + LD HL,(YYHI) + CALL PLALL +P85: EXX +; +PE: LD HL,(DYY) ;Zs"Ù\o + BIT 7,H + JR Z,CIR10 + LD DE,(YY) + LD HL,(XX) + DEC HL + LD (XX),HL + BIT 7,H + RET NZ + XOR A + SBC HL,DE + + RET C + LD HL,(XX) + ADD HL,HL + LD DE,(DYY) + ADD HL,DE + LD (DYY),HL +CIR10: LD HL,(YY) + INC HL + LD (YY),HL + LD HL,(CI.D) + INC HL + INC HL + LD (CI.D),HL + JP CIR7 +; +;CIRCLE "ÛÛÜ-ÞÙ +; +;BLOCK NUMBER ZÙ\Ü "ÛÛÜ-ÞÙ +BLCKRU: PUSH HL + PUSH DE + CALL ABSHL + EX DE,HL + CALL ABSHL + EX DE,HL + OR A + SBC HL,DE + POP DE + POP HL + JR C,BLCK1 + BIT 7,H + JR NZ,BLCK2 + BIT 7,D + LD A,8 + RET Z + LD A,1 + RET +BLCK2: BIT 7,D + LD A,5 + RET Z + LD A,4 + RET +BLCK1: BIT 7,H + JR NZ,BLCK5 + BIT 7,D + LD A,7 + RET Z + LD A,2 + RET +BLCK5: BIT 7,D + LD A,6 + RET Z + LD A,3 + RET +; +ABSHL: BIT 7,H + RET Z +NEGHL: LD A,H + CPL + LD H,A + LD A,L + + CPL + LD L,A + INC HL + RET +; +;PLOT Ü-ÞÙ +PLALL: LD DE,(POINTY) + ADD HL,DE + LD DE,65336 + LD B,H + LD C,L + ADD HL,DE + RET C +PL1: LD HL,0000H ;LKD HL,XXXXH + LD DE,(POINTX) + ADD HL,DE + EX DE,HL + LD HL,64896 + ADD HL,DE + RET C + LD H,B + LD L,C + JP PSET0 +; +; +;ÃßÜ Zs"Ù Ü-ÞÙ +HIRITU: ENT + PUSH AF + PUSH DE + LD B,8 + LD C,L + LD E,H + XOR A + LD D,A + LD H,A + LD L,A + EX AF,AF' + LD A,(CIR.HD) +HR1: RRA + JR NC,HR2 + ADD HL,DE + EX AF,AF' + ADD A,C + JR NC,HR3 + INC HL +HR3: EX AF,AF' +HR2: SLA C + RL E + RL D + DJNZ HR1 + EX AF,AF' + BIT 7,A + JR Z,+3 + INC HL + POP DE + POP AF + RET +; +CHENGE: LD (P14),A + LD (P24),A + + LD (P34),A + LD (P44),A + LD (P54),A + LD (P64),A + LD (P74),A + LD (P84),A + RET +; +; work area +; +CI.D: EQU KEYBF ;2 +DYY: EQU CI.D+2 ;2 +XX: EQU DYY+2 ;2 +YY: EQU XX+2 ;2 +CYE: EQU YY+2 ;2 +KBL: EQU CYE+2 ;1 \ÄÙÛ BLOCK NO. +SBL: EQU KBL+1 ;1 \mÄÙÛ BLOCK NO. +; +; +;ÛÛ CYE oÛºlym ÀÙ\ +FUYE: EQU SBL+1 ;2 +;ÛÛ XX oÛºlym ÀÙ\ +FUXX: EQU FUYE+2 ;2 +;ÛÛ CYE ÃßÜ oÛºlym ÀÙ\ +FUYYHI: EQU FUXX+2 ;2 +;ÛÛ XX ÃßÜ oÛºlym ÀÙ\ +FUXXHI: EQU FUYYHI+2 ;2 +; +FUNOYE: EQU FUXXHI+2 ;2 +; +CIR.BK: EQU FUNOYE+2 ;9 Block data +; +; +KAIX: EQU CIR.BK+9 ;2 \ÄÙ X +KAIY: EQU KAIX+2 ;2 \ÄÙ Y +SYUX: EQU KAIY+2 ;2 \mÄÙ X +SYUY: EQU SYUX+2 ;2 \mÄÙ Y +XXHI: EQU SYUY+2 ;2 XXÛ ÃßÜ DATA +YYHI: EQU XXHI+2 ;2 YEÛ ÃßÜ DATA +; +XXX: EQU YYHI+2 ;2 +YYY: EQU XXX+2 ;2 +; +CIR.HF: EQU YYY+2 ;1 +CIR.HD: EQU CIR.HF+1 ;1 +; + SKP H + +; ---------------------------- +; +; Box Write +; ext DE':xs, DE:xe +; HL':ys, HL:ye +; +; if CF then A:fill color +; +; ---------------------------- +LSTA: EQU KEYBF +RSTA: EQU LSTA+2 +SPBOX: EQU RSTA+2 +; +WBOX: ENT + LD (SPBOX),SP + EX AF,AF' + CALL WBOXSB + CALL WBOXSB + EXX + PUSH DE ;XS Upper + PUSH HL ;YS + PUSH DE ;XS Lower + EXX + PUSH HL ;YE + PUSH DE ;XE Lower + PUSH HL ;YE + PUSH DE ;XE Upper + EXX + PUSH HL ;YS + PUSH DE ;XS Upper Left + PUSH HL ;YS + EXX + EX AF,AF' + CALL C,BOXF ;Box fill + LD B,4 +WBOX2: EXX + POP HL + POP DE + EXX +WBOX4: POP HL + POP DE + PUSH BC + CALL WLINE0 ;Box bound + POP BC + DJNZ WBOX4 + RET +; +WBOXSB: EX DE,HL + LD A,H ;Compare HL,HL' + EXX + EX DE,HL + CP H + EXX + JR Z,WBOXS2 + RET P + JR WBOXS4 +WBOXS2: LD A,L + EXX + CP L + EXX + + RET NC +WBOXS4: PUSH HL + EXX + EX (SP),HL + EXX + POP HL + RET +; +;-------------------------- +; +; BOX FILL +; +; ent DE':xs, DE:xe +; HL':ys, HL:ye +; A:fill color +; +;-------------------------- +BOXF: + CALL COLS ;Fill Color Set + LD B,A + LD A,(GMODE) + CP B + JR NZ,BOXC + LD SP,(SPBOX) ;line routions pop +BOXC: LD A,(PWMODE) + OR A + LD A,C0H ;w0 pset + JR Z,BOXF0 + LD A,40H ;w0 or +BOXF0: OR B + OUT (LSWF),A ;Write mode set +; +YLINE: LD A,H + OR D + RET M + CALL BFCHK + LD A,L ;ye +; + EXX ;hl=ys,de=xs + BIT 7,H + JR Z,+5 + LD HL,0 + BIT 7,D + JR Z,+5 +; + LD DE,0 + EX AF,AF' + CALL BFCHK + RET C + EX AF,AF' ;ye +; + INC A + SUB L ;acc=lines(ye-ys+1) + RET C + RET Z + EX AF,AF' ;acc'=lines +; + PUSH HL ;ye + CALL ADCH + LD (LSTA),HL + + EXX + POP HL ;ye + LD B,A ;left + PUSH BC + CALL ADCH + POP BC + LD (RSTA),HL + LD C,A ;right + LD DE,(LSTA) +; +HLINE: OR A + SBC HL,DE + JR Z,BOXI + DEC HL + INC DE ;next point + LD A,L + OR A + CALL NZ,BOXL ;a' reserve +; +BOXH: LD HL,TDOTR + LD A,B + LD B,0 + ADD HL,BC + LD L,(HL) + LD C,A + LD A,L + LD HL,TDOTL + ADD HL,BC + LD B,(HL) +; +; + LD DE,(RSTA) + PUSH BC + CALL BOXW + POP BC + LD DE,(LSTA) + LD A,B + JR BOXW +; +; +; +; +BOXI: LD HL,TDOTR + LD A,B + LD B,0 + ADD HL,BC + LD C,A + LD A,FFH + AND (HL) + LD HL,TDOTL + ADD HL,BC + AND (HL) +; +; +BOXW: + LD C,A + EX AF,AF' + LD B,A + EX AF,AF' + EX DE,HL + + DI +BFL0: LD DE,80 ;40 + IN A,(LSE0) +BOXW1: LD (HL),C + ADD HL,DE + DJNZ BOXW1 + IN A,(LSE1) + EI + RET +; +; +; +; +BOXL: PUSH BC + EX DE,HL ;hl=start + LD B,A ;yoko counter + EX AF,AF' + LD C,A ;tate counter + EX AF,AF' +BFL1: LD DE,80 ;40 + DI +BOXL1: PUSH HL + PUSH BC + IN A,(LSE0) + LD A,FFH +BOXL0: LD (HL),A + INC HL + DJNZ BOXL0 + IN A,(LSE1) + POP BC + POP HL + ADD HL,DE + DEC C + JR NZ,BOXL1 + EI + POP BC + RET +; +; + SKP H + +;----------------------------- +; +; box fill range check +; +;----------------------------- +; +BFCHK: LD A,H + OR A + JR NZ,BFCHK0 + LD A,199 + CP L + JR NC,BFCHK1 ;skip if hl>199 +BFCHK0: LD HL,199 + SCF +BFCHK1: RRA ;push cf + PUSH HL +BFC0: LD HL,-640 ;-320 + ADD HL,DE + POP HL + JR NC,BFCHK3 ;skip if de>639,319 +BFC1: LD DE,639 ;319 + RET +; +BFCHK3: RLA ;pop cf + RET +;----------------------------- +; +; Position check +; +;----------------------------- +POSCK: ENT + EXX + CALL RNGCK + EXX + RET NC ;OK + LD A,3 + JP ERRORJ +;----------------------------- +; +; Position save +; +;----------------------------- +POSSV: ENT + EXX ;Position save + LD (POINTX),DE + LD (POINTY),HL + EXX + RET + SKP H + +;---------------------------- +; +; SYMBOL +; +; Ent. A:angle +; B:string length +; H:Y ratio +; L:X ratio +; DE:string address +; +;---------------------------- +; +; +SBDTAP: DEFS 8 +; +SDT0: EQU 1200H +SDT7: EQU 1207H +; +SCNT: EQU 1208H ;1 +HCNT: EQU SCNT+1 ;1 +VCNT: EQU HCNT+1 ;1 +BCNT: EQU VCNT+1 ;1 +; +STRAP: EQU BCNT+1 ;2 +SDTAP: EQU STRAP+2 ;2 +BDTAP: EQU SDTAP+2 ;2 +; +DEFX0: EQU BDTAP+2 ;1 +DEFY0: EQU DEFX0+1 ;1 +DEFX8: EQU DEFY0+1 ;2 +DEFY8: EQU DEFX8+2 ;2 +; +PX: EQU DEFY8+2 ;2 +PY: EQU PX+2 ;2 +; +VADD: EQU PY+2 ;2 +LDOT: EQU VADD+2 ;1 +; +DEFX: EQU LDOT+1 ;1 +DEFY: EQU DEFX+1 ;1 +DEF8: EQU DEFY+1 ;2 +; +NSDT: EQU DEF8+2 ;2 +; +; +CLLADD: DEFW LOD00 + DEFW LOD90 + DEFW LOD18 + DEFW LOD27 +; +; +SYMBOL: ENT + PUSH BC ;string length + PUSH DE ;string address + LD BC,PX + LD D,L + LD E,H + BIT 0,A + JR Z,SYMB10 ;skip acc=0,2 +; + + EX DE,HL ;exchange milti + INC BC + INC BC ;bc=py +; +SYMB10: LD (SYMB18+1),BC + LD (DEFX0),HL + LD H,0 + ADD HL,HL + ADD HL,HL + ADD HL,HL ;defx8=defx*8 + LD (DEFX8),HL +; + LD L,E + LD H,0 + ADD HL,HL + ADD HL,HL + ADD HL,HL ;defy8=defy*8 + LD (DEFY8),HL +; +; +; set py ,def8 +; + LD DE,0 + EX DE,HL ;de=defy8 + SBC HL,DE ;hl=-defy8 + LD (DEF8),HL ;def8=-defy8 + BIT 1,A + JR Z,SYMB11 ;skip if acc=0,1 +; + LD (DEF8),DE ;def8=defy8 +SYMB11: OR A ;HL=-defy8 + JP PO,SYMB12 ;skip if acc=1,2 +; + LD HL,0 +SYMB12: LD DE,(POINTY) + ADD HL,DE ;pointy or pointy-defy8 + LD (PY),HL ;set py +; +; +; set px def8 +; +; + LD DE,(DEFX8) + LD HL,0 + OR A ;de=defx8 + SBC HL,DE ;hl=-defx8 + BIT 0,A + JR NZ,SYMB13 ;skip if acc=1,3 + BIT 1,A + LD (DEF8),DE ;DE=defx8 + JR Z,SYMB13 ;skip if acc=0 + LD (DEF8),HL ;hl=-defx8 +SYMB13: EX DE,HL ;de=-defx8 + LD HL,(POINTX) + BIT 1,A + JR Z,SYMB15 ;skip if acc=0,1 + ADD HL,DE ;pointx or pointx-defx8 +SYMB15: LD (PX),HL ;set px +; +; calc rotation program addr + +; + ADD A,A + LD HL,CLLADD + LD D,0 + LD E,A + ADD HL,DE + LD E,(HL) + INC HL + LD D,(HL) + LD (SYMS10+1),DE +; + CALL SETW ;set pwmode + POP HL + POP BC +; +SYMB17: DEC B ;string count down + RET M +; + PUSH HL + PUSH BC + CALL SYMS +SYMB18: LD HL,PX ;py + LD E,(HL) ;calc px(py)=px(py)+def8 + INC HL + LD D,(HL) + PUSH HL + LD HL,(DEF8) + ADD HL,DE + EX DE,HL + POP HL + LD (HL),D + DEC HL + LD (HL),E ;set next disp addr + POP BC + POP HL + INC HL ;next string pointer + JR SYMB17 + SKP H + +; +; // SYMBOL SUB. // +; +; +; +SYMS: LD IY,SCNT + LD A,(HL) ;mz ascii -> display + SVC .?ADCN ;font addr calc + RST 3 + DEFB .?ADCN + ENDM + LD H,0 + LD L,A + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD A,10H + ADD A,H + LD H,A ;hl=hl+1000H +; + LD DE,SBDTAP ;xfer cg data + LD BC,8 + DI + IN A,(LSE0) + LDIR + IN A,(LSE1) + EI +; + LD B,8 ;rotation pro. +SYMS10: CALL LOD00 ;LODXX +; +; + LD HL,808H + LD (HCNT),HL ;set hcnt,vcnt + LD DE,(DEFX0) + LD (DEFX),DE + LD HL,(PX) + BIT 7,H + JR Z,SYMS20 ;skip if PX>=0 +; + CALL SSYMB + RET C ;error position +; +; +SYMS11: EXX ;data area rotate + LD B,8 + LD HL,SDT0 +SYMS12: RLC (HL) + INC HL + DJNZ SYMS12 + EXX + DJNZ SYMS11 +; + LD HL,0 +SYMS20: LD (SYMS23+1),HL + LD A,F8H + AND L + OR H + RRC A + RRC A + + RRC A +SYMS21: SUB 80 ;40 + RET NC ;buffer full check? +; + LD L,A ;SEND DATA ADD. + LD H,11H + LD (BDTAP),HL + LD HL,(PY) + XOR A + BIT 7,H + JR Z,SYMS22 +; + INC IY + CALL SSYMB + DEC IY + RET C ;error position +; +; + LD HL,0 + LD A,8 + SUB B +SYMS22: LD (SYMS24+1),A +SYMS23: LD DE,0 ;XXH + PUSH HL + PUSH DE + CALL RNGCK + POP DE + POP HL + RET C ;error position +; + CALL ADCH + LD (VADD),HL + LD HL,TDOTN + LD D,0 + LD E,A + ADD HL,DE + LD A,(HL) + LD (LDOT),A +SYMS24: LD HL,SDT0 +SYMS25: LD DE,(BDTAP) + LD BC,(LDOT) ;b defx c ldot + XOR A + EXX + LD B,(IY+1) ;hcnt +; +SYMS30: EXX + LD (DE),A + XOR A +; + RRC (HL) + JR NC,SYMS31 +; + LD A,B1H ;OR C +SYMS31: LD (SYMS32),A + LD A,(DE) +; +SYMS32: OR C ;nop + RLC C + JR NC,SYMS33 + LD (DE),A + + INC E ;next data addr + JR Z,SYMS34 ;skip if buffer full + XOR A +SYMS33: DJNZ SYMS32 +; +SYMS3A: LD B,(IY+0AH) ;defx0 + EXX + DJNZ SYMS30 ;hcnt +; + EXX + LD (DE),A + INC E +; +SYMS34: DEC E + INC L + LD (SDTAP),HL + LD HL,(BDTAP) + EX DE,HL + XOR A + SBC HL,DE + INC HL + LD (NSDT),HL + LD A,(DEFY) + LD B,A ;loop counter set +; +SYMS40: EXX + LD DE,(VADD) + LD HL,(BDTAP) + LD BC,(NSDT) + DI + IN A,(LSE0) + OUT (LSE0),A + LDIR + IN A,(LSE1) + EI +SYMS41: LD DE,80 ;40 + LD HL,(VADD) + ADD HL,DE + LD (VADD),HL ;next disp addr +SYMS42: LD DE,BE80H ;9F40H + OR A + SBC HL,DE + RET NC ;position error check +; + EXX + DJNZ SYMS40 +; +SYMS43: LD A,(DEFY0) ; + LD (DEFY),A ;set loop counter + LD HL,(SDTAP) + DEC (IY+2) ;VCNT + JP NZ,SYMS25 + RET + SKP H + +; +; // rotation sub . // +; +LOD00: LD HL,SBDTAP + LD DE,SDT0 + LD C,B + LD B,0 + LDIR + RET +; +; +LOD90: LD DE,SDT0 +LOD901: EXX + LD HL,SBDTAP + LD B,8 + XOR A +; +LOD902: RLC (HL) + RRA + INC HL + DJNZ LOD902 +; + EXX + LD (DE),A + INC DE + DJNZ LOD901 +; + RET +; +; +LOD18: LD DE,SDT7 + LD HL,SBDTAP +; +LOD181: LD A,(HL) + EXX + LD C,A + LD B,8 + XOR A +; +LOD182: RR C + RL A + DJNZ LOD182 +; + EXX + LD (DE),A + INC HL + DEC DE + DJNZ LOD181 +; + RET +; +; +LOD27: LD DE,SDT7 +LOD271: EXX + LD HL,SBDTAP + XOR A + LD B,8 +; +LOD272: RLC (HL) + RLA + + INC HL + DJNZ LOD272 +; + EXX + LD (DE),A + DEC DE + DJNZ LOD271 + RET +; +; calc position +; +; +SSYMB: LD B,8 + LD E,(IY+0AH) ;defx0,defy0 + LD D,0 +; +SSYMB1: ADD HL,DE + BIT 7,H + JR Z,SSYMB2 + DJNZ SSYMB1 +SSYMB4: SCF + RET +; +SSYMB2: LD A,H + OR L + JR NZ,SSYMB3 + LD L,E + DEC B + JR Z,SSYMB4 +SSYMB3: LD (IY+17H),L ;defx,defy + LD (IY+1),B ;HCNT,VCNT + OR A + RET + SKP H + +; +;------------------------------- +; +; +; PATTERN +; ent A:Heighth +; B:String length +; H:Direction +; DE:String adrs +; +;------------------------------- +POINTW: EQU KEYBF ;2 +STRAD: EQU POINTW+2 ;2 +PATDA1: EQU POINTW+250 +PATDA2: EQU POINTW+251 +PATDA3: EQU POINTW+252 +PATDA4: EQU POINTW+263 +; +; +CHARW: ENT + OR A ;no mode ? + RET Z ;yes + LD (STRAD),DE + LD E,A ;E'=Height + LD C,A ;C'=Height(work) + LD A,H + OR A + LD A,23H ;INC HL + JR NZ,PATT1 ;DOWN +; + LD A,2BH ;DEC HL +PATT1: LD (PATTA),A + LD (PATTC),A + LD A,B + OR A ;no string ? + RET Z ;yes +; + LD HL,(POINTX) + LD A,07H + AND L + LD D,A + EXX ;keep c',e',b',d' + LD HL,TDOTL + LD D,0 + LD E,A + ADD HL,DE + LD A,(HL) +; + LD (PATTB+1),A ;MASK DATA +; +PATT3: LD HL,(POINTY) +PATT4: LD (POINTW),HL ;save (POINTY) +; +PATTB: LD C,FFH ;C=mask data + LD HL,(STRAD) ;read DATA + LD A,(HL) +; + EXX ;keep c',e',b',d' + LD H,A + LD A,D + + OR A ;X=0 ? + JR Z,PATT6 ;yeS +PATT7: RRC H + DEC A + JR NZ,PATT7 +PATT6: LD A,H + EXX ;A=pattern data +; + LD HL,PATDA1 +; + LD B,8 ;DATA sift + LD D,A +PATT80: SRL D + RLA + DJNZ PATT80 +; + LD D,A ;C^D + AND C + LD (HL),A ;left set data +; + LD A,D + CPL + LD B,A ;B=CPL(D)=CPL(STRAD) + AND C ;C^CPL(D) + INC HL + LD (HL),A ;left reset data +; + LD A,C + CPL + LD C,A + AND D ;CPL(C)^D + INC HL + LD (HL),A ;right set data +; + LD A,C + AND B ;CPL(C)^CPL(D) + INC HL + LD (HL),A ;right reset data +; + LD DE,(POINTX) + LD HL,(POINTW) +; +; + PUSH DE + PUSH HL + EX DE,HL ;X=X+1 + LD BC,8 + ADD HL,BC + EX DE,HL + LD A,1 ;right mode + CALL PATT90 + POP HL + POP DE +; + XOR A ;left mode + CALL PATT90 +; +; + LD HL,(STRAD) ;next data + INC HL + + LD (STRAD),HL + EXX + DJNZ PATT5 ;B' +; + DEC C ;C' X-->END + EXX + JP Z,PATT70 ;X=X+8 & END + LD HL,(POINTW) +PATTC: INC HL ;DEC HL + LD (POINTY),HL +; + XOR A ;end + RET +; +PATT5: DEC C ;C' + JR NZ,PATT2 ;next Xposition + LD C,E ;C' E' + EXX + CALL PATT70 ;X=X+8 + JR PATT3 +; +; +PATT2: EXX + LD HL,(POINTW) +PATTA: INC HL ;DEC HL + JR PATT4 +; +; pointx+8 +; +PATT70: LD HL,(POINTX) + LD BC,8 + ADD HL,BC + LD (POINTX),HL + RET +; +;--------------------------- +; +; V-RAM write +; non keep +; +; A=0 ---->left +; 1 ---->right +; DE=X positin +; HL=y position +;--------------------------- +ATT90: EX AF,AF' ;push AF + CALL RNGCK + RET C ;address err +; + CALL ADCH ;get V-RAM address + LD B,A ;B=0 -->no right data +; HL=V-RAM address +; + LD DE,PATDA1 ;(DE)=write data + EX AF,AF' ;pop AF + OR A ;left data ? + JR Z,PATT91 ;yes +; + LD A,B ;non right data + OR A + + RET Z +; + INC DE ;DE,PATDA3 + INC DE +PATT91: CALL SETW ;mode set + DI + IN A,(LSE0) + OUT (LSE0),A ;get V-RAM + LD A,(DE) ;B=right data + LD (HL),A + LD A,(PWMODE) + OR A ;OR mode ? + JR NZ,PATT92 ;YES +; + LD A,(CPLANE) ;read color data + OR 60H + OUT (LSWF),A + INC DE + LD A,(DE) ;C=reset data + LD (HL),A +PATT92: IN A,(LSE1) + EI + RET +; + LIST + INCLD PAINT +; +; -------------------------------- +; +; PAINT ROUTINE ( 9.5/84 ) +; +; +; HL: COLOR ADD. +; B : NUM. of COLOR +; +; ------------------------------- +; +DIRAR: EQU 27D0H +ENKYB: EQU 12A0H +NDSP: EQU KEYBF ;2 +DSP: EQU NDSP+2 ;2 +NSSP: EQU DSP+2 ;1 +SSP: EQU NSSP+1 ;2 +PBXL: EQU SSP+2 ;2 +PBXR: EQU PBXL+2 ;2 +; +Y: EQU PBXR+2 ;2 +BXL: EQU Y+2 ;2 +BXR: EQU BXL+2 ;2 +DIRECT: EQU BXR+2 ;1 +JCONT: EQU DIRECT+1 ;1 +JSAVE: EQU JCONT+1 ;1 +JSAVE1: EQU JSAVE+1 ;1 +BUFF: EQU JSAVE1+1 ;11 DATA BUFF. +; +PEEK: EQU DIRAR ;PROGRAM AREA +; +WORK: EQU Y +; +; + +; // MAIN ROUTINE // +; +; +WPAINT: ENT + LD A,(GMODE) + OR C0H + OUT (LSWF),A ;Write mode set + EXX + LD DE,PEEK ;MAKE PEEK ROUTINE + LD HL,DPEEK + LD BC,DPEEK1-DPEEK + LDIR + EXX +; +PAIN0: LD A,(HL) ; COLOR SELECT + CALL COLS ;Bound Color Set + OR 80H ;SEARCH MODE SET + LD (DPEEK1+1),A + INC HL + EXX + LD HL,DPEEK1 + LD BC,DPEEK2-DPEEK1 + LDIR + EXX + DJNZ PAIN0 +; + EXX + LD BC,DPEEK3-DPEEK2+1 + LDIR + LD HL,(TMPEND) + LD (DSP),HL + LD (CSAVE+2),HL + LD HL,(PAIWED) + LD DE,-6 + ADD HL,DE + LD (SVDT0+1),HL +; +; + LD HL,(POINTX) + DEC HL + LD (BXL),HL ;BXL=POINTX-1 + INC HL + INC HL + LD (BXR),HL ;BXR=POINTX+1 + DEC HL + EX DE,HL + LD HL,0 + LD (NDSP),HL + LD HL,(POINTY) + LD (Y),HL + CALL RNGCK + CCF + RET NC ;START OUT RANGE +; + LD (SOVER1),SP + LD SP,DIRAR+700H +; +; + CALL ADCH + LD DE,TDOTN + + PUSH HL + LD H,0 + LD L,A + ADD HL,DE + LD C,(HL) + POP HL + CALL PEEK + AND C + JP NZ,PAINCE ;ON BOUND +; + CALL RBSR + LD (BXR),IX ;SET R.BOUND + CALL LBSR + LD (BXL),IX ;SET L.BOUND + LD A,FFH + LD (DIRECT),A ;DOWN + CALL SVDT + LD HL,ENKYB + LD (SSP),HL + XOR A + LD (DIRECT),A + LD (NSSP),A +; +PAIN1: LD A,(DIRECT) + CALL CHDIR0 + LD A,199 + CP L + JR C,PAINA ;OUT RANGE +; + CALL NBSRCH + JR C,PAINA ;CLOSE +; + LD (JCONT),A + AND 9 + CALL NZ,PAIND +; + CALL CSAVE + LD A,(JSAVE) + OR A + JR NZ,PAINA +; +PAIN3: CALL PSRCH + JR Z,PAIN1 +; + LD HL,(BXR) + PUSH HL + PUSH DE + CALL RBSR0 + LD (BXR),IX + CALL SVDT + POP HL + LD (BXL),HL + POP HL + LD (BXR),HL + JR PAIN1 +; +; +PAINA: LD HL,(DSP) + DEC HL + LD DE,-7 + + LD BC,(NDSP) +PAINA1: LD A,B + OR C + JR Z,PAINC +; + LD A,0FH + DEC BC + CP (HL) + ADD HL,DE + JR Z,PAINA1 +; + INC HL + PUSH HL + LD (PAINA2+1),HL + LD DE,WORK + LD BC,7 + LDIR + EX DE,HL + LD HL,(DSP) + XOR A + POP BC + LD (DSP),BC + SBC HL,DE + JR Z,PAINA3 +; + LD B,H + LD C,L +PAINA2: LD HL,00H ;XXH + EX DE,HL + LDIR + LD (DSP),DE +; +PAINA3: LD HL,(NDSP) + DEC HL + LD (NDSP),HL + JP PAIN3 +; +; +PAINC: LD HL,(NDSP) + LD A,L + OR H + JR NZ,PAINC0 +; +PAINCE: LD SP,(SOVER1) ;END JOB + RET +; +; +PAINC0: DEC HL + LD (NDSP),HL + LD HL,(DSP) + DEC HL + LD DE,WORK+6 + LD BC,7 + LDDR + INC HL + LD (DSP),HL +; +PAINC1: CALL PSRCH + JR Z,PAINC +; + + CALL RBSR0 + LD (BXR),IX + JR PAINC1 +; +; +PAIND: LD HL,PBXL ;DATA SAVE + LD DE,BUFF + CALL PAIND3 + LD A,(JCONT) + BIT 0,A + JR Z,PAIND1 +; +LTW: LD HL,(PBXL) + LD (BXR),HL + CALL TWR + JR C,LTW1 ;CLOSE +; + BIT 0,A + JR NZ,LTW +; +LTW1: CALL PAIND2 + LD A,(JCONT) + CP 9 + RET NZ +; +PAIND1: LD HL,(PBXR) + LD (BXL),HL + CALL TWR + JR C,PAIND2 +; + BIT 3,A + JR NZ,PAIND1 +; +PAIND2: LD HL,BUFF + LD DE,PBXL +PAIND3: LD BC,11 + LDIR + RET +; +; +; +; CHECK SAVE DATA +; +; +CSAVE: LD IY,00H ;XXH + LD BC,(NDSP) + LD HL,00H + LD (JSAVE),HL ;STATUS CLEAR +; +CSAVE1: CALL DSAVE + LD A,(NSSP) + OR A + RET Z +; + DEC A + LD (NSSP),A + LD (CSAVE2+1),SP + LD SP,(SSP) + POP IY + POP BC + + POP HL + LD (BXR),HL + POP HL + LD (BXL),HL + LD (SSP),SP +CSAVE2: LD SP,00H ;XXH + JR CSAVE1 +; +; +DSAVE: LD A,B + OR C + LD (DSAVEC+1),BC + JP Z,DSAVE3 +; + LD HL,(Y) + LD E,(IY+0) + LD D,(IY+1) + XOR A + SBC HL,DE + JR NZ,DSAVE2 +; + CALL COMP + CP 5 + JR Z,DSAVE1 +; + CP 0FH + JR NZ,DSAVE4 +; + LD L,(IY+2) ;SBXL + LD H,(IY+3) + LD DE,(BXR) + XOR A + SBC HL,DE + JR NC,DSAVE2 +; + LD HL,(BXL) + PUSH HL + LD L,(IY+2) + LD H,(IY+3) + PUSH HL + LD (BXL),HL + LD A,3 + CALL ESAVE + POP HL + LD (BXR),HL + POP HL + LD (BXL),HL + CALL RBSR + LD (BXR),IX + JR DSAVE2 +; +DSAVE1: LD E,(IY+4) ;SBXR + LD D,(IY+5) + LD HL,(BXL) + XOR A + SBC HL,DE + JR NC,DSAVE2 +; + LD HL,(BXR) + PUSH HL + + LD L,(IY+4) + LD H,(IY+5) + PUSH HL + LD (BXR),HL + LD A,4 + CALL ESAVE + POP HL + LD (BXL),HL + POP HL + LD (BXR),HL + CALL LBSR + LD (BXL),IX +; +DSAVE2: LD DE,7 + ADD IY,DE +DSAVEC: LD BC,00H ;XXH + DEC BC + JP DSAVE +; +DSAVE3: LD A,(JSAVE1) + OR A + CALL NZ,SVDT + RET +; +DSAVE4: EX AF,AF' + LD A,0FH + LD (JSAVE),A + EX AF,AF' + OR A + JR NZ,DSAVE5 +; + LD A,0FH + LD (IY+6),A + RET +; +DSAVE5: CP 1 + JR NZ,DSAVE6 +; + LD L,(IY+4) ;SBXR + LD H,(IY+5) + LD (BXL),HL + CALL LBSR + LD (BXL),IX + JR DSAVE8 +; +DSAVE6: CP 0CH + JR NZ,DSAVE9 +; +DSAVE7: LD L,(IY+2) ;SBXL + LD H,(IY+3) + LD (BXR),HL + CALL RBSR + LD (BXR),IX +DSAVE8: LD A,0FH + LD (IY+6),A + LD (JSAVE1),A ;SAVE DATA AFTER JOB + JR DSAVE2 +; +; +DSAVE9: CP 0DH + + JP NZ,ESAVE +; + LD A,(NSSP) + INC A + CP 27 + CCF + JP C,SOVER ;STACK OVER +; + LD (NSSP),A + LD HL,(BXL) + PUSH HL ;SAVE BXL + LD L,(IY+4) + LD H,(IY+5) + LD (BXL),HL + CALL LBSR + LD (DSAVEB+2),IY + LD DE,7 + ADD IY,DE + LD BC,(DSAVEC+1) + DEC BC + LD (DSAVEA+1),SP + LD SP,(SSP) + PUSH IX ;BXL + LD DE,(BXR) + PUSH DE + PUSH BC + PUSH IY + LD (SSP),SP +DSAVEA: LD SP,00H ;XXH +DSAVEB: LD IY,00H ;XXH + POP HL + LD (BXL),HL + JP DSAVE7 +; +; +ESAVE: EX AF,AF' + CALL SVDT + DEC DE + LD A,0FH + LD (DE),A + EX AF,AF' + CP 3 + JR NZ,ESAVE2 +; +ESAVE1: LD HL,(BXR) + LD (BXL),HL + LD L,(IY+4) + LD H,(IY+5) ;SBXR + LD (BXR),HL + CALL LBSR + PUSH IX + POP HL + LD (IY+2),L + LD (IY+3),H + RET +; +ESAVE2: CP 4 + JR Z,ESAVE3 +; + LD HL,(DSP) + + PUSH HL + LD (SVDT1+1),IY + CALL SVDT + LD HL,WORK + LD (SVDT1+1),HL + LD HL,(BXL) + PUSH HL + CALL ESAVE1 + POP HL + LD (BXR),HL + POP IY + JR ESAVE4 +; +; +ESAVE3: LD HL,(BXL) + LD (BXR),HL +ESAVE4: LD L,(IY+2) + LD H,(IY+3) + LD (BXL),HL + CALL RBSR + PUSH IX + POP HL + LD (IY+4),L + LD (IY+5),H + RET +; +; +; NEXT BOUNS SEARCH +; +; +NBSRCH: LD HL,(BXL) + LD (PBXL),HL + LD HL,(BXR) + LD (PBXR),HL + CALL LBSR + RET C ;CLOSE +; + LD (BXL),IX + CALL RBSR + LD (BXR),IX + CALL CONT ;CF=0 + LD A,B + RET +; +; CHANGE Y DIRECTON +; & +; NEXT Y CO-ORDINATE +; +CHDIR: LD A,(DIRECT) + CPL + LD (DIRECT),A +CHDIR0: LD HL,(Y) + INC L + OR A + JR NZ,CHDIR1 +; + DEC L + DEC L +CHDIR1: LD (Y),HL + RET + +; +; +TWR: CALL CHDIR + CALL NBSRCH + RET C +; + PUSH AF + LD HL,(BXL) + PUSH HL + LD HL,(BXR) + PUSH HL + CALL CSAVE + LD A,(JSAVE) + OR A + CALL Z,SVDT +; + POP HL + LD (BXR),HL + POP HL + LD (BXL),HL + POP AF + RET +; +; +; *** BOUND SEARCH **** +; +; +; +; // LEFT BOUNS SEARCH // +; +LBSR: LD DE,(BXR) + LD HL,(BXL) + PUSH HL + LD (BSRCH4+1),DE + LD HL,00H + LD (BSRCH6+1),HL + LD A,2BH ;DEC IX + LD (BSRCH3+1),A + LD A,2FH ;CPL + LD (BSRCH5),A + XOR A + LD (BSRCH7),A + LD HL,BSRCHL + LD (BSRCH1+1),HL + LD HL,BSRCHR + LD (BSRCH2+1),HL + POP DE + INC DE + JR BSRCH +; +; // RIGHT BOUNS SEARCH // +; +RBSR: LD DE,(BXR) +RBSR0: LD HL,(BXL) + LD (BSRCH6+1),HL + DEFB 21H ;LD HL,640 or 320 +LRBSR: ENT + DEFW 8002H + LD (BSRCH4+1),HL + LD A,23H ;INC IX + + LD (BSRCH3+1),A + LD A,2FH ;CPL + LD (BSRCH7),A + XOR A + LD (BSRCH5),A + LD HL,BSRCHR + LD (BSRCH1+1),HL + LD HL,BSRCHL + LD (BSRCH2+1),HL + DEC DE +; +; +; // SEARCH ROUTINE // +; +BSRCH: LD HL,(Y) + PUSH DE + POP IX + CALL ADCH + LD DE,TDOTN + PUSH HL + LD H,0 + LD L,A + ADD HL,DE + LD C,(HL) + POP HL + CALL PEEK + LD E,A + AND C +BSRCH1: JP Z,BSRCHL ;JP BSRCHR +; +BSRCH2: CALL BSRCHR ;CALL BSRCHL +BSRCH3: DEC IX ;INC IX + RET +; +; ++ SEARCH LEFT +++ +; +BSRCHL: DEC IX + RRC C + JR NC,BSRCHC +; + PUSH IX + EXX + POP DE + INC DE +BSRCH6: LD HL,00H ;BX + INC HL + SBC HL,DE + EXX + RET NC +; + DEC HL + CALL PEEK + LD E,A +BSRCHC: LD A,E +BSRCH7: NOP ;CPL + AND C + JP Z,BSRCHL + RET +; +; ++ SEARCH RIGHT +++ + +; +BSRCHR: INC IX + RLC C + JR NC,BSRCHA +; + CALL BSRCHD + RET C +; + INC HL + CALL PEEK + LD E,A +BSRCHA: LD A,E +BSRCH5: CPL ;NOP + AND C + JR Z,BSRCHR + +BSRCHD: PUSH IX + EXX + POP HL +BSRCH4: LD DE,BXR + XOR A + SBC HL,DE + EXX + CCF + RET +; +; +; +; // CONT. CHECK // +; +CONT: LD B,0H + LD HL,(PBXR) + LD DE,(BXR) + CALL CONT1 + LD HL,(PBXL) + LD DE,(BXL) + INC HL ;FOR HL=FFH + INC DE ;FOR DE=FFH +; +CONT1: PUSH HL + XOR A + INC HL + SBC HL,DE + POP HL + RL B + INC DE + EX DE,HL + SBC HL,DE + RL B + RET +; +; +; *** POINT DATA +; +; SAVE & LOAD **** +; +; +; // DATA SAVE // +; +SVDT: LD DE,(DSP) + +SVDT0: LD HL,0000 ; XX END ADD + XOR A + SBC HL,DE + JR NC,SVDT1 +; +SOVER: ENT + DEFB 31H ;STACK POINTER +SOVER1: ENT ;LD SP,XXH + DEFW 00H + SCF + RET +; +SVDT1: LD HL,WORK + LD BC,0007H + LDIR + LD (DSP),DE + LD HL,(NDSP) + INC HL + LD (NDSP),HL + RET +; +; +; *** PAINT & SEARCH **** +; +; +PSRCH: LD HL,(Y) + LD DE,(BXR) + DEC DE + CALL ADCH + LD DE,TDOTR + PUSH HL + LD H,0 + LD L,A + ADD HL,DE + INC C + LD B,C + LD C,(HL) + POP HL +; +PSRCH1: CALL PEEK + AND C + JR NZ,PSRCH2 ;BOUND +; + DI + IN A,(LSE0) + LD (HL),C + IN A,(LSE1) + EI + LD C,FFH + DEC HL + DJNZ PSRCH1 +; + LD DE,-1 + JR PSRCH5 +; +PSRCH2: LD E,B + LD B,7H + LD D,00H +PSRCH3: RLC A + JR C,PSRCH4 + +; + SCF + RR D + DJNZ PSRCH3 +; +PSRCH4: IN A,(LSE0) + LD A,C + AND D + LD (HL),A + IN A,(LSE1) +; + LD A,E + DEC A + RLC A + RLC A + RLC A + LD C,A + LD A,07H + AND C + LD D,A + LD A,F8H + AND C + OR B + LD E,A +PSRCH5: XOR A + LD HL,(BXL) + SBC HL,DE + RET +; +; +; // PEEK DATA // +; +DPEEK: PUSH HL + EXX + POP HL + DI + IN A,(LSE0) + LD C,LSRF + XOR A +; +DPEEK1: LD B,00H ;RE DATA + OUT (C),B + OR (HL) +; +DPEEK2: LD E,A + IN A,(LSE1) + EI + LD A,E + EXX +DPEEK3: RET +; +; +; // COMP. BXL,BXR // +; +COMP: LD HL,(BXL) + LD E,(IY+2) + LD D,(IY+3) + INC HL + INC DE + XOR A + + CALL COMP1 + LD HL,(BXR) + LD E,(IY+4) + LD D,(IY+5) +; +COMP1: SBC HL,DE + RLA + RLA + RET Z +; + OR 1 + RET +; + END +; + END diff --git a/software/asm/mz-xz009/MON-IOCS.ASM b/software/asm/mz-xz009/MON-IOCS.ASM new file mode 100644 index 0000000..880e97c --- /dev/null +++ b/software/asm/mz-xz009/MON-IOCS.ASM @@ -0,0 +1,1535 @@ +; ----------------------------- +; Lx-monitor IOCS-part +; FI:MON-IOCS ver 1.01 5.24.84 +; ----------------------------- +; + INCLD MACRO + ORG 1800H +; +$IOCS: ENT + JP $START +; +; FALG1 bit position +; +##REN: EQU 0 ;ROPEN enable +##WEN: EQU 1 ;WOPEN enable +##RCHR: EQU 2 ;Read at 1 char +##WCHR: EQU 3 ;Write at 1 char +##FNM: EQU 4 ;File name exist +##RND: EQU 5 ;FD +##SEQ: EQU 6 ;CMT, QD, XM +##STRM: EQU 7 ;CRT, LPT, RS, USR +; +; FLAG2 bit position +; +##CMT: EQU 7 ;Disp filename +##1OPN: EQU 6 ;1 file only open +##1WOP: EQU 5 ;1 file only wopen +##EOFE: EQU 4 ;select EOF process +; bit 0,1,2 ..... max channel +; +; ZRWX bit position +; +##ROPN: EQU 0 ;R.opened +##WOPN: EQU 1 ;W.opened +##XOPN: EQU 2 ;X.opened +##LOPN: EQU 3 ;L.opened +##EOF: EQU 7 ;End of file +; +; DIR offset +; +#SIZE: EQU 20 +#PTR: EQU 64 ;BSD block pointer +#BLKNO: EQU 64+16-2 ;BSD block number +; +CMTLU: EQU 80H +CRTLU: EQU 88H +LPTLU: EQU 89H +; +; +CRTLU?: LD A,(ZLOG) + CP CRTLU + RET +; +ZMODE: DEFW 0 ;File mode +ZBUFF: ENT + DEFW 0 ;Buffer adrs +ZBUFE: ENT + DEFW 0 ;Buffer end + SKP H + +; +; SVC .PRSTR ;print string into file +; ent DE:adrs +; B: length +; +PRTSTR: ENT + CALL IO.RDY + CALL PRTST0 +IO.OK: ENT + XOR A + LD (QSEG),A + RET +; +IO.RDY: ENT + LD A,(ZLOG) + LD (QSEG),A + RET +; +PRTST0: CALL PUSHR + LD A,(ZFLAG1) + BIT ##STRM,A + LD HL,PRT1C + JR Z,PRTST2 + BIT ##WCHR,A ;Output at + LD HL,.ZOUT + JR NZ,PRTST2 ; 1 char +.ZOUT: IOCALL ZOUT ; 1 line + LD IX,(ZOUT) + CALL IOCALL + ENDM + RET +; +PRTST2: LD A,B ;SEQ/RND + OR A + RET Z + LD A,(DE) +PRTST4: CALL .HL ;PRT1C or .ZOUT + INC DE + DEC B + JR PRTST2 +; +PRT1C: CALL PUSHR + LD E,(IY+#PTR) + LD D,(IY+#PTR+1) + LD HL,(ZBUFF) + ADD HL,DE + LD M,A + INC DE + LD HL,(ZBLK) + OR A + SBC HL,DE + CALL Z,PRT1B ;Buffer full + LD (IY+#PTR),E + LD (IY+#PTR+1),D + INC (IY+#SIZE) + RET NZ + INC (IY+#SIZE+1) + RET NZ + JP ER55 ;too long file + SKP H + +; +PRT1B: PUSH BC ;Output 1 block + LD B,02H ;F# not update, blocked +PRT1B0: CALL ?RND + LD IX,.ZOUT + JR Z,+6 + LD IX,PRX1B + LD A,B + CALL SEQSET + CALL .IX +PRT1B9: INC (IY+#BLKNO) + LD DE,0 + POP BC + RET +; +.IX: JP (IX) +; +PRT1BX: LD A,1AH ;Output last block + LD E,(IY+#PTR) + LD D,(IY+#PTR+1) +PRT1X2: LD HL,(ZBUFF) + ADD HL,DE + LD M,A + INC DE + LD HL,(ZBLK) + XOR A + SBC HL,DE + JR NZ,PRT1X2 + PUSH BC + LD HL,(ZBUFF) + DEC HL + LD M,FFH ;EOF mark + DEC HL + LD M,FFH + LD B,06H ;F# update, blocked + JR PRT1B0 +; +; +SEQSET: LD BC,(ZBLK) + INC BC + INC BC + LD HL,(ZBUFF) + DEC HL + DEC HL + LD DE,(ZMODE) + RET +; +; +.ZEND: DEFB F6H +.ZSTRT: XOR A + IOCALL ZSTRT + LD IX,(ZSTRT) + CALL IOCALL + ENDM + RET + SKP H + +; +; SVC .INSTT ;INPUT command start +; +INPSTRT:ENT + CALL CRTLU? ;input start + RET NZ + PUSH DE + LD DE,KEYBUF + CALL BINPUT + LD (INPKB+1),DE + POP DE + RET NC + JP BREAKZ +; +; SVC .INMSG ;input from file +; ent DE:adrs +; ext B: length +; +INPMSG: ENT + PUSH HL + PUSH DE + CALL IO.RDY + LD HL,(ZTOP) + INC HL + BIT ##EOF,M + PUSH HL + LD B,0 + SCF + CALL Z,INPMS0 + POP HL + CALL C,INEOF + POP DE + PUSH AF + CALL IO.OK + LD L,B + LD H,0 + ADD HL,DE + LD M,0 + POP AF + POP HL + RET +; +INEOF: SET ##EOF,M + LD HL,ZFLAG2 + BIT ##EOFE,M + RET Z ;nomally + JP ER63 ;old method +; +INPMS0: CALL CRTLU? ;input 1 record + JR Z,INPKB + LD A,(ZFLAG1) + BIT ##STRM,A + LD HL,INP1C + JR Z,INPMC + BIT ##RCHR,A + LD HL,.ZINP + JR NZ,INPMC +.ZINP: IOCALL ZINP + LD IX,(ZINP) + CALL IOCALL + + ENDM + RET +; +INPKB0: LD A,"?" + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + LD A," " + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + SVC .INSTT + RST 3 + DEFB .INSTT + ENDM +INPKB: LD HL,0 ;xxx + CALL HLFTCH + OR A + JR Z,INPKB0 + LD C,0 + SVC .INDATA + RST 3 + DEFB .INDATA + ENDM + LD (INPKB+1),HL + RET +; +; SVC .INDAT ;read 1 item from buffer +; ent HL:data pointer +; DE:input buffer +; C: separater(nomaly 00H or ":") +; ext B: length +; HL:data pointert +; +INPDT: ENT + LD B,0 + TEST1 '"' + CALL TEST1 + DEFB '"' + ENDM + JR NZ,INPDT6 +INPDT2: LD A,M + OR A + RET Z + INC HL + CP '"' + JR Z,INPDT4 + LD (DE),A + INC DE + INC B + JR INPDT2 +INPDT4: TEST1 "," + CALL TEST1 + DEFB "," + ENDM + OR A ;Reset CF + RET +; + +INPDT6: LD A,M + OR A + RET Z + CP C + RET Z + INC HL + CP "," + RET Z + LD (DE),A + INC DE + INC B + JR INPDT6 +; +INPMC: LD (INPMC2+1),HL ;input by chr + LD B,0 +INPMC2: CALL 0 ;INP1C or (ZINP) + RET C + CP 0DH + RET Z + LD (DE),A + INC DE + INC B + JR NZ,INPMC2 + JP ER41 ;I/O error + SKP H + +; +INP1C0: ENT + LD A,(ZFLAG1) + BIT ##STRM,A + JP NZ,ER59 ;STRM ommit +INP1C: CALL PUSHR + LD E,(IY+#PTR) + LD D,(IY+#PTR+1) + LD HL,(ZBLK) + OR A + SBC HL,DE + CALL Z,INP1B + RET C + LD L,(IY+#BLKNO) + LD H,(IY+#BLKNO+1) + XOR A + SBC HL,DE + SCF + RET Z ;EOF + LD HL,(ZBUFF) + ADD HL,DE + LD A,M + INC DE + LD (IY+#PTR),E + LD (IY+#PTR+1),D + RET +; +INP1B: CALL ?RND + JP NZ,INX1B + DEFB F6H ;not first block +INP1B0: XOR A ;first block + CALL SEQSET + CALL .ZINP + RET C + LD A,M + INC HL + AND M + LD M,FFH + INC A + LD DE,0 + RET NZ ;Nomal block + PUSH HL ;EOF block + LD HL,(ZBUFE) + LD BC,(ZBLK) +INP1B2: DEC HL + DEC BC + LD A,M + OR A + JR Z,INP1B2 + POP HL + LD M,B ;#BLKNO := Block length + DEC HL + LD M,C + RET + SKP H + +; +; SVC .LUCHK ;check lu & set Z-area +; ent A: lu +; ext A: 1:R, 2:W +; if CF then not-found +; +LUCHK: ENT + CALL PUSHR + LD HL,CRTTBL + CP CRTLU + JR Z,LUCHK4 + LD HL,LPTTBL + CP LPTLU + JR Z,LUCHK4 + SVC .SEGAD + RST 3 + DEFB .SEGAD + ENDM + RET C ;LU# not found +LUCHK4: LD (ZTOP),HL + LD DE,ZLOG + LD BC,8 + LDIR + LD (ZMODE),HL + LD IY,HL + LD DE,ELMD + CALL LDIR64 + PUSH HL + LD HL,(ZEQT) + LD DE,ZNXT + LD BC,ZBYTES + LDIR + POP HL + LD BC,16 + ADD HL,BC + LD (ZBUFF),HL + LD BC,(ZBLK) + ADD HL,BC + LD (ZBUFE),HL + LD A,(ZRWX) + AND 0FH + RET +; +; +CRTTBL: DEFB CRTLU + DEFB 3 ;W R + DEFW $CRT + DEFW 0 + DEFW 0 +; +LPTTBL: DEFB LPTLU + DEFB 2 ;W + DEFW $LPT + DEFW 0 + DEFW 0 +; + SKP H + +; +; SVC .DEVNM ;Interp. dev name +; ent DE:device name pointer +; ext DE:equipment table +; HL:file name pointer +; A: channel +; +DEV: ENT + LD HL,KEYBUF + PUSH HL + LD A,B + OR A + CALL NZ,LDHLDE + LD M,0 + LD HL,EQTBL + JR +5 +DEV1: LD HL,0 ;xxx + LD A,L + OR H + JR Z,DEV8 ;Not found + LD (DEV7+1),HL + CALL LDDEMI + LD (DEV1+1),DE + LD DE,KEYBUF + EX DE,HL +DEV2: LD A,(DE) + OR A + JR Z,DEV4 + CP M + JR NZ,DEV1 ;Mismatch + INC HL + INC DE + JR DEV2 +DEV4: LD A,M + INC HL + CP ":" + LD C,0 + JR Z,DEV5 ;Match + SUB "1" + CP 9 + JR NC,DEV1 ;Mismatch + LD C,A + LD A,M + INC HL + CP ":" + JR NZ,DEV1 ;Mismatch +DEV5: EX (SP),HL ;Found +DEV7: LD HL,0 ;xxx + LD A,C + JR DEV9 +DEV8: POP HL ;Not found + PUSH HL +DEV82: LD A,M + INC HL + CP ":" + JP Z,ER58 ;Dev name err + OR A + JR NZ,DEV82 + LD HL,(DDEV) + LD A,(DCHAN) + +DEV9: LD (ZEQT),HL + PUSH HL + LD (ZCH),A + LD DE,ZNXT + LD BC,ZBYTES + LDIR + LD B,A + LD A,(ZFLAG2) + AND 07H ;bit 0,1,2 + CP B + JP C,ER58 ;Dev name err (CH#) + LD A,B + POP DE + POP HL + RET +; +; SVC .DEVFN ;Interp. dev&file name +; ent DE:pointer +; B: length +; +DEV&FN: ENT + CALL PUSHR + SVC .DEVNM + RST 3 + DEFB .DEVNM + ENDM + EX DE,HL + LD HL,ELMD1 + LD B,31 + CALL ?CLRHL + LD HL,ELMD + SVC .COUNT + RST 3 + DEFB .COUNT + ENDM + CALL SETFNAM + LD HL,ZFLAG1 + BIT ##FNM,M + RET Z + INC HL + BIT ##CMT,M + RET NZ + LD A,(ELMD1) ;except CMT, + CP 0DH ; no filename is + JP Z,ER60 ; error 60. + RET + SKP H + +; +; SVC .RWOPEN ;ROPEN/WOPEN/XOPEN +; +RWOPEN: ENT + CALL PUSHR + CALL OPEN00 + LD B,0 + CALL TYPECK + JP DUST +; +OPEN00: LD A,(ZLOG) + SVC .SEGAD + RST 3 + DEFB .SEGAD + ENDM + JP NC,ER43 ;LU already opened + CALL ?OPEND ;Check already opened + LD HL,8+64+16+5 ;LU, DIR and work + LD A,(ZFLAG1) + LD DE,(ZBLK) + INC DE + INC DE + BIT ##STRM,A + JR NZ,+3 + ADD HL,DE ;SEQ,RND + LD A,(ZRWX) + BIT 2,A + JR Z,+3 + ADD HL,DE ;XO + EX DE,HL + LD A,(ZLOG) + SVC .OPSEG ;open segment + RST 3 + DEFB .OPSEG + ENDM + LD (QSEG),A + LD (ZTOP),HL + EX DE,HL + LD HL,ZLOG + LD BC,8 + LDIR ;xfer ZLOG to seg + LD (ZMODE),DE + LD IY,DE + LD HL,ELMD + CALL LDIR64 ;xfer ELMD to seg + LD HL,16 + ADD HL,DE + LD (ZBUFF),HL + LD DE,(ZBLK) + ADD HL,DE + LD (ZBUFE),HL + CALL ?RND + JP NZ,OPX ;RND + LD A,(ZRWX) ;SEQ/STRM + BIT ##XOPN,A + JP NZ,ER59 + BIT ##WOPN,A + LD IX,(ZWO) + JR NZ,OPEN20 + LD A,(ZFLAG1) + + BIT ##STRM,A + JR Z,OPEN30 + LD IX,(ZRO) ;STRM RO +OPEN20: LD HL,ELMD ;SEQ/STRM WO + JP IOCALL +OPEN30: LD B,(IY+0) ;SEQ RO + CALL SERFLR + LD A,(ELMD) + CP B + JP NZ,ER61 + JP INP1B0 ;First call +; +; SVC .LOPEN ;Search for LOAD +; +LOPEN: ENT + CALL PUSHR + LD IY,0100H ;(ZLOG)=0 + LD (ZLOG),IY ;(ZRWX)=1 ;R + LD IY,ELMD + CALL ?RND + LD HL,LOPX + JR NZ,+5 + LD HL,SERFLR + CALL .HL + LD B,80H + CALL TYPECK + LD A,(ELMD) + RET +; +; type check (chained or contiguas) +; +TYPECK: LD A,(ELMD) + CP 5 + RET C + LD A,(ELMD18) + AND 80H + CP B + RET Z + JP ER61 + SKP H + +; +; SVC .CLKL ;CLOSE/KILL +; ent A: lu, if A=0 then all-files +; B: B=0:KILL, B<>0:CLOSE +; +CLKL: ENT ;CLOSE/KILL file + CALL PUSHR + OR A + JR Z,CLKLA + CALL CL1F + JP DUST +; +CL1F: SVC .LUCHK + RST 3 + DEFB .LUCHK + ENDM + RET C ;LU# not found + CALL IO.RDY + PUSH AF + CALL ?RND + JR NZ,CL1FR + BIT ##STRM,A + LD A,B + JR Z,CL1FB + OR A ;Streem I/O + LD IX,(ZKL) + JR Z,+6 + LD IX,(ZCL) + CALL IOCALL + JR CL1F8 +CL1FB: OR A ;SEQ I/O + JR Z,CL1F8 + LD A,(ZRWX) + BIT ##WOPN,A + CALL NZ,PRT1BX + JR CL1F8 +CL1FR: CALL CLX ;RND I/O +CL1F8: POP AF + SVC .DLSEG + RST 3 + DEFB .DLSEG + ENDM + RET +; +; SVC .CLRIO ;clear all i/o +; +CLRIO: ENT + CALL PUSHR + LD B,0 +CLKLA: LD C,8EH ;all files +CLKLA2: LD A,C + PUSH BC + SVC .SEGAD + RST 3 + DEFB .SEGAD + ENDM + CALL NC,CL1F + POP BC + DEC C + JR NZ,CLKLA2 + + JP ERRCVR + SKP H + +; +; search file (SEQ device) +; +SERFIL: ENT + CALL PUSHR ;Search file + LD A,(ZFLAG1) + BIT ##SEQ,A + JP Z,ER59 ;SEQ only ok + CALL .ZSTRT + LD A,(ZDIRMX) + LD B,A +SERFL2: LD HL,KEYBUF + PUSH BC + IOCALL ZRO ;RDINF + LD IX,(ZRO) + CALL IOCALL + ENDM + POP BC + SET 0,A ;A<>0 + RET C ;Not found + LD DE,IY + CALL FNMTCH + LD A,M + RET Z + DJNZ SERFL2 + XOR A ;end of dir + SCF + RET +; +; search file for WOPEN, SAVE +; (SEQ device) +; +SERFLW: ENT + CALL ?OPEND + CALL SERFIL + JP NC,ER42 ;already exist + OR A + JP Z,ER51 ;too many files + RET +; +; search file for ROPEN +; (SEQ device) +; +SERFLR: CALL ?OPEND + CALL SERFIL + JP C,ER40 ;not found + CALL PUSHR + LD HL,KEYBUF + LD DE,IY + PUSH HL + CALL LDIR64 + POP HL + LD DE,ELMD + LD A,M +LDIR64: LD BC,64 + LDIR + OR A + RET + SKP H + +; +; CALL ?OPEND ; Check already opened +; +?OPEND: ENT + LD IX,?OPCKX +?OPEN0: ENT + LD (?OPEN6+1),IX + CALL PUSHR + LD A,(ZLOG) + LD C,A + LD HL,(POOL) + PUSH HL +?OPEN2: POP HL + LD A,M + OR A + RET Z + LD B,A + INC HL + CALL LDDEMI + PUSH HL + ADD HL,DE + EX (SP),HL + CP 8FH + JR NC,?OPEN2 ;non i/o seg. + CP C + JR Z,?OPEN2 ;same lu + INC HL ;ZRWX + LD A,M + EX AF,AF' + INC HL + LD DE,ZEQT + PUSH BC + LD BC,300H +?OPEN4: LD A,(DE) + SUB M + OR C + LD C,A + INC DE + INC HL + DJNZ ?OPEN4 + POP BC + JR NZ,?OPEN2 ;Diff. device + LD A,B +?OPEN6: CALL 0 ;xxx + JR ?OPEN2 +; +?OPCKX: LD A,(ZFLAG2) ;Same device + BIT ##1OPN,A ;1 file only ? + JP NZ,ER43 ; Yes, already open + BIT ##1WOP,A ;1 file only W ? + RET Z ; No, ok + EX AF,AF' + LD B,A + LD A,(ZRWX) + AND B + BIT ##WOPN,A + RET Z + JP ER43 + SKP H + +; +; SVC .LOADFL +; ent HL:loaging adrs +; call after .DEVFN and .LOPEN +; +LOADFL: ENT + CALL ?RND + JP NZ,LDX + LD BC,(ELMD20) + PUSH BC + XOR A ;first block + IOCALL ZINP + LD IX,(ZINP) + CALL IOCALL + ENDM + POP BC + RET +; +; SVC .VRFYF ;verify file +; ent HL:adrs +; call after .DEVFN, .LOPEN +; +VRFYFL: ENT + LD A,(ZFLAG2) + BIT ##CMT,A + JP Z,ER59 + LD BC,(ELMD20) + JP CMTVRF +; +; SVC .SAVEF ;save file +; ent DE:adrs +; call after .DEVFN +; +SAVEFL: ENT + LD A,(ELMD) + CP 5 + JR C,SAVEF2 + LD A,80H + LD (ELMD18),A ;contiguas flag +SAVEF2: CALL ?RND + JP NZ,SVX + BIT ##STRM,A + JP NZ,ER59 + PUSH DE + LD HL,0200H + LD (ZLOG),HL + CALL ?OPEND + LD HL,ELMD + LD IY,HL + IOCALL ZWO + LD IX,(ZWO) + CALL IOCALL + ENDM + LD BC,(ELMD20) + POP HL + LD A,04H ;F# update,unblocked + IOCALL ZOUT + LD IX,(ZOUT) + CALL IOCALL + ENDM + + RET +; +; +?RND: ENT + LD A,(ZFLAG1) + BIT ##RND,A + RET + SKP H + +; +; SVC .DIR +; ent A=0 ... read dir +; A>0 ... output dir +; +FDIR: ENT + CALL PUSHR + OR A + JR NZ,FDIR3 + LD HL,100H + LD (ZLOG),HL + CALL ?OPEND + LD HL,ZFLAG1 + BIT ##STRM,M + JP NZ,ER59 ;Streem i/o omit + BIT ##RND,M + JP NZ,LD.DIR ;RND + INC HL ;SEQ + BIT ##CMT,M + JP NZ,ER59 ;CMT ommit + CALL MWAIT ;MUSIC WAIT + LD HL,DIRARE + LD BC,8 ;clear 0800H bytes + CALL ?CLRHL + DEC C + JR NZ,-4 + CALL .ZSTRT + LD A,(ZDIRMX) + LD B,A + LD HL,DIRARE +FDIR2: PUSH BC + IOCALL ZRO ;read infomation + LD IX,(ZRO) + CALL IOCALL + ENDM + PUSH AF + LD BC,32 + ADD HL,BC + LD M,0 + POP AF + POP BC + JR C,+4 + DJNZ FDIR2 + JP .ZEND +; +FDIR3: LD (FDIROT+1),A + XOR A + LD (DISPX),A + LD HL,KEYBUF + PUSH HL + LD DE,DIRM1 + LD B,DIRM2-DIRM1 + CALL LDHLDE + CALL SETDNM ;set device name + LD M," " + INC HL + LD M," " + INC HL + EX DE,HL + CALL ?RND + + LD IX,(ZFREE) ;SEQ + JR Z,+6 + LD IX,FREEX ;RND + CALL IOCALL + JR C,FDIR4 + LD HL,BC + LD B,0 + SVC .ASCHL + RST 3 + DEFB .ASCHL + ENDM + LD HL,DIRM2 + LD B,DIRM3-DIRM2 + CALL LDDEHL +FDIR4: EX DE,HL + LD M,0DH + INC HL + LD M,0 + POP DE + CALL FDIROT ;DIR OF dd: xxx KB FREE +; + LD B,64 ;max dir + LD HL,DIRARE +FDIR6: CALL FDIRS ;mod "name" + LD DE,32 + ADD HL,DE + DJNZ FDIR6 + JP DUST +; +FDIRS: CALL PUSHR + LD A,M + OR A + RET Z + RET M + LD DE,KEYBUF + PUSH DE + LD A," " + LD B,38 + CALL ?SETDE + LD A,M + CP MAXMOD+1 + JR C,+4 + LD A,MAXMOD+1 + LD IY,HL + POP DE + PUSH DE + INC DE + LD HL,DIRM3-3 + LD BC,3 + ADD HL,BC + DEC A + JR NZ,-2 + LDIR + EX DE,HL + BIT 0,(IY+18) + JR Z,+4 + LD M,"*" + INC HL + INC HL + LD M,'"' + + INC HL +FDIRS2: LD A,(IY+1) + CP 0DH + JR Z,FDIRS4 + LD M,A + INC IY + INC HL + JR FDIRS2 +FDIRS4: LD M,'"' + INC HL + LD M,0DH + INC HL + LD M,0 + POP DE +FDIROT: LD A,0 ;xxx output lu + SVC .LUCHK + RST 3 + DEFB .LUCHK + ENDM + SVC .COUNT + RST 3 + DEFB .COUNT + ENDM + SVC .PRSTR + RST 3 + DEFB .PRSTR + ENDM + SVC .HALT + RST 3 + DEFB .HALT + ENDM + RET +; +DIRM1: DEFB 0DH + DEFM "DIRECTORY OF " + + + +DIRM2: DEFM " KB FREE." + + +DIRM3: DEFM "OBJ" ;1 + DEFM "BTX" ;2 + DEFM "BSD" ;3 + DEFM "BRD" ;4 + DEFM "RB " ;5 + DEFM " ? " ;6 + DEFM "LIB" ;7 + DEFM " ? " ;8 + DEFM " ? " ;9 + DEFM "SYS" ;10 + DEFM "GR " ;11 + DEFM " ? " ;12 +MAXMOD: EQU 11 + SKP H + +; +; INIT "dev:command" +; +FINIT: ENT + PUSH HL +FINIT2: XOR A + LD (ZLOG),A + LD IX,?OPCKY + LD (?OPCKY+1),SP + CALL ?OPEN0 + POP HL + IOCALL ZINIT + LD IX,(ZINIT) + CALL IOCALL + ENDM + RET +; +?OPCKY: LD SP,0 + LD B,0 + SVC .CLKL ;KILL + RST 3 + DEFB .CLKL + ENDM + JR FINIT2 +; +; Ask Y or N +; +OKYN: ENT + TEST1 "Y" + CALL TEST1 + DEFB "Y" + ENDM + RET Z + LD DE,OK?MSG + SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM + LD A,1 + SVC .INKEY + RST 3 + DEFB .INKEY + ENDM + CP "Y" + RET Z + JP BREAKZ +OK?MSG: DEFM "OK ? [Y/N]" + + + DEFB 19H ;alpha + DEFB 0 + SKP H + +; +; Filename check +; +CKFIL: ENT + LD DE,ELMD +FNMTCH: ENT + CALL PUSHR + INC HL + INC DE + LD A,(DE) + CP 0DH + RET Z + LD B,17 +FNMTLP: LD A,(DE) + CP M + RET NZ + CP 0DH + RET Z + INC HL + INC DE + DJNZ FNMTLP + OR A + RET +; +; +SETFNAM:ENT + INC HL + LD C,16 +SETFN2: LD A,B + OR A + JR Z,SETFN4 + LD A,(DE) + INC DE + DEC B + OR A + JR Z,SETFN4 + CP '"' + JR Z,SETFN2 + CP ":" + JP Z,ER60 ;file name err + LD M,A + INC HL + DEC C + JR NZ,SETFN2 +SETFN4: LD M,0DH + INC HL +SETFN6: LD A,C + OR A + RET Z + LD M," " + INC HL + DEC C + JR SETFN6 + SKP H + +; +; SVC .SEGAD ;get segment adrs +; ent A .... Seg No. +; ext HL ... Buffer adrs +; +SEGADR: ENT + LD HL,(POOL) +SEGAD2: INC M + DEC M + SCF + RET Z ;not found + CP M + INC HL + JR Z,SEGAD9 + PUSH DE + CALL LDDEMI + ADD HL,DE + POP DE + JR SEGAD2 +SEGAD9: INC HL + INC HL + RET +; +; SVC .DLSEG ;delete segment +; ent A .... Seg No. +; +DELSEG: ENT + CALL PUSHR + SVC .SEGAD + RST 3 + DEFB .SEGAD + ENDM + RET C ;Not exist + DEC HL + LD B,M + DEC HL + LD C,M ;BC = length + DEC HL ;HL = del start + LD DE,HL ;DE = del start + INC BC + INC BC + INC BC ;BC = del size + PUSH BC + ADD HL,BC ;HL = del end + PUSH HL + LD BC,HL + LD HL,(TMPEND) + OR A + SBC HL,BC + LD BC,HL ;BC = Move bytes + POP HL ;HL = del end + LDIR + POP DE ;DE = del size + LD HL,0 + OR A + SBC HL,DE + EX DE,HL ;DE= - delete size + SVC .ADDP1 + RST 3 + DEFB .ADDP1 + + ENDM + OR A + RET +; + SKP H + +; +; SVC .OPSEG ;open segment +; ent A .... Seg No. +; DE ... Buffer length +; ext HL ... Buffer adrs +; +OPSEG: ENT + PUSH AF + PUSH BC + PUSH DE + PUSH DE + INC DE + INC DE + INC DE + LD HL,(TMPEND) + EX DE,HL ; + ADD HL,DE ; ADD DE,HL + EX DE,HL ; DE = new TMPEND + JP C,ER06 + PUSH HL + LD HL,-512 + ADD HL,SP + SBC HL,DE + JR C,ER06 + LD HL,(MEMLMT) + DEC H + DEC H + SBC HL,DE + JR C,ER06 + POP HL + PUSH HL ;old TMPEND + LD BC,(VARST) ;POOL END + OR A + SBC HL,BC + LD BC,HL ;BC = move bytes + POP HL ;HL = old TMPEND + INC BC + LDDR + POP DE ;Buffer length + LD M,A ;Seg No. + INC HL + LD M,E ;Size + INC HL + LD M,D + INC HL + PUSH HL + INC DE ;LEN+1 + PUSH DE +OPSEG2: LD M,0 + INC HL + DEC DE + LD A,D + OR E + JR NZ,OPSEG2 + POP DE ;LEN+1 + INC DE + INC DE ;LEN+3 + SVC .ADDP1 + RST 3 + DEFB .ADDP1 + + ENDM + POP HL + POP DE + POP BC + POP AF + RET + SKP H + +; + ERENT 03 +ER03: ENT + IFD @2 + ENDIF + IFU @2 + LD A,03 + ENDIF + DEFB 21H + ENDM + ERENT 06 +ER06: ENT + IFD @2 + ENDIF + IFU @2 + LD A,06 + ENDIF + DEFB 21H + ENDM + ERENT 28,1 +ER28: ENT + IFD 1 + LD A,28+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 40,1 +ER40: ENT + IFD 1 + LD A,40+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 41,1 +ER41: ENT + IFD 1 + LD A,41+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 42,1 +ER42: ENT + IFD 1 + + LD A,42+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 43,1 +ER43: ENT + IFD 1 + LD A,43+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 46,1 +ER46: ENT + IFD 1 + LD A,46+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 50,1 +ER50: ENT + IFD 1 + LD A,50+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 51,1 +ER51: ENT + IFD 1 + LD A,51+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 52,1 +ER52: ENT + IFD 1 + LD A,52+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 53,1 +ER53: ENT + IFD 1 + LD A,53+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + + ERENT 54,1 +ER54: ENT + IFD 1 + LD A,54+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 55,1 +ER55: ENT + IFD 1 + LD A,55+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 58 +ER58: ENT + IFD @2 + ENDIF + IFU @2 + LD A,58 + ENDIF + DEFB 21H + ENDM + ERENT 59,1 +ER59: ENT + IFD 1 + LD A,59+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 60,1 +ER60: ENT + IFD 1 + LD A,60+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 61,1 +ER61: ENT + IFD 1 + LD A,61+80H + ENDIF + IFU 1 + ENDIF + DEFB 21H + ENDM + ERENT 63,1 +ER63: ENT + IFD 1 + LD A,63+80H + ENDIF + IFU 1 + + ENDIF + DEFB 21H + ENDM + ERENT 64 +ER64: ENT + IFD @2 + ENDIF + IFU @2 + LD A,64 + ENDIF + DEFB 21H + ENDM +ER68: ENT + LD A,68+80H + JP ERRORJ +; +; +; Error recover routine +; +ERRCVR: ENT + LD A,(QSEG) + OR A + LD B,0 + CALL NZ,CLKL ;KILL + CALL FLOFF ;FD motor off + CALL QDOFF ;QD motor off + XOR A + LD (QSEG),A + JP DUST ;I/O open check +;JP MLDSP + DEFS 3 +; +QSEG: ENT + DEFB 0 +; + END diff --git a/software/asm/mz-xz009/MON-PSG.ASM b/software/asm/mz-xz009/MON-PSG.ASM new file mode 100644 index 0000000..bd2a4fa --- /dev/null +++ b/software/asm/mz-xz009/MON-PSG.ASM @@ -0,0 +1,1067 @@ +; ---------------------------- +; MZ800-monitor PSG handlar +; FI:MON-PSG ver 001 7.26.84 +; ---------------------------- +; + INCLD MACRO +; +SYS: EQU 1 ;0 MZ-1500 1 PLE +; +NMAX: EQU 83 ;/ÙÄs max +PSGA: EQU F2H +PSG3: EQU 3F2H +PSG9: EQU 9F2H +; + IF SYS +MUSCH: EQU 6 +MAXCH: EQU 8 +PSGALL: EQU E9H +PSGOFF: EQU 4E9H + ENDIF +; + IF SYS-1 +MUSCH: EQU 3 +MAXCH: EQU 4 +PSGALL: EQU F2H +PSGOFF: EQU 4F2H + ENDIF +;---------------------------------- +; +; INTM (music interrupt mode ) +;0 no operation +;1 music or noise +;2 sound n.time +; +;---------------------------------- +; +INTM: ENT + DEFB 0 +SBUSY: DEFB 0 ;music or noise only +INTC: DEFB 0 +;---------------------------------- +; +; sound out current tabel +; +; +;---------------------------------- +; tone 1a +; +STBL: DEFB 80H ;frequency (l) + DEFB 00H ;frequency (h) + DEFB 9FH ;attenation +; tone 2a + DEFB A0H ;frequency (l) + DEFB 00H ;frequency (h) + DEFB BFH ;attenation +; tone 3a + DEFB C0H ;frequency (l) + DEFB 00H ;frequency (h) +STN0: DEFB DFH ;attenation +; + + IF SYS +; tone 1b +; + DEFB 80H ;frequency (l) + DEFB 00H ;frequency (h) + DEFB 9FH ;attenation +; tone 2b + DEFB A0H ;frequency (l) + DEFB 00H ;frequency (h) + DEFB BFH ;attenation +; tone 3b + DEFB C0H ;frequency (l) + DEFB 00H ;frequency (h) +STN1: DEFB DFH ;attenation + ENDIF + SKP H + +;---------------------------------- +; +; play table +; +;---------------------------------- +PTBL: DEFB 00H ;ch no. + DEFB 00H ;atc0 + DEFB 00H ;atc1 + DEFB 00H ;emva(l) + DEFB 00H ;emva(h) + DEFB 00H ;att + DEFB 00H ;length0 + DEFB 00H ;tempo0 + DEFB 00H ;length1 + DEFB 00H ;tempo1 + DEFB 00H ;qbuf(l) + DEFB 00H ;qbuf(h) + DEFB 00H ;emvp + DEFB 00H ;status + DEFB 00H ;vol + DEFB 00H ;reserve + DEFB 01H ;ch no. + DEFS 15 ;ch1 + DEFB 02H ;ch no. + DEFS 15 ;ch2 + DEFB 03H ;ch no. + DEFS 15 ;noise1 +; + IF SYS + DEFB 04H ;ch no. + DEFS 15 ;ch3 + DEFB 05H ;ch no. + DEFS 15 ;ch4 + DEFB 06H ;ch no. + DEFS 15 ;ch5 + DEFB 07H ;ch no. + DEFS 15 ;noise2 + ENDIF +;---------------------------------- +; +; +; ontyo tabel +; +;---------------------------------- +LTBL: DEFB 1 ;0 + DEFB 2 ;1 + DEFB 3 ;2 + DEFB 4 ;3 + DEFB 6 ;4 + DEFB 8 ;5 + DEFB 12 ;6 + DEFB 16 ;7 + DEFB 24 ;8 + DEFB 32 ;9 +;---------------------------------- +; +; +; tempo tabel +; +;---------------------------------- + + DEFB 23 ;1 64 + DEFB 20 ;2 74 + DEFB 17 ;3 90 + DEFB 13 ;4 114 + DEFB 10 ;5 152 + DEFB 7 ;6 222 + DEFB 3 ;7 450 + SKP H + +;---------------------------------- +; emvelop pattern tabel +; +; ATT ÀÙÛÛÙ code +; +; 0 3 +; -1 4 +; +1 5 +; r 0 +; max 1 +; min 2 +;---------------------------------- +ETBL: DEFB 00H ;emvp 0 + DEFB 05H + DEFB 03H + DEFB 03H ;dummy +; + DEFB 0FH ;emvp 1 + DEFB 04H + DEFB 01H + DEFB 03H ;dummy +; + DEFB 00H ;emvp 2 + DEFB 05H + DEFB 02H + DEFB 00H +; + DEFB 0FH ;emvp 3 + DEFB 04H + DEFB 01H + DEFB 00H +; + DEFB 00H ;emvp 4 + DEFB 05H + DEFB 02H + DEFB 03H +; + DEFB 0FH ;emvp 5 + DEFB 04H + DEFB 03H + DEFB 03H ;dummy +; + DEFB 00H ;emvp 6 + DEFB 05H + DEFB 04H + DEFB 00H +; + DEFB 0FH ;emvp 7 + DEFB 04H + DEFB 05H + DEFB 00H +; + DEFB 00H ;emvp 8 + DEFB 03H + DEFB 03H + DEFB 00H + SKP H + +;---------------------------------- +; +; frequency tabel +; +;---------------------------------- +NTBL: DEFW 3F00H ; A + DEFW 3B07H ; A# + DEFW 3802H ; B +; +; octave 1 +; + DEFW 340FH ; C + DEFW 3200H ; C# + DEFW 2F03H ; D + DEFW 2C09H ; D# + DEFW 2A01H ; E + DEFW 270BH ; F + DEFW 2507H ; F# + DEFW 2306H ; G + DEFW 2106H ; G# + DEFW 1F08H ; A + DEFW 1D0CH ; A# + DEFW 1C01H ; B +; +; octave 2 +; + DEFW 1A08H ; C + DEFW 1900H ; C# + DEFW 1709H ; D + DEFW 1604H ; D# + DEFW 1500H ; E + DEFW 130DH ; F + DEFW 120CH ; F# + DEFW 110BH ; G + DEFW 100BH ; G# + DEFW 0F0CH ; A + DEFW 0E0EH ; A# + DEFW 0E00H ; B +; +; octave 3 +; + DEFW 0D04H ; C + DEFW 0C08H ; C# + DEFW 0B0DH ; D + DEFW 0B02H ; D# + DEFW 0A08H ; E + DEFW 090FH ; F + DEFW 0906H ; F# + DEFW 080DH ; G + DEFW 0805H ; G# + DEFW 070EH ; A + DEFW 0707H ; A# + DEFW 0700H ; B +; +; octave 4 +; + DEFW 060AH ; C + DEFW 0604H ; C# + DEFW 050EH ; D + DEFW 0509H ; D# + + DEFW 0504H ; E + DEFW 040FH ; F + DEFW 040BH ; F# + DEFW 0407H ; G + DEFW 0403H ; G# + DEFW 030FH ; A + DEFW 030BH ; A# + DEFW 0308H ; B +; +; octave 5 +; + DEFW 0305H ; C + DEFW 0302H ; C# + DEFW 020FH ; D + DEFW 020DH ; D# + DEFW 020AH ; E + DEFW 0208H ; F + DEFW 0205H ; F# + DEFW 0203H ; G + DEFW 0201H ; G# + DEFW 010FH ; A + DEFW 010EH ; A# + DEFW 010CH ; B +; +; octave 6 +; + DEFW 010AH ; C + DEFW 0109H ; C# + DEFW 0108H ; D + DEFW 0106H ; D# + DEFW 0105H ; E + DEFW 0104H ; F + DEFW 0103H ; F# + DEFW 0102H ; G + DEFW 0101H ; G# + DEFW 0100H ; A + DEFW 000FH ; A# + DEFW 000EH ; B +; +; +; +MSTBL: DEFW BF9FH + DEFW FFDFH +; +; +; +TSOUT: DEFB 80H ;ch 0 + DEFB 00H + DEFB 90H ;att +TSOUTC: DEFB 00H ;counter(l) + DEFB 00H ;counter(h) + SKP H + +;---------------------------------- +; +; +; Music interrupt routine +; +; +;---------------------------------- +PSGINT: ENT + PUSH IY + CALL INT0 + POP IY + EI + RETI +; +INT0: CALL PUSHRA + CALL MSTART ;8253 intialize +; + LD A,(INTM) + OR A + JP Z,MSTOP0 + DEC A + JP NZ,SDINT ;skip if sound out +; + LD BC,PSG9 ;psg data out + LD HL,STBL + OTIR +; + IF SYS + LD B,9 + INC C + OTIR + ENDIF +; + LD B,8 + LD A,(SBUSY) + OR A + JP Z,MSTOP0 ;channel all close + LD C,A +INT1: DEC B + RET M + RLC C + JR NC,INT1 + PUSH BC + LD A,B + CALL INTER + BIT 0,(IY+13) + CALL Z,NINT + CALL MINT + POP BC + JR INT1 + SKP H + +;---------------------------------- +; +; Emvelop control +; +;---------------------------------- +NINT: DEC (HL) ;HL=chx act0 + RET NZ + INC HL ;new couter set + LD A,(HL) ;load atc1 + DEC HL + LD (HL),A ;save atc0 + INC HL + INC HL + LD E,(HL) ;HL=enva + INC HL + LD D,(HL) ;HL=enva+1 + EX DE,HL +NINT1: LD A,(HL) ;env ÀÙÛÛÙ data + OR A ;data check 0 + JR NZ,NINT2 ;noskip if repeat + DEC HL + DEC HL + JR NINT1 +; +; +NINT2: EX DE,HL ;de=curent emva + INC HL + DEC A + JR Z,NINT3 ;skip if max Acc=1 + DEC A + JR Z,NINT5 ;skip if min Acc=2 + DEC A + RET Z ;ÀÙÛÛÙ 0 Acc=3 +; + DEC A ;Acc=4 + LD A,(HL) ;att data + JR Z,NINT4 ;skip if dec att + INC A ;Acc=5 + CP 15 ;max + JR Z,NINT7 + JR C,NINT7 +NINT3: LD A,15 ;maximam + JR NINT6 +NINT4: DEC A ;dec att + JP M,NINT5 + LD C,(IY+14) ;vol minimum + CP C + JR NC,NINT7 +NINT5: LD A,(IY+14) ;minimum +NINT6: INC DE ;de=next curent emva +NINT7: LD (HL),A ;new att data + DEC HL + LD (HL),D + DEC HL + LD (HL),E +; +ATTSET: AND 0FH + LD B,A ;acc=att data +ATTS1: LD A,(IX+2) ;stbl att + AND F0H + + OR B + LD (IX+2),A ;stbl att + RET + SKP H + +;---------------------------------- +; +; new data interpret routine +; +;---------------------------------- +; +MINT: DEC (IY+6) ;length0 + RET NZ + DEC (IY+7) ;tempo0 + LD A,(IY+8) ;length1 + LD (IY+6),A ;length counter preset + RET NZ + LD A,(IY+9) ;tempo1 + LD (IY+7),A ;tempo counter preset + LD E,(IY+10) ;que addr(l) + LD D,(IY+11) ;que addr(h) +; +; +MINT1: LD A,(DE) + INC DE + CP FFH + JR Z,MINT2 + CP A0H + JR Z,MINT3 + CP 90H + JR NC,MINT4 + CP 80H + JR NC,MINT5 + CP 60H + JR NC,MINT6 + SUB 9 + LD (IY+10),E ;que addr (l) + LD (IY+11),D ;que addr (h) + SET 0,(IY+13) ;rflag set + JR C,MINT7 + RES 0,(IY+13) ;rflag reset + CALL SETNO ;Nn +MINT7: LD A,(IY+2) ;att + LD (IY+1),A + LD A,(IY+8) ;length + LD (IY+6),A + LD A,(IY+9) ;tempo + LD (IY+7),A + BIT 0,(IY+13) + JR NZ,MEND +; +; + LD A,(IY+12) ;emv pattern + LD BC,ETBL + ADD A,A ;*2 + ADD A,A ;*4 + LD H,0 + LD L,A + ADD HL,BC ;HL=ETBL+4*A + LD A,(HL) + OR A + JR NZ,MINT71 + LD A,(IY+14) ;vol minimum +MINT71: LD (IY+5),A ;att + CALL ATTSET + + INC HL + LD (IY+3),L ;emva (l) + LD (IY+4),H ;emva (h) + RET +; +; +; +MINT3: LD A,(DE) ;Mn + INC DE + LD (IY+2),A ;atc1 +MINT11: JR MINT1 +; +MINT2: CALL BRESET ;channel reset +MEND: LD A,0FH + JP ATTSET +; +; +MINT4: SUB 90H ;Sn + LD (IY+12),A ;curent emv no. + JR MINT11 +; +; +MINT5: SUB 80H ;Vn + CPL + AND 0FH + LD (IY+14),A ;vol minimum + JR MINT11 +; +; +; tempo & length +; +; +MINT6: SUB 60H ;Tn,Ln + LD B,0 + LD C,A + LD HL,LTBL + ADD HL,BC + CP 0AH + LD A,(HL) + JR NC,MINT61 + LD (IY+8),A ;length1 + JR MINT11 +MINT61: LD (IY+9),A ;tempo1 + JR MINT11 + SKP H + +;-------------------------------- +; +; +; onpu set +; +; acc = onpu map data +; ix = set mout tbladdr +;-------------------------------- +; +SETNO: ADD A,A ;*2 + LD HL,NTBL + LD B,0 + LD C,A + ADD HL,BC + LD B,(HL) + LD A,(IX+0) + AND F0H + OR B + LD (IX+0),A + INC HL + LD A,(HL) + LD (IX+1),A + RET +;---------------------------------- +; +; SOUND=(reg,data) +; +; ent A.... reg+80H +; DE... data +; +; +; SOUND n,time +; +; ent A.... n +; DE... time +; +;---------------------------------- +; +MSOUND: ENT + OR A + JP P,SOUT + AND 0FH + LD C,PSGA ;psg-a +; + IF SYS +; + CP 8 + JR C,+5 + SUB 8 + INC C ;C=psg sel, A=reg#. +; + ENDIF +; + ADD A,A + ADD A,A + ADD A,A + ADD A,A + OR 80H + LD B,A ;B = 1rrr0000 +; + + BIT 4,A + JR NZ,MSND.A ;att + CP E0H + JR Z,MSND.N ;noise ctrl + LD A,D ;freq + CP 04H + JR NC,MER3 + LD A,E + AND 0FH + OR B ;1rrrffff + OUT (C),A + LD A,D + LD B,4 + RL E + RLA + DJNZ -3 + OUT (C),A ;0fffffff + RET +; +MSND.N: BIT 3,E + JR NZ,MER3 +MSND.A: LD A,E + AND F0H + OR D + JR NZ,MER3 + LD A,E + OR B + OUT (C),A ;1rrrcccc + RET +; +MER3: JP ER03 +; +;-------------------------------- +; +; sout +; +;-------------------------------- +; +SDINT: LD HL,(TSOUTC) + DEC HL + LD (TSOUTC),HL + LD A,L + OR H + RET NZ + JP MSTOP0 +; +; +; SOUND n,l +; +; +SOUT: ENT + LD C,A + LD A,D + OR E + RET Z + LD A,C +; + LD IX,TSOUT + CP NMAX+1 + RET NC + + SUB 9 + PUSH AF + LD A,90H + JR NC,SOUT1 + LD A,9FH +SOUT1: LD (IX+2),A ;TSOUT att + CALL MWAIT0 + POP AF + CALL NC,SETNO ;skip if not rest + DI + LD A,2 + LD (INTM),A + LD (TSOUTC),DE + LD HL,TSOUT + LD BC,PSG3 ;psg-a out + OTIR + CALL MSTART + EI + RET +; +;-------------------------------- +; +; Interpret point set +; +; +; in Acc=channel +; +; exit ix:stbl +; iy:ptbl +; hl:ptbl+1 +; +;---------------------------------- +INTER: PUSH BC + PUSH AF + CP 3 + JR C,INTER1 + DEC A +; + IF SYS + CP 6 + JR NZ,INTER1 + DEC A + ENDIF +; +INTER1: LD HL,STBL + LD B,A + ADD A,A ;*2 + ADD A,B ;*3 + LD C,A + LD B,0 + ADD HL,BC + PUSH HL + POP IX +; + POP AF + ADD A,A ;*2 + ADD A,A ;*4 + ADD A,A ;*8 + ADD A,A ;*16 + LD HL,PTBL + + LD B,0 + LD C,A + ADD HL,BC + PUSH HL + POP IY + INC HL + POP BC + RET + SKP H + +;-------------------------------- +; +; play,noise +; +;-------------------------------- +; +; +PLAY: ENT + CP FFH + JR NZ,PLY0 + LD A,MAXCH-1 +PLYALL: PUSH AF + PUSH DE + CALL PLY0 + POP DE + POP AF + DEC A + JP M,PSGON + JR PLYALL +; +PLY0: PUSH AF + LD HL,STN0 + IF SYS + CP 4 + JR C,PLY00 + LD HL,STN1 + ENDIF +; +PLY00: CP 3 + JR Z,PLY1 +; + IF SYS + CP 7 + JR Z,PLY1 + ENDIF +; + LD A,DFH + JR PLY2 +; +PLY1: LD A,E7H ;noise channel out + OUT (PSGALL),A + LD A,FFH +PLY2: LD (HL),A ;STN0 or STN1 + DI + LD A,1 + LD (INTM),A + POP AF + CALL INTER + CALL BSET + CALL MINT1 + EI + RET +; +; +PSGON: ENT + DI + LD A,(INTM) + OR A + CALL NZ,MSTART + EI + + RET +; +BRESET: LD B,86H + JR BSET0 +; +BSET: LD B,C6H +BSET0: LD HL,SBUSY + LD A,(IY+0) + OR A + RLCA + RLCA + RLCA ;00xxx000 + OR B ;10xxx110 or 11xxx110 + LD (BSET1),A + DEFB CBH ;SET n,(HL) or reset +BSET1: DEFB 0 + RET + SKP H + +;---------------------------------- +; +; sft+break or error or music stop +; +;---------------------------------- +; +MLDSP: ENT +MSTOP: CALL PUSHR +; +MSTOP0: XOR A + LD (INTM),A + LD (SBUSY),A +; + LD BC,PSGOFF + LD HL,MSTBL + OTIR + LD B,MUSCH + LD HL,STBL+2 +MSTOP1: LD A,(HL) + AND F0H + OR 0FH + LD (HL),A + INC HL + INC HL + INC HL + DJNZ MSTOP1 + LD A,3 + OUT (FCH),A ;pio disenable + XOR A + IF SYS-1 + RET ;8253 gate no effect + ENDIF +; + IF SYS + LD HL,E008H ;mz-700 compatible mode + JP LDHLA ;8253 gate disable + ENDIF +; +;---------------------------------- +; +; music wait +; +;---------------------------------- +; +MWAIT: ENT +; +MWAIT0: LD A,(INTM) + OR A + RET Z +MWAIT1: SVC .BREAK + RST 3 + DEFB .BREAK + ENDM + JR NZ,MWAIT + JP BREAKZ + SKP H + +;---------------------------------- +; SVC .MCTRL ; music control +; B=0: init +; B=1: psgon +; B=2: stop +; B=3: wait +;---------------------------------- +; +MCTRL: ENT + DEC B + JP Z,PSGON + DEC B + JR Z,MSTOP ;1 + DEC B + JR Z,MWAIT0 ;2 +;---------------------------------- +; +; PSG power on init +; +; +;---------------------------------- +PSGPWR: ENT + CALL MSTOP + LD BC,5FCH + LD HL,PIOTBL + OTIR + LD DE,MUINID + LD A,FFH + JP PLAY +; +; + IF SYS +PIOTBL: DEFB FCH ;Vector + DEFB FFH ;mode 3 (bit mode) + DEFB 3FH ;I/O + DEFB 37H ;interrupt control + DEFB EFH ;interrupt mask +; +; +MSTART: OUT (E3H),A + LD A,30H + LD HL,E007H + LD (HL),A ;8253 control + LD BC,22A5H ;10ms =22F6H + LD L,4 ;HL=E004H + LD (HL),C ;8253 time const + LD (HL),B + DEC HL ;HL=E003H + LD (HL),4 ;8253 int disable + LD (HL),0 ;8253 music disable + LD A,01H + LD L,8 ;HL=E008H + LD (HL),A ;8253 gate enable + LD A,83H + OUT (FCH),A ;pio int enable + OUT (E1H),A + RET + ENDIF +; + IF SYS-1 + +MSTART: + LD HL,PIOTBL + LD BC,5FCH + OTIR + LD HL,CTCTBL + LD B,6 + JP IOOUT +; +; +PIOTBL: DEFB FCH ;Vector + DEFB FFH ;mode 3 (bit mode) + DEFB 3FH ;I/O + DEFB 17H ;interrupt control + DEFB EFH ;interrupt mask +; +CTCTBL: DEFW D730H + DEFW D4B0H ;10 ms =2B4CH + DEFW D42AH + DEFW D304H + DEFW D300H + DEFW FC83H + ENDIF +; +MUINID: DEFB 65H ;L5 + DEFB 6DH ;T4 + DEFB 98H ;S8 + DEFW FFA0H ;M255 + DEFB FFH ;END + IF SYS +;---------------------------------- +; +; +; BELL (BEEP) use 8253 +;---------------------------------- +CTRLG: ENT + CALL PUSHR + LD (CTRLG9+1),SP + SVC .DI + LD SP,IBUFE + OUT (E4H),A ;K/C mapping + CALL 02BEH ;ROM MLDSP + LD A,1 + LD DE,E003H + LD (DE),A ;8253 music gate on + LD HL,03F9H + CALL 02AEH ;ROM MLDST+3 + LD BC,18H + EX (SP),HL ;wait + DJNZ -1 + DEC C + JR NZ,-4 + CALL 02BEH ;ROM MLDSP + XOR A + LD (DE),A ;8253 music gate off + OUT (E0H),A ;K/C mapping + OUT (E1H),A + SVC .EI +CTRLG9: LD SP,0 ;xxx + RET + ENDIF + +; + IF SYS-1 +; +CTRLG: ENT + CALL PUSHR + SVC .DI + RST 3 + DEFB .DI + ENDM + LD HL,BEEP0 + LD B,4 + CALL IOOUT + LD BC,18H + EX (SP),HL + DJNZ -1 + DEC C + JR NZ,-4 + LD HL,BEEP1 + LD B,2 + CALL IOOUT + SVC .EI + RST 3 + DEFB .EI + ENDM + RET +; +; +BEEP0: + DEFW D736H + DEFW D301H + DEFW D4F9H + DEFW D403H +; +BEEP1: + DEFW D736H + DEFW D300H +;-------------------------------- +; +; tempo set +; acc=1-7 +;-------------------------------- +?TEMP: ENT + CALL PUSHRA + LD DE,TEMPOW + AND 0FH + ADD A,69H + LD (DE),A + LD B,3 + SVC .MCTRL ;MWAIT + RST 3 + DEFB .MCTRL + ENDM + LD A,FFH ;Channel all + SVC .PLAY + RST 3 + DEFB .PLAY + ENDM + LD B,1 + SVC .MCTRL ;PSGON + RST 3 + + DEFB .MCTRL + ENDM + RET +; +TEMPOW: DEFS 1 + DEFB FFH +; + ENDIF + END diff --git a/software/asm/mz-xz009/MON-RS.ASM b/software/asm/mz-xz009/MON-RS.ASM new file mode 100644 index 0000000..74b8199 --- /dev/null +++ b/software/asm/mz-xz009/MON-RS.ASM @@ -0,0 +1,469 @@ +; ---------------------------- +; MZ-800 RS-232C driver +; FI:MON-RS ver 001 8.02.84 +; ---------------------------- +; + INCLD MACRO +RSYS: EQU 1 ;0 700,1500 +; 1 800 + IF RSYS +RMCH: EQU 3 + ENDIF +; + IF RSYS-1 +RMCH: EQU 1 + ENDIF +; +; +$RS: ENT + DEFW $RAM + DEFM "RS" + DEFW 0 + DEFB 8FH ;Streem, O1C, I1C, W, R + DEFB RMCH ;ch. + DEFB 0 + DEFW RSINI ;INIT + DEFW RSRO ;ROPEN + DEFW RSWO ;WOPEN + DEFW RSCL ;CLOSE + DEFW RSKL ;KILL + DEFW RSINP ;INP1C + DEFW RSOUT ;OUT1C + DEFW .RET ;POS +; +RSINI: RET C + PUSH IY + CALL SETIY + CALL RSINT0 + CALL RSPARM + JR RETIY +; +RSINT0: SVC .DEASC + RST 3 + DEFB .DEASC + ENDM + LD (IY+#MONIT),E + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JP NZ,ER03 + SVC .DEASC + RST 3 + DEFB .DEASC + ENDM + LD (IY+#INIT),E + TEST1 0 + CALL TEST1 + DEFB 0 + ENDM + RET Z + + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JP NZ,ER03 + SVC .DEASC + RST 3 + DEFB .DEASC + ENDM + LD (IY+#CRLF),E + RET + SKP H + +; +RSRO: +RSWO: PUSH IY + CALL SETIY + LD A,(IY+#STAT) + INC (IY+#STAT) + OR A + CALL Z,RSOPEN + JR RETIY +; +; +RSCL: +RSKL: PUSH IY + CALL SETIY + DEC (IY+#STAT) + LD A,(IY+#STAT) + OR A + CALL Z,RCLOSE + JR RETIY2 +; +; +; +RSINP: PUSH IY + CALL SETIY + CALL RSINP0 + JP C,IOERR + CP (IY+#CRLF) + JR NZ,+4 + LD A,0DH +RETIY2: OR A +RETIY: POP IY + RET +; +RSINP0: BIT 6,(IY+#INIT) + JP Z,GET1C + LD IX,GET1C + LD HL,IY + LD DE,#JISR + ADD HL,DE + JP JISR +; +RSOUT: PUSH IY + CALL SETIY + CP 0DH + JR NZ,+5 + LD A,(IY+#CRLF) + CALL RSOUT0 + JR RETIY +; +RSOUT0: BIT 6,(IY+#INIT) + JP Z,PUT1C + LD IX,PUT1C + LD HL,IY + LD DE,#JISX + ADD HL,DE + LD DE,(DISPX) + JP JISX + SKP H + +; +SETIY: PUSH AF + PUSH DE + LD A,(ZCH) + INC A + LD IY,$A-TBLN + LD DE,TBLN +SETIY2: ADD IY,DE + DEC A + JR NZ,SETIY2 + LD C,(IY+0) + POP DE + POP AF + RET +; +; +;*** PORT ADDRESS EQU *** +; +CHADT: EQU B0H +CHACT: EQU B1H +CHBDT: EQU B2H +CHBCT: EQU B3H +; +; +CHCDT: EQU D0H +CHCCT: EQU D1H +CHDDT: EQU D2H +CHDCT: EQU D3H +; +#CRLF: EQU -8 +#JISX: EQU -7 +#JISR: EQU -5 +#MONIT: EQU -3 +#INIT: EQU -2 +#STAT: EQU -1 + SKP H + +; +; + DEFS 1 ;CR or LF + DEFS 2 ;for JISX + DEFS 2 ;for JISR + DEFS 1 ;monitor + DEFS 1 ;init code + DEFS 1 ;status +$A: DEFB CHACT ;0 + DEFB CHADT ;1 + DEFS 1 ;2 Mask Pattern + DEFW 1010H ;3,4 + DEFW 4004H ;5,6 WR4 + DEFW C003H ;7,8 WR3 + DEFW 6005H ;9,10 WR5 + DEFB 30H + DEFB 3 +; +; + DEFS 8 +$B: DEFB CHBCT + DEFB CHBDT + DEFS 1 + DEFW 1010H + DEFW 4004H + DEFW C003H + DEFW 6005H + DEFB 30H + DEFB 3 +; +; + IF RSYS + DEFS 8 +$C: DEFB CHCCT ;0 + DEFB CHCDT ;1 + DEFS 1 ;2 Mask Pattern + DEFW 1010H ;3,4 + DEFW 4004H ;5,6 WR4 + DEFW C003H ;7,8 WR3 + DEFW 6005H ;9,10 WR5 + DEFB 30H + DEFB 3 +; +; + DEFS 8 +$D: DEFB CHDCT + DEFB CHDDT + DEFS 1 + DEFW 1010H + DEFW 4004H + DEFW C003H + DEFW 6005H + DEFB 30H + DEFB 3 + ENDIF +; +TBLN: EQU $B-$A +; + SKP H + +; +; +; Break Check +; +BRK: CALL BRKCHK + RET NZ + JP BREAKZ +; +; sio parameter set +; +; +; +RSPARM: + LD A,18H ;channel reset + OUT (C),A + LD A,30H ;err reset + OUT (C),A + LD A,(IY+#INIT) ;inital bit + AND 0CH ;stop bit + JR NZ,RSP0 + SET 2,(IY+#INIT) ;1 bit/chr +RSP0: LD A,(IY+#INIT) ;initial bit + LD B,A ;B=init code + AND 0FH ;mask + OR 40H ;clock rate *16 + LD (IY+6),A ;wr4 + LD A,B + AND 80H ;rx disable d7 bit/chr + OR 40H + LD (IY+8),A ;wr3 + RRA + AND 7FH ;dtroff + OR 0AH ;tx enable rtson dtroff + LD (IY+10),A ;wr5 + LD A,B + OR 7FH + LD (IY+2),A ;bit mask + CALL RSSUB +RSTBUF: + IN A,(C) + RRCA + RET NC + DEC C + IN A,(C) + INC C + LD A,1 + OUT (C),A + IN A,(C) + AND 70H + JR Z,RSTBUF + RET +; +; +; +; +; SIO close +; +; +RCLOSE: RES 0,(IY+8) ;rx disable + RES 7,(IY+10) ;rdy off + + LD (IY+#STAT),0 +RSSUB: LD B,10 + PUSH IY + POP HL + LD DE,3 + ADD HL,DE + OTIR + RET +; +; +; SIO open +; +; +RSOPEN: LD A,30H + OUT (C),A ;err reset + RET + SKP H + +; +; +; in IY=channel data +; C=channel control port +; +; +; +RSEN: SET 0,(IY+8) ;wr3 RX enable + LD A,13H + OUT (C),A ;ext/int reset + LD A,(IY+8) ;wr3 + OUT (C),A ;wr5 + LD A,35H ;err reset + OUT (C),A + LD A,(IY+10) ;wr5 + OR 88H ;dtr,rts on tx enable + LD (IY+10),A ;wr5 + OUT (C),A + RET +; +; +RSDIS: LD A,3 + OUT (C),A + RES 0,(IY+8) ;wr3 RX disenable + LD A,(IY+8) ;wr3 + OUT (C),A +; +RDYOF: RES 7,(IY+10) ;wr5 dtr reset + JR WR5OUT +; +; +RTSON: SET 1,(IY+10) ;wr5 rts set + JR WR5OUT +; +; +RTSOFF: RES 1,(IY+10) ;wr5 rts reset + JR WR5OUT +; +; +RDYON: SET 7,(IY+10) ;wr5 dtr set +WR5OUT: LD A,5 + OUT (C),A + LD A,(IY+10) ;wr5 + OUT (C),A + OR A + RET + SKP H + +; +; +; Receive 1 char +; +; +GET1C: CALL PUSHR + LD C,(IY+0) +GET1: CALL BRK + CALL DRCKR + JR C,GET1 + CALL RSEN +CHIN: CALL BRK + IN A,(C) + RRCA + JR NC,CHIN ;skip if no data + DEC C + IN A,(C) ;data input + INC C + AND (IY+2) ;mask + PUSH AF + LD A,1 + OUT (C),A + IN A,(C) + AND 70H + JR NZ,RSER ;skip if err + CALL RDYOF + POP AF + RET +; +; +; +RSER: LD B,A + POP AF + PUSH BC + CALL RSPARM + POP BC + LD A,29 ;framing err + RLC B + RLC B + RET C + INC A ;overrun err + RLC B + RET C + INC A ;parity err + SCF + RET + SKP H + +; +; +; Send 1 char +; +; +PUT1C: CALL PUSHR + LD C,(IY+0) + LD D,A + CALL RTSON +PUT1: CALL BRK + CALL DRCKS + CALL NC,CTSCK + JR C,PUT1 + IN A,(C) + BIT 2,A ;tx buf empty ? + JR Z,PUT1 + BIT 7,(IY+#MONIT) ;all chr send? + JR Z,PUT2 + LD A,1 + OUT (C),A + IN A,(C) + RRCA + JR NC,PUT1 +PUT2: DEC C + OUT (C),D ;data out + INC C + BIT 6,(IY+#MONIT) ;rts on/off? + JR Z,PUT3 + CALL RTSOFF +PUT3: OR A + RET +; +; DCD check +; +DRCKR: OR A + BIT 0,(IY+#MONIT) ;moniter dr ? + JR DRCK1 +; +DRCKS: OR A ;carry clear + BIT 1,(IY+#MONIT) ;moniter dr ? +DRCK1: RET Z + LD A,10H ;ext/int reset + OUT (C),A + IN A,(C) + AND 8 + RET NZ ;cy=0 + SCF + RET +; +; CTS check +; +CTSCK: OR A + BIT 2,(IY+#MONIT) ;moniter cts ? + RET Z + LD A,10H + OUT (C),A + IN A,(C) + AND 20H + RET NZ + SCF + + RET +; + END diff --git a/software/asm/mz-xz009/MON1.ASM b/software/asm/mz-xz009/MON1.ASM new file mode 100644 index 0000000..631e3b2 --- /dev/null +++ b/software/asm/mz-xz009/MON1.ASM @@ -0,0 +1,3737 @@ + LIST + INCLD MACRO + +; --------------------------- +; MZ-800 crt port define +; FI:CRTEQU ver 1.0 7.26.84 +; --------------------------- +; + +; +; custom lsi ports +; +; +; +LSPAL: EQU 0F0H ;pallet +LSFC: EQU 0FCH +LSE0: EQU 0E0H +LSE1: EQU 0E1H +LSE2: EQU 0E2H +LSE3: EQU 0E3H +LSE4: EQU 0E4H +LSE5: EQU 0E5H +LSE6: EQU 0E6H +LSD0: EQU 0D0H +LSD1: EQU 0D1H +LSD2: EQU 0D2H +LSD3: EQU 0D3H +; +LSWF: EQU 0CCH +LSRF: EQU 0CDH +LSDMD: EQU 0CEH +LSSCR: EQU 0CFH +; +; +; +; work area +; +TEXTBF: EQU 2000H +BITBUF: EQU 8000H +FONTBF: EQU 1000H +ERRTXT: EQU FDA0H + END + SKP H + + INCLD XPL1 +; ---------------------------- +; MZ-800 Monitor part-1 +; FI:PL1 ver 1.0 7.30.84 +; ---------------------------- +; +; +; + ORG 0 + JP STARTP + JP GETL + JP CR1 + JP CR2 + JP CRT1S + JP PRNTT + JP CRT1C + JP CRTMSG +; +.IOSVC: EQU 3 + JP IOSVC ;RST3 superviser call entry +; + JP INKEY0 +BRKCHK: ENT + JP BRKEY + JP SAVE1 + JP SAVE2 + JP LOAD1 + JP LOAD2 + JP LOAD?2 + JP .RET ;RST6 + JP TIMST +; +; + DEFS 2 ;dummy +; + JP .RET ;RST7 debuger reserve +; + JP TIMRD +BEEP: JP CTRLG +$TEMPO: ENT + JP ?TEMP + JP MLDSP + JP MLDSP + JP GETL +; +SYSSTA: ENT + DEFW $START +ERRORP: ENT + DEFS 2 +; + JP CRTMSG ;org 51H +; + DEFS 4 +; + JP INKEY$ ;org 58H +;--------------------------------- +; +; crt driver contrl code tabel +; +;--------------------------------- + +CONTTB: DEFW .RET ;@ 00 + DEFW .RET ;A 01 + DEFW .RET ;B 02 + DEFW CTR.M ;C 03 + DEFW .RET ;D 04 + DEFW CTR.E ;E 05 sft lock + DEFW CTR.F ;F 06 sft normal + DEFW .RET ;G 07 beep + DEFW .RET ;H 08 + DEFW CTAB ;I 09 + DEFW .RET ;J 0A + DEFW .RET ;K 0B + DEFW .RET ;L 0C + DEFW CTR.M ;M 0D cr + DEFW SPLSW ;N 0E spool exec/stop + DEFW .RET ;O 0F + DEFW DEL ;P 10 del + DEFW CDOWN ;Q 11 cursor down + DEFW CUP ;R 12 cursor up + DEFW CRIGHT ;S 13 cursor right + DEFW CLEFT ;T 14 cursor left + DEFW HOME ;U 15 home + DEFW HCLSW ;V 16 clr + DEFW CTR.W ;W 17 graph + DEFW INST ;X 18 inst + DEFW CTR.Y ;Y 19 alpha + DEFW .RET ;Z 1A + DEFW CTR.M ;[ 1B esc + DEFW .RET ;\ 1C + DEFW .RET ;] 1D + DEFW .RET ;^ 1E + DEFW .RET ;_ 1F + SKP H + +; +CTRLJB: ADD A,A + LD HL,CONTTB + CALL ADDHLA + CALL INDRCT + JP (HL) +; +; +.NOP: ENT + NOP +; +.HL: ENT + JP (HL) +; +; +DI: + EI + PUSH AF + CALL MWAIT + CALL SPLOFF + POP AF + DI +.RET: ENT + RET +; +; +EI: + PUSH AF + CALL SPLON + POP AF + EI + RET +;---------------------------------- +; +; register all push program +; +; PUSHRA : PUSH IX,HL,BC,DE,AF +; PUSHR : PUSH IX,HL,BC,DE +; Destroy IX +; +;---------------------------------- +PUSHRA: ENT + EX (SP),IX + PUSH HL + PUSH BC + PUSH DE + PUSH AF + PUSH HL + LD HL,POPRA + EX (SP),HL + JP (IX) +PUSHR: ENT + EX (SP),IX + PUSH HL + PUSH BC + PUSH DE + PUSH HL + LD HL,POPR + EX (SP),HL + JP (IX) + +POPRA: POP AF +POPR: POP DE + POP BC + POP HL + POP IX + RET +; +; +; +;--------------------------------- +; +; cold startup routine +; +;--------------------------------- +;ORG DAH +; +COLDST: DI + LD SP,0000H + IM 2 + OUT (LSE1),A + LD HL,(SYSSTA) + JP (HL) ;system entry jump +; +; +; +;--------------------------------- +; +; BREAK,can't cont +;--------------------------------- +BREAKX: ENT + XOR A + DEFB 21H +;--------------------------------- +; BREAK,can cont +;--------------------------------- +BREAKZ: ENT + LD A,80H + DEFB 21H +;--------------------------------- +; I/O error +;--------------------------------- +IOERR: ENT + OR 80H +;--------------------------------- +; Error occur +;--------------------------------- +ERRORJ: ENT + PUSH AF + CALL MLDSP + POP AF + LD HL,(ERRORP) + JP (HL) ;error jump +; + SKP H + +; +;--------------------------------- +; +; B = String bytes (till 00H) +; +;--------------------------------- +COUNT: PUSH DE + LD B,0 +COUNT2: LD A,(DE) + OR A + JR Z,COUNT9 + INC DE + INC B + JR NZ,COUNT2 + DEC B +COUNT9: POP DE + RET +;--------------------------------- +; +; IOOUT +; +; Ent. HL=I/O data tabel +; B =counter +; +;--------------------------------- +IOOUT: ENT + LD A,(HL) + INC HL + LD C,(HL) + INC HL + OUT (C),A + DJNZ IOOUT + RET +; +; +; +; +; +DEVASC: ENT + SVC .DEASC + RST 3 + DEFB .DEASC + ENDM + LD A,D + OR A + JP NZ,ER03 + LD A,E + CP B + RET C + JP ER03 +; + SKP H + +; +; + ORG 011BH +;--------------------------------- +; +; +; CHECK ACC +; CALL CHKACC +; DEFB N +; DEFB X1 +; DEFB X2 +; : : +; DEFB XN +;--------------------------------- +CHKACC: ENT + EX (SP),HL + PUSH BC + LD B,M + INC HL + CP M + JR Z,CHACC1 + DJNZ -4 + INC HL + JR CHACC9 +CHACC1: INC HL + DJNZ -1 +CHACC9: POP BC + EX (SP),HL + RET +;--------------------------------- +; LD DE,(HL+) +;--------------------------------- +LDDEMI: ENT + LD E,M + INC HL + LD D,M + INC HL + RET +;--------------------------------- +; LD DE,(HL) +;--------------------------------- +LDDEMD: ENT + LD E,M + INC HL + LD D,M + DEC HL + RET +;--------------------------------- +; Clear (HL) B bytes +;--------------------------------- +?CLRHL: ENT + XOR A +;--------------------------------- +; Set (HL) B bytes +;--------------------------------- +?SETHL: ENT + LD M,A + INC HL + DJNZ -2 + RET + + SKP H + +;--------------------------------- +; Clear (DE) B bytes +;--------------------------------- +?CLRDE: ENT + XOR A +;--------------------------------- +; Set (DE) B bytes +;--------------------------------- +?SETDE: ENT + LD (DE),A + INC DE + DJNZ -2 + RET +;--------------------------------- +; LD (DE),(HL) B bytes +;--------------------------------- +LDDEHL: ENT + LD A,M + LD (DE),A + INC HL + INC DE + DJNZ -4 + RET +;--------------------------------- +; LD (HL),(DE) B bytes +;--------------------------------- +LDHLDE: ENT + LD A,(DE) + LD M,A + INC HL + INC DE + DJNZ -4 + RET +;--------------------------------- +; LD HL,(HL) +;--------------------------------- +INDRCT: ENT + PUSH AF + LD A,M + INC HL + LD H,M + LD L,A + POP AF + RET +;--------------------------------- +; ADD HL,A +;--------------------------------- +ADDHLA: ENT + ADD A,L + LD L,A + RET NC + INC H + RET + SKP H + +;--------------------------------- +; Fetch subroutines +;--------------------------------- +INCHLF: ENT + INC HL +HLFTCH: ENT + LD A,M + CP " " + JR Z,INCHLF + RET +;--------------------------------- +; TEST1 "x" ;test 1 char +;--------------------------------- +TEST1: ENT + CALL HLFTCH + EX (SP),HL + CP M + INC HL + EX (SP),HL + RET NZ + INC HL + RET +;--------------------------------- +; TESTX "x" ;check 1 char +;--------------------------------- +TESTX: ENT + CALL HLFTCH + EX (SP),HL + CP M + INC HL + EX (SP),HL + INC HL + RET Z ;OK + LD A,1 + JP ERRORJ ;Syntax error +; +; +; +; + SKP H + +;--------------------------------- +; SVC(RST3) table +;--------------------------------- +;MACRO SVCT +;@2:EQU @1H +;DEFW @3 +; +; +IOSVCT: + SVCT 00, .MONOP, MONOP ;00 +.MONOP: EQU 00H + DEFW MONOP + ENDM + SVCT 01, .CR1 , CR1 +.CR1: EQU 01H + DEFW CR1 + ENDM + SVCT 02, .CR2 , CR2 +.CR2: EQU 02H + DEFW CR2 + ENDM + SVCT 03, .CRT1C, CRT1C +.CRT1C: EQU 03H + DEFW CRT1C + ENDM + SVCT 04, .CRT1X, CRT1CX ;04 +.CRT1X: EQU 04H + DEFW CRT1CX + ENDM + SVCT 05, .CRTMS, CRTSIMU +.CRTMS: EQU 05H + DEFW CRTSIMU + ENDM + SVCT 06, .LPTOT, LPTOUT +.LPTOT: EQU 06H + DEFW LPTOUT + ENDM + SVCT 07, .LPT1C, LPT1C +.LPT1C: EQU 07H + DEFW LPT1C + ENDM + SVCT 08, .&CR , &CR ;08 +.&CR: EQU 08H + DEFW &CR + ENDM + SVCT 09, .&1C , &1C +.&1C: EQU 09H + DEFW &1C + ENDM + SVCT 0A, .&1CX , &1CX +.&1CX: EQU 0AH + DEFW &1CX + ENDM + SVCT 0B, .&MSG , &MSG +.&MSG: EQU 0BH + DEFW &MSG + ENDM + SVCT 0C, .GETL , GETL ;0C +.GETL: EQU 0CH + DEFW GETL + + ENDM + SVCT 0D, .INKEY, INKEY$ +.INKEY: EQU 0DH + DEFW INKEY$ + ENDM + SVCT 0E, .BREAK, BRKEY +.BREAK: EQU 0EH + DEFW BRKEY + ENDM + SVCT 0F, .HALT , HALT +.HALT: EQU 0FH + DEFW HALT + ENDM + SVCT 10, .DI , DI ;10 +.DI: EQU 10H + DEFW DI + ENDM + SVCT 11, .EI , EI +.EI: EQU 11H + DEFW EI + ENDM + SVCT 12, .CURMV, CURMOV +.CURMV: EQU 12H + DEFW CURMOV + ENDM + SVCT 13, .DEASC, DEASC +.DEASC: EQU 13H + DEFW DEASC + ENDM + SVCT 14, .DEHEX, DEHEX ;14 +.DEHEX: EQU 14H + DEFW DEHEX + ENDM + SVCT 15, .CKHEX, CKHEX +.CKHEX: EQU 15H + DEFW CKHEX + ENDM + SVCT 16, .ASCHL, ASCHL +.ASCHL: EQU 16H + DEFW ASCHL + ENDM + SVCT 17, .COUNT, COUNT +.COUNT: EQU 17H + DEFW COUNT + ENDM + SVCT 18, .ADDP0, ADDP0 ;18 +.ADDP0: EQU 18H + DEFW ADDP0 + ENDM + SVCT 19, .ADDP1, ADDP1 +.ADDP1: EQU 19H + DEFW ADDP1 + ENDM + SVCT 1A, .ADDP2, ADDP2 +.ADDP2: EQU 1AH + DEFW ADDP2 + ENDM + SVCT 1B, .ERRX , ERRX +.ERRX: EQU 1BH + DEFW ERRX + + ENDM + SVCT 1C, .?DACN, ?DACN ;1C +.?DACN: EQU 1CH + DEFW ?DACN + ENDM + SVCT 1D, .?ADCN, ?ADCN +.?ADCN: EQU 1DH + DEFW ?ADCN + ENDM + SVCT 1E, .STICK, STICK ;no ope +.STICK: EQU 1EH + DEFW STICK + ENDM + SVCT 1F, .STRIG, STRIG ;no ope +.STRIG: EQU 1FH + DEFW STRIG + ENDM + SVCT 20, .BELL , CTRLG ;20 +.BELL: EQU 20H + DEFW CTRLG + ENDM + SVCT 21, .PLAY , PLAY +.PLAY: EQU 21H + DEFW PLAY + ENDM + SVCT 22, .SOUND, MSOUND +.SOUND: EQU 22H + DEFW MSOUND + ENDM + SVCT 23, .MCTRL, MCTRL +.MCTRL: EQU 23H + DEFW MCTRL + ENDM + SVCT 24, .IOOUT, IOOUT ;24 +.IOOUT: EQU 24H + DEFW IOOUT + ENDM + SVCT 25, .TIMRD, TIMRD +.TIMRD: EQU 25H + DEFW TIMRD + ENDM + SVCT 26, .TIMST, TIMST +.TIMST: EQU 26H + DEFW TIMST + ENDM + SVCT 27, .INP1C, INP1C0 +.INP1C: EQU 27H + DEFW INP1C0 + ENDM + SKP H + +; + SVCT 28, .CLRIO, CLRIO ;28 +.CLRIO: EQU 28H + DEFW CLRIO + ENDM + SVCT 29, .SEGAD, SEGADR +.SEGAD: EQU 29H + DEFW SEGADR + ENDM + SVCT 2A, .OPSEG, OPSEG +.OPSEG: EQU 2AH + DEFW OPSEG + ENDM + SVCT 2B, .DLSEG, DELSEG +.DLSEG: EQU 2BH + DEFW DELSEG + ENDM + SVCT 2C, .DEVNM, DEV ;2C +.DEVNM: EQU 2CH + DEFW DEV + ENDM + SVCT 2D, .DEVFN, DEV&FN +.DEVFN: EQU 2DH + DEFW DEV&FN + ENDM + SVCT 2E, .LUCHK, LUCHK +.LUCHK: EQU 2EH + DEFW LUCHK + ENDM + SVCT 2F, .LOPEN, LOPEN +.LOPEN: EQU 2FH + DEFW LOPEN + ENDM + SVCT 30, .LOADF, LOADFL ;30 +.LOADF: EQU 30H + DEFW LOADFL + ENDM + SVCT 31, .SAVEF, SAVEFL +.SAVEF: EQU 31H + DEFW SAVEFL + ENDM + SVCT 32, .VRFYF, VRFYFL +.VRFYF: EQU 32H + DEFW VRFYFL + ENDM + SVCT 33, .RWOPN, RWOPEN +.RWOPN: EQU 33H + DEFW RWOPEN + ENDM + SVCT 34, .INSTT, INPSTRT;34 +.INSTT: EQU 34H + DEFW INPSTRT + ENDM + SVCT 35, .INMSG, INPMSG +.INMSG: EQU 35H + DEFW INPMSG + ENDM + SVCT 36, .INDAT, INPDT +.INDAT: EQU 36H + DEFW INPDT + + ENDM + SVCT 37, .PRSTR, PRTSTR +.PRSTR: EQU 37H + DEFW PRTSTR + ENDM + SVCT 38, .CLKL , CLKL ;38 +.CLKL: EQU 38H + DEFW CLKL + ENDM + SVCT 39, .DIR , FDIR +.DIR: EQU 39H + DEFW FDIR + ENDM + SVCT 3A, .SETDF, SETDFL +.SETDF: EQU 3AH + DEFW SETDFL + ENDM + SVCT 3B, .LSALL, LSALL +.LSALL: EQU 3BH + DEFW LSALL + ENDM + SVCT 3C, .FINIT, FINIT ;3C +.FINIT: EQU 3CH + DEFW FINIT + ENDM + SVCT 3D, .DELET, FDELET +.DELET: EQU 3DH + DEFW FDELET + ENDM + SVCT 3E, .RENAM, FRENAM +.RENAM: EQU 3EH + DEFW FRENAM + ENDM + SVCT 3F, .LOCK , FLOCK +.LOCK: EQU 3FH + DEFW FLOCK + ENDM + SVCT 40, .RECST, RECST ;40 +.RECST: EQU 40H + DEFW RECST + ENDM + SVCT 41, .INREC, INREC +.INREC: EQU 41H + DEFW INREC + ENDM + SVCT 42, .PRREC, PRREC +.PRREC: EQU 42H + DEFW PRREC + ENDM + SVCT 43, .ERCVR, ERRCVR +.ERCVR: EQU 43H + DEFW ERRCVR + ENDM + SVCT 44, .SWAP , FSWAP ;44 +.SWAP: EQU 44H + DEFW FSWAP + ENDM + SVCT 45, .CLS , HCLS +.CLS: EQU 45H + DEFW HCLS + + ENDM + SVCT 46, .POSCK, POSCK +.POSCK: EQU 46H + DEFW POSCK + ENDM + SVCT 47, .POSSV, POSSV +.POSSV: EQU 47H + DEFW POSSV + ENDM + SVCT 48, .PSET , PSET ;48 +.PSET: EQU 48H + DEFW PSET + ENDM + SVCT 49, .LINE , WLINE +.LINE: EQU 49H + DEFW WLINE + ENDM + SVCT 4A, .PATTR, CHARW +.PATTR: EQU 4AH + DEFW CHARW + ENDM + SVCT 4B, .BOX , WBOX +.BOX: EQU 4BH + DEFW WBOX + ENDM + SVCT 4C, .PAINT, WPAINT ;4C +.PAINT: EQU 4CH + DEFW WPAINT + ENDM + SVCT 4D, .CIRCL, WCIRCL +.CIRCL: EQU 4DH + DEFW WCIRCL + ENDM + SVCT 4E, .POINT, ?POINT +.POINT: EQU 4EH + DEFW ?POINT + ENDM + SVCT 4F, .HCPY , HCPY +.HCPY: EQU 4FH + DEFW HCPY + ENDM + SVCT 50, .DSMOD, DSMODE ;50 +.DSMOD: EQU 50H + DEFW DSMODE + ENDM + SVCT 51, .DPLBK, DPALBK +.DPLBK: EQU 51H + DEFW DPALBK + ENDM + SVCT 52, .DPLST, DPALST +.DPLST: EQU 52H + DEFW DPALST + ENDM + SVCT 53, .DWIND, DWIND +.DWIND: EQU 53H + DEFW DWIND + ENDM + SVCT 54, .DCOL , DCOLOR +.DCOL: EQU 54H + DEFW DCOLOR + + ENDM + SVCT 55, .DGCOL, DGCOL ;55 +.DGCOL: EQU 55H + DEFW DGCOL + ENDM + SVCT 56, .ICRT , ICRT +.ICRT: EQU 56H + DEFW ICRT + ENDM + SVCT 57, .SYMBL, SYMBOL +.SYMBL: EQU 57H + DEFW SYMBOL + ENDM + SKP H + +;--------------------------------- +; +; SVC handlar (RST3) +; +;--------------------------------- +IOSVC: EX (SP),HL + PUSH AF + LD A,M + INC HL + PUSH HL + LD HL,IOSVCT + ADD A,A + ADD A,L + JR NC,+3 + INC H + LD L,A + LD A,M + INC HL + LD H,M + LD L,A + LD (IOSVCX+1),HL + POP HL + POP AF + EX (SP),HL +IOSVCX: JP 0 ;xxx +; +; I/O device call (RST5) +; +IOCALL: ENT + PUSH HL + PUSH DE + LD (IOCALX+1),IX + LD IX,IOERR + OR A +IOCALX: CALL 0 ;xxx + POP DE + POP HL + RET NC + OR A + SCF + RET Z + JP IOERR +; +; + END + SKP H + + INCLD XMUTI +; +; Convert BINARY(HL) to ASCII(DE) +; +ASCHL: ENT + PUSH HL + PUSH BC + PUSH DE + LD DE,10000 + CALL ASCHL2 + LD DE,1000 + CALL ASCHL2 + LD DE,100 + CALL ASCHL2 + LD DE,10 + CALL ASCHL2 + LD A,L + POP DE + OR "0" + LD (DE),A + INC DE + XOR A + LD (DE),A + POP BC + POP HL + RET +; +ASCHL2: LD A,FFH +ASCHL4: INC A + OR A + SBC HL,DE + JR NC,ASCHL4 + ADD HL,DE + OR A + JR NZ,ASCHL6 + OR B + RET Z ;Zero sup. + XOR A +ASCHL6: LD B,1 + OR "0" + POP DE + EX (SP),HL + LD M,A + INC HL + EX (SP),HL + PUSH DE + RET + SKP H + +; +; Convert ASCII(HL) to BINARY(DE) +; +DEASC: ENT + TEST1 "$" + CALL TEST1 + DEFB "$" + ENDM + JR Z,DEHEX + LD DE,0 +DEASC2: CALL HLFTCH + SUB "0" + CP 10 + RET NC + INC HL + PUSH HL + LD HL,DE + ADD HL,HL ;2 + JR C,ER02' + ADD HL,HL ;4 + JR C,ER02' + ADD HL,DE ;5 + JR C,ER02' + ADD HL,HL ;10 + JR C,ER02' + LD E,A + LD D,0 + ADD HL,DE + JR C,ER02' + EX DE,HL + POP HL + JR DEASC2 +; +ER02': LD A,2 + JP ERRORJ + SKP H + +; +; Convert HEX(HL) to BINARY(DE) +; +DEHEX: ENT + LD DE,0 +DEHEX2: LD A,M + CALL CKHEX + RET C + INC HL + EX DE,HL + ADD HL,HL ;2 + JR C,ER02' + ADD HL,HL ;4 + JR C,ER02' + ADD HL,HL ;8 + JR C,ER02' + ADD HL,HL ;16 + JR C,ER02' + ADD A,L + LD L,A + EX DE,HL + JR DEHEX2 +; +; Chck hex +; +CKHEX: ENT + SUB "0" + CP 10 + CCF + RET NC + SUB "A"-"0" + CP 6 + CCF + RET C + ADD A,10 + RET +; +; SVC .HALT ;Halt if SPACE, +; ;and break check +; +HALT: ENT + CALL HALTSB + CP " " + RET NZ + CALL HALTSB + OR A + JR Z,-4 + RET +HALTSB: SVC .BREAK + RST 3 + DEFB .BREAK + ENDM + JR Z,HALTBR + LD A,FFH + SVC .INKEY + RST 3 + DEFB .INKEY + ENDM + CP 1BH + RET NZ + +HALTBR: JP BREAKZ + RET + SKP H + +; +; SVC .SETDF ;set default +; ent DE:equipment table +; A: channel +; +SETDFL: ENT + LD (DDEV),DE + LD (DCHAN),A + RET +; +; Pointer update +; +ADDP0: ENT + LD HL,(POOL) + ADD HL,DE + LD (POOL),HL +ADDP1: ENT + LD HL,(VARST) + ADD HL,DE + LD (VARST),HL +ADDP2: ENT + LD HL,(STRST) + ADD HL,DE + LD (STRST),HL + LD HL,(VARED) + ADD HL,DE + LD (VARED),HL + LD HL,(TMPEND) + ADD HL,DE + LD (TMPEND),HL + RET +; + SKP H + +; +; SVC .ERRX ;Print error message +; +ERRX: ENT + LD C,A + SVC .BELL + RST 3 + DEFB .BELL + ENDM + SVC .CR2 + RST 3 + DEFB .CR2 + ENDM + BIT 7,C + JR Z,ERRX1 + LD HL,KEYBUF + PUSH HL + CALL SETDNM + POP DE + SVC .CRTMS ;Device name + RST 3 + DEFB .CRTMS + ENDM +ERRX1: LD A,C + AND 7FH + LD C,A + SVC .DI + RST 3 + DEFB .DI + ENDM + OUT (LSE3),A ;bank change + JR ERRX0 +; +ERRXU: LD C,69 +ERRX0: LD DE,ERRTXT +ERRX2: DEC C + JR Z,ERRX4 + LD A,(DE) + INC DE + OR A + JP P,-3 + JR Z,ERRXU + JR ERRX2 +; +ERRX4: LD A,(DE) + CP 80H + JR Z,ERRXU + EX DE,HL + LD DE,KEYBUF +ERRX6: LD A,(HL) + OR A + JP M,ERRX8 + LDI + JR ERRX6 +ERRX8: AND 7FH + LD (DE),A + OUT (LSE1),A ;bank change + SVC .EI + RST 3 + DEFB .EI + + ENDM + INC DE + LD HL,MESER + LD B,8 + CALL LDDEHL + LD DE,KEYBUF + SVC .CRTMS + RST 3 + DEFB .CRTMS + ENDM + RET +; + SKP H + +; +SETDNM: ENT + LD DE,(ZEQT) + INC DE + INC DE + SVC .COUNT + RST 3 + DEFB .COUNT + ENDM + CALL LDHLDE + LD A,(ZCH) + ADD A,"1" + LD M,A ;ch# + LD A,(ZFLAG2) + AND 0FH ;max ch# + JR Z,+3 + INC HL + LD M,":" + INC HL + LD M,0 + RET +; +MESER: DEFM " ERROR" + + DEFB 0 +; +; + END + SKP H + + INCLD XPARM +;----------------------------------- +; +; +; display mode +; +; +; ent. acc mode colors dmd +; 1 320*200 4 0 +; 2 320*200 16 2 +; 3 640*200 2 4 +; 4 640*200 4 6 +; +; +;----------------------------------- +; +DSMODE: ENT + CALL PUSHR + LD B,A +; + LD A,(MEMOP) ;option vram exist ? + OR A + LD A,B + JR NZ,DSM0 + CP 2 + JR Z,CERR + CP 4 + JR Z,CERR +; +; +; +DSM0: PUSH AF + DEC A + LD D,FFH + LD HL,PAL4T + LD BC,0403H + JR Z,DSM00 ;skip if 320*200 4 colors + DEC A + LD HL,PAL16T + LD BC,100FH + JR Z,DSM00 ;skip if 320*200 16 colors + DEC A + LD HL,PAL2T + LD BC,0201H + JR Z,DSM00 ;skip if 640*200 2 colors + LD HL,PAL4T ; 640 *200 4 colors + LD BC,0805H + LD D,FDH +; +DSM00: LD (CPLANE),BC ;c cplane + LD A,D + LD (PMASK),A ;plane mask + LD (PALAD),HL + CALL PALOFF + POP AF + DEC A + RLCA + LD (DMD),A + OUT (LSDMD),A + AND 4 ;bit 2 only + + CALL DWIDTH ;acc=0 -->40 chr + CALL CONSOI ;(YS,YE)=0,24 palint + OR A + RET +; +; +CERR: + SCF + RET + SKP H + +;----------------------------------- +; +; +; console & palette & color init +; +;----------------------------------- +CONSOI: LD HL,1800H ;(ys,ye)=(0,24) + CALL DWIND +; +;JR PALINT +; +PALINT: LD A,(CPLANE) + LD (CMODE),A + XOR A + CALL DPALBK ;init palette block reg. + LD HL,PALAD + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + LD DE,PALTBL ;init palette reg. + PUSH DE + LD BC,4 + LDIR + POP HL +PALOUT: LD B,4 + LD C,LSPAL + OTIR + RET +;-------------------------------- +; +; Palette all clr +; +; +;-------------------------------- +PALOFF: ENT + PUSH BC + XOR A + LD B,5 + LD C,LSPAL +PALOF1: OUT (C),A + ADD A,10H + DJNZ PALOF1 + POP BC + RET +; +; + SKP H + +;---------------------------------- +; +; +; pallet block regster set +; +; ent acc=pal block number +; +;---------------------------------- +DPALBK: ENT + CALL PUSHR + LD (PALBK),A + LD E,A + LD A,(DMD) + CP 2 + JR NZ,PALBK1 ;skip if not 320*200 16 col +; + LD A,E + RLCA ;*2 + RLCA ;*4 + LD HL,PALTBL + LD B,4 + PUSH HL +PALBK0: LD (HL),A + ADD A,11H + INC HL + DJNZ PALBK0 + POP HL + CALL PALOUT +PALBK1: LD A,E + OR 40H + OUT (LSPAL),A + RET +; + SKP H + +;---------------------------------- +; +; pallet regster set +; +; ent acc=pal register number +; b =pal color code +; +;---------------------------------- +; +DPALST: ENT + CALL PUSHR + LD HL,PALTBL + LD D,0 + LD E,A ;pallet register number + ADD HL,DE + OR A + RLCA + RLCA + RLCA + RLCA + OR B ;pallet color code + LD (HL),A + OUT (LSPAL),A + RET +; + SKP H + +; +;---------------------------------- +; +; +; display color set +; +; Acc=col code +;---------------------------------- +; +DCOLOR: ENT + PUSH AF + CALL COLS + LD (CMODE),A + POP AF + RET +; +; +DGCOL: ENT + PUSH AF + CALL COLS + LD (GMODE),A + POP AF + RET +; +COLS: ENT + PUSH BC + LD B,A + LD A,(DMD) + CP 6 + LD A,B + JR NZ,COLS1 ;skip if not 640*200 4 + CP 2 + JR C,COLS1 + ADD A,2 ;2 or 3 only +COLS1: POP BC + RET +; + SKP H + +;---------------------------------- +; +; +; display window set +; +; +; +;---------------------------------- +DWIND: ENT + CALL PUSHR + LD (YS),HL ;save YS,YE + LD A,H + SUB L + INC A + LD (YW),A ;YW=YE-YS+1 :lines + LD B,A + ADD A,A + ADD A,A + ADD A,B + LD (SW),A ;SW=YW*5 + EX DE,HL + LD H,0 + LD L,A + ADD HL,HL ;*2 + ADD HL,HL ;*4 + ADD HL,HL ;*8 + LD (SSW),HL + EX DE,HL + INC H + LD A,H + ADD A,A + ADD A,A + ADD A,H + LD (SEA),A ;SEA=(YE+1)*5 + LD A,L + ADD A,A + ADD A,A + ADD A,L + LD (SSA),A ;SSA=YS*5 + LD HL,0 + LD (SOF),HL ;SOF=0 + LD HL,SEA + LD BC,6CFH ;B counter C scrool reg + OTDR + CALL HCLS + JP HOME + SKP H + +;---------------------------------- +; +; +; display chracter size change +; +; if acc=1 then 640 chr +; if acc=0 then 320 chr +;---------------------------------- +; +DWIDTH: ENT + CALL PUSHR + OR A + LD A,40 + LD DE,2300H + JR Z,DWID1 + ADD A,A ;80 chr + LD DE,0023H +DWID1: LD (CWIDTH),A + LD H,0 + LD L,A + ADD HL,HL ;*2 + ADD HL,HL ;*4 + ADD HL,HL ;*8 + LD (CSIZE),HL + DEC A + LD (XE),A +; + LD A,D + LD (PTW0),A + LD (PTW0+1),A + LD (PTB0),A + LD A,E + LD (PTW1),A + LD (PTW1+1),A + LD (PTB1),A + LD BC,0B07H ;patch counter + LD HL,CHTBL ;patch table addr + CALL PATCH + CALL CHGRPH ;mon-grph + JP HCLS +; +; +PATCH: ENT +; +; word patch +; +PATCHW: LD E,(HL) ;addr read + INC HL + LD D,(HL) + INC HL +PTW0: INC HL ;nop + INC HL ;nop + LD A,(HL) ;data read + INC HL + LD (DE),A + INC DE + LD A,(HL) + INC HL + LD (DE),A +PTW1: NOP ;inc hl + + NOP ;inc hl + DJNZ PATCHW +; +; byte patch +; + LD B,C +PATCHB: LD E,(HL) ;addr read + INC HL + LD D,(HL) + INC HL +PTB0: INC HL ;nop + LD A,(HL) + INC HL + LD (DE),A +PTB1: NOP ;inc hl + DJNZ PATCHB + RET +; + SKP H + +;-------------------------------- +; +; +; PL-EX crt driver patch tabel +; +; +;-------------------------------- +; +CHTBL: +; +; word patch +; + DEFW XPD1+1 ;ld de,xxxxh + DEFW 80 + DEFW 40 + DEFW XPC1 ;sla c + DEFW 21CBH + DEFW 0 ;nop + DEFW XPC2+1 ;ld bc,xxxxh + DEFW 400 + DEFW 200 + DEFW XPC3+1 ;ld hl,xxxxh + DEFW BITBUF+16000 + DEFW BITBUF+8000 + DEFW XPDE3+1 ;ld de,xxxxh + DEFW 80 + DEFW 40 + DEFW XPDE4+1 ;ld bc,xxxxh + DEFW 560 + DEFW 280 + DEFW XPIN2+1 ;ld de,xxxxh + DEFW 80 + DEFW 40 + DEFW XPIN3+1 ;ld de,xxxxh + DEFW FFB0H + DEFW FFD8H + DEFW XPIN4+1 ;ld bc,xxxxh + DEFW FDD0H + DEFW FEE8H + DEFW XPLI2+1 ;ld de,xxxxh + DEFW 80 + DEFW 40 + DEFW XPSC2+1 ;ld bc,xxxxh + DEFW 639 + DEFW 319 +; +; +; +;byte patch +; +; + DEFW XPDE1+1 ;ld l,xxh + DEFB 79 + DEFB 39 + DEFW XPDE2+1 ;ld c,xxh + DEFB 79 + DEFB 39 + DEFW XPIN1+1 ;ld c,xxh + DEFB 79 + DEFB 39 + + DEFW XPLI1+1 ;ld a,xxh + DEFB 79 + DEFB 39 + DEFW XPSC1+1 ;ld c,xxh + DEFB 80 + DEFB 40 + DEFW XPCU1 ;add hl,hl + DEFB 29H + DEFB 0 ;nop + DEFW XPCU2 ;add hl,hl + DEFB 29H + DEFB 0 ;nop +; +; + END + SKP H + + INCLD XDSP +; +;--------------------------------- +; +; +; crt 1 character display +; +; acc=ascii code +; +; +;--------------------------------- +; +ACCDI: ENT + CALL PUSHRA + LD HL,(POSADR) + LD C,A + CP 20H ;convert space + JR NZ,ACCDI0 + XOR A +ACCDI0: LD (HL),A + LD HL,(BITADR) + LD A,C + CALL BITMAP + XOR A ;patch cursor + LD (CDOWN2+2),A + CALL CRIGHT + LD A,7 + LD (CDOWN2+2),A + RET +; + SKP H + +;---------------------------------- +; +; bitmap extention +; +; ent Acc:ascii code +; HL :bitadr +; +;---------------------------------- +; +BITMAP: ENT +; + SVC .?ADCN ;ascii->display + RST 3 + DEFB .?ADCN + ENDM + DI + EXX + PUSH HL + LD H,0 + LD L,A ;display code + LD A,(CMODE) + OR 80H ;replace mode + OUT (LSWF),A +; + ADD HL,HL ;*2 + ADD HL,HL ;*4 + ADD HL,HL ;*8 + SET 4,H ;offset fontbuf $1000 + EXX + LD B,8 +XPD1: LD DE,40 ;cwidth 80<--80 chr + IN A,(LSE0) ;bank change !! +BITM1: EXX + LD A,(HL) ;font pattern read + INC HL ;next pointer + EXX + LD (HL),A ;font pattern write + ADD HL,DE ;next laster + DJNZ BITM1 + IN A,(LSE1) ; bank reset !! + EI + EXX + POP HL + EXX + RET + SKP H + +;---------------------------------- +; +; +; manegement utility +; +; +;---------------------------------- + +; exit D=begin line +; E=end line+1 +; +LBOUND: ENT + CALL TBCALC +LBOUN1: LD A,M + OR A + JR Z,LBOUN2 + DEC HL + DEC E + LD A,(YS) + CP E + JR C,LBOUN1 +LBOUN2: LD D,E +LBOUN3: INC E + INC HL + LD A,M + OR A + RET Z + LD A,(YE) + CP E + JR NC,LBOUN3 + RET +; +; +TBCALC: ENT + LD E,H + LD D,0 + LD HL,SCRNT0 + ADD HL,DE + RET +; + END + SKP H + + INCLD XCLS +;----------------------------------- +; +; clear window +; +; +; +;----------------------------------- +HCLSW: ENT + CALL PUSHR + LD A,(YS) + LD H,A + CALL TBCALC + LD A,(YW) ;YW=YE-YS+1 + LD B,A ;lines + LD E,A ;store YW +; + CALL ?CLRHL ;mangement buf clr +; +CLSWT: LD C,E ;restore YW + LD A,(YE) +;JR CLSLT +; +; +;----------------------------------- +; +; +; clear line +; +; C=lines Acc=line no. +; +;----------------------------------- +; +CLSLT: + INC A + LD L,0 + LD H,A + PUSH HL ;start pos x,y + CALL PONT + LD B,0 +XPC1: NOP ;40 SLA C<--80 + NOP + PUSH BC + CALL PUSHW + POP HL ;pop counter + ADD HL,HL ;*2 + ADD HL,HL ;*4 + ADD HL,HL ;*8 + LD C,L + LD B,H + POP HL ;start pos x,y + CALL PONTB + CALL PUSHW + JR CLRSCR +; +;----------------------------------- +; +; clear screen +; +; + +; +; +;----------------------------------- +HCLS: ENT + CALL PUSHRA +CLST: LD HL,TEXTBF+2000 + LD BC,50 + CALL PUSHW + LD B,25 + LD HL,SCRNT0 + CALL ?CLRHL ;manegement buf clr +CLSB: +; +; color mode +; +XPC2: LD BC,200 ;or 400 +XPC3: LD HL,BITBUF+8000 ;or +16000 + CALL PUSHW + JR CLRSCR +;----------------------------------- +; +; PUSH Write +; +; +; Ent:HL=cls point addr +; BC=counts *40 +; +;----------------------------------- +; +PUSHW: ENT + LD (PUSHW1+1),SP + LD (PUSHW2+1),HL + LD HL,0 + LD A,(CPLANE) ;display active plane + OR 80H ;replace mode + OUT (LSWF),A +; +PUSHW0: DI +PUSHW2: LD SP,0 ;xx + IN A,(LSE0) ;bank +; + PUSH HL + PUSH HL + PUSH HL + PUSH HL + PUSH HL ;10 + PUSH HL + PUSH HL + PUSH HL + PUSH HL + PUSH HL ;20 + PUSH HL + PUSH HL + PUSH HL + PUSH HL + PUSH HL ;30 + PUSH HL + PUSH HL + PUSH HL + PUSH HL + + PUSH HL ;40 + IN A,(LSE1) ;bank + LD (PUSHW2+1),SP +PUSHW1: LD SP,0 ;xxx + EI +; + DEC BC + LD A,C + OR B + JR NZ,PUSHW0 + RET +;---------------------------------- +; +; scrool parameter initial +; +; +;---------------------------------- +; +CLRSCR: + LD HL,0 + LD (SOF),HL + LD B,2 + LD C,LSSCR ;lsi scrool register + OUT (C),H + DEC B + OUT (C),L + JP HOME +; +; + END + SKP H + + INCLD XDEL +;---------------------------------- +; +; +; +; delete chacter +; +; +;---------------------------------- +; +; +DEL: + EXX + PUSH HL + PUSH DE + PUSH BC + EXX + CALL DEL0 + EXX + POP BC + POP DE + POP HL + EXX + RET +; +DEL0: + LD HL,(CURXY) + DEC L + JP P,DEL1 +; + CALL TBCALC + LD A,(HL) + LD H,E + LD L,0 + OR A + JR Z,DEL1 + LD A,(YS) + CP H + JR Z,DEL1 + DEC H +XPDE1: LD L,39 ;XE 39 or 79 +DEL1: + LD (CURXY),HL + CALL LINCAL +;BC lines HL' counts HL last curxy + CALL PONTC + PUSH BC ;lines store + LD D,H + LD E,L + INC HL + EXX + PUSH HL ;HL' counts + EXX + POP BC + LDIR + XOR A + LD (DE),A ;last addr space + POP BC ;lines pop + LD HL,(CURXY) + INC HL + + CALL PONTB ;bitmap addr +DELB11: EXX + LD D,9 ;laster set + LD HL,(MAXCF) + DEC D + EXX + JR DELB2 ;line first time only + SKP H + +;---------------------------------- +; DELB +; +; ent. +; BC lines +; HL start address +;---------------------------------- +DELB: +; +XPDE2: LD C,39 ;79 xe + DEC B ;last line ? + JR Z,DELB0 ;skip if end of func. + INC DE ;next addr calc + INC DE + LD H,D + LD L,E + JR DELB11 +; +DELB1: LD HL,(MAXCF) ; + DEC D ;last laster ? + EXX + JR Z,DELB ;skip if next line +XPDE3: LD DE,40 ;cwidth 80 + ADD HL,DE +; +DELB2: EXX ;next plane ? + RRC L + JR C,DELB1 + LD A,L + AND H ;pmask + EXX + JR Z,DELB2 ;skip if warp + DI + PUSH HL + PUSH BC + OUT (LSRF),A ;read plane + OUT (LSWF),A ;write plane + IN A,(LSE0) ;bank change + OUT (LSE0),A ;cg off + LD D,H + LD E,L + DEC DE + LD A,C + OR A + JR Z,XPDE4 + LD A,B ;line counter + LD B,0 + LDIR + DEC A + JR Z,DELB3 ;skip if last counter +XPDE4: LD BC,280 ; 560 + ADD HL,BC + LD A,(HL) + LD (DE),A +DELB3: IN A,(LSE1) ;bank off + EI + POP BC + POP HL + JP DELB2 +; + +; +DELB0: + EX DE,HL + INC C + LD E,C + LD D,B + LD B,8 + DI + IN A,(LSE0) ;bank change + OUT (LSE0),A ;cg off + LD A,(CPLANE) + OR 80H ;replace mode + OUT (LSWF),A +DELB01: XOR A + LD (HL),A ;space fill + SBC HL,DE + DJNZ DELB01 + IN A,(LSE1) ;bank off + EI + LD HL,(CURXY) + JP CURMOV +; + SKP H + +;---------------------------------- + +; +; +; insert chacter +; +; +;---------------------------------- +; +; +INST: +; + EXX + PUSH HL + PUSH DE + PUSH BC + EXX + CALL INST0 + EXX + POP BC + POP DE + POP HL + EXX + RET +; +; +INST0: + LD HL,(CURXY) + CALL LINCAL +;BC lines HL' counts HL last curxy + PUSH HL ;store last-next pos x,y + CALL PONT + DEC HL ;last addr + LD A,(HL) + OR A + JR NZ,INSTE ;no insert space + PUSH BC ;lines store + LD D,H + LD E,L + DEC HL + EXX + PUSH HL ;HL' counts + EXX + POP BC + LDDR + XOR A + LD (DE),A ;last addr space + POP BC ;lines pop + POP HL + CALL PONTB ;bitmap addr + DEC HL + LD A,C + LD (LASTC+1),A + DEC B + JR Z,INSEF ;first time ended + JR INSB1 +; +INSTE: POP HL + RET +; + +; +;---------------------------------- +; +; +; insert operation +; +; <> +; +; ent. B =line counter +; +;---------------------------------- +; +INSB: + DEC B ;last line ? + JR Z,INSEND ;skip if end of func. +INSB1: +XPIN1: LD C,39 ;79 xe + CALL INSLIN + JR INSB +; +;--------------------------------- +; +; +; insert operation +; +; <> +; +;--------------------------------- +INSEND: +LASTC: LD C,0 ;patch +INSEF: CALL INSLIN + CALL PONTCB +XPIN2: LD DE,40 ;cwidth 80 + LD B,8 + DI + LD A,(CPLANE) + OR 80H ;replace mode + OUT (LSWF),A + IN A,(LSE0) ;bank change + OUT (LSE0),A ;cg off +INSB01: XOR A + LD (HL),A ;space fill + ADD HL,DE + DJNZ INSB01 + IN A,(LSE1) ;bank off + EI + RET +; + SKP H + +;---------------------------------- +; +; insert operation +; +; 1 line only +; +; ent. +; HL=first destination addr +; C =bytes +; +;---------------------------------- +INSLIN: + EXX + LD D,9 ;laster counter set +INSL1: LD HL,(MAXCF) ; + DEC D ;last laster ? + EXX + RET Z + CALL INSLAS +XPIN3: LD DE,FFD8H ;FFB0h <--80 + ADD HL,DE + EXX + JR INSL1 +; +; +; +; +;--------------------------------- +; +; insert operation +; +; 1 laster only +; +; +; ent. E'=plane data(maxcf) +; HL=first destination addr +; C=bytes +; +;--------------------------------- +INSLAS: EXX ;next plane ? + RRC L + LD A,L + EXX + RET C ;next laster + EXX + AND H ;pmask + EXX + JR Z,INSLAS ;skip if warp + PUSH HL + PUSH BC + DI + OUT (LSRF),A ;read plane + OUT (LSWF),A ;write plane + IN A,(LSE0) ;bank change + OUT (LSE0),A ;cg off + LD D,H + LD E,L + DEC HL + LD A,C + OR A + + JR Z,XPIN4 + LD A,B ;line counter + LD B,0 + LDDR + OR A + JR Z,INSLA1 ;skip if last line +XPIN4: LD BC,FEE8H ;FDD0H <--80 + ADD HL,BC + LD A,(HL) + LD (DE),A +INSLA1: IN A,(LSE1) ;bank off + EI + POP BC + POP HL + JP INSLAS +; +;------------------------------- +; +; +; line cal +; +; +;------------------------------- +; +LINCAL: + LD B,1 +XPLI1: LD A,39 ;xe 39 or 79 + SUB L + LD C,A + EXX +XPLI2: LD DE,40 ;cwidth 80 + LD H,0 + LD L,A + EXX +LINC1: INC H ;next line check + LD A,(YE) + CP H + JR C,LINC2 ;scrool end check + CALL TBCALC + LD A,(HL) + OR A + LD H,E + JR Z,LINC2 ;manage ment check + INC B + EXX + ADD HL,DE + EXX + JR LINC1 +; +; +LINC2: LD L,0 + RET +; +; +; + END + SKP H + + INCLD XSCR +;---------------------------------- +; +; scrool main logic +; +; +; +; +;---------------------------------- +SCROOL: CALL PUSHRA +;--------------------------------- +; +; text buf scrool & clr +; +;--------------------------------- +SCRTX: LD A,(YS) + LD H,A + LD L,0 + CALL PONT ;start addr cal + LD D,H + LD E,L ;DE destination addr + LD B,0 +XPSC1: LD C,40 ;cwidth 80 + ADD HL,BC ;HL source addr +; + LD A,(YW) ;scrool lines + DEC A + JR Z,SCR0 ;skip if 1 line mode + PUSH BC + PUSH HL + LD HL,0 +SCR1: ADD HL,BC + DEC A + JR NZ,SCR1 + LD B,H ;scrool bytes + LD C,L + POP HL ;pop source addr + LDIR + POP BC +SCR0: LD B,C + CALL ?CLRDE ;last line clr +;----------------------------------- +; +; maneger buf scrool & clr +; +;----------------------------------- + LD A,(YS) + LD H,A + CALL TBCALC ;exit HL maneger addr + LD A,(YW) ;scrool lines + DEC A ;1 line mode check + LD B,A + LD (HL),0 + INC HL + LD D,H + LD E,L + INC DE + CALL NZ,LDHLDE ;(hl)<--(de) + LD (HL),0 ;last line manegement +; + +;---------------------------------- +; +; calculation xferad +; +;---------------------------------- +SCRCAL: LD A,(YE) + LD H,A + LD L,0 ;HL=(0,YE) + CALL PONTB + LD (XFERAD+1),HL ;xferad data +;---------------------------------- +; +; scrool offset calc +; +;---------------------------------- +SCXFER: + LD DE,40 + LD HL,(SOF) ;lsi scrool offset + ADD HL,DE + PUSH HL + LD DE,(SSW) ;lsi scrool width + OR A + SBC HL,DE + POP HL + JR NZ,SCXF1 ;sof> graphic ram +; +;---------------------------------- + IN A,(LSE0) ; bank change + OUT (LSE0),A ; cg off +XFERAD: LD HL,0 ;LD HL,xxxxh + LD (HL),0 + LD D,H + LD E,L + INC DE +XPSC2: LD BC,319 ;xfer bytes + LDIR + + IN A,(LSE1) ; bank reset + EI +;---------------------------------- +; +; +; scrool operation ended +; +; cursor window end pos +; +;---------------------------------- +BOS: + LD A,(YE) + LD H,A + LD L,0 + JP CURMOV +; + END + SKP H + + INCLD XCURSOR +;------------------------------- +; +; cursor routines +; +; +; +; +; +;------------------------------- +; +CURSOR: + CALL PUSHRA +; +;cursor data pattern + EXX + PUSH HL ;push hl' + LD HL,CURDT1 + LD A,(CURMAK) + OR A + JR Z,CURS0 + LD HL,CURDT2 + DEC A + JR Z,CURS0 + LD HL,CURDT3 +CURS0: EXX +; + DI + LD A,(CURFLG) + XOR 1 + LD (CURFLG),A + LD HL,(BITADR) + LD D,0 + LD A,(CWIDTH) + LD E,A + LD B,8 ;counter + LD A,(CMODE) + OR 20H ;xor mode + OUT (LSWF),A ;wf + IN A,(LSE0) ;bank change + OUT (LSE0),A ;cg off +; +CURS1: EXX + LD A,(HL) + INC HL + EXX + LD (HL),A + ADD HL,DE + DJNZ CURS1 + IN A,(LSE1) ;bank reset + EXX + POP HL ;pop hl' + EXX + EI + RET +; +; +; +HCURON: ENT + CALL PUSHRA + + XOR A + OUT (LSD0),A ;reset 556 + CPL + OUT (LSD0),A + LD A,(CURFLG) + OR A + RET NZ + JR CURSOR +; +; +HCUROF: ENT + CALL PUSHRA + LD A,(CURFLG) + OR A + RET Z + JR CURSOR +; +; +FLASH: ENT + IN A,(LSD2) ;bit 6 + RLCA + RLCA + JR NC,HCURON + JR HCUROF +; +;-------------------------------- +; +; cursor move +; +; ent HL x,y +; +;-------------------------------- +; +CURMOV: ENT + CALL PUSHR + LD (CURXY),HL + CALL PONT ;cursor addr cal + LD (POSADR),HL + CALL PONTCB ;bitmap cursor pos cal + LD (BITADR),HL + RET + SKP H + +;------------------------------- +; +; poniter calc +; +; ent hl=curxy +; hl=text addr +;------------------------------- +PONTC: ENT + LD HL,(CURXY) +PONT: ENT + PUSH DE + PUSH AF + LD D,20H ;offset textbuf + LD E,L + LD A,H + ADD A,A ;2 + ADD A,A ;4 + ADD A,H ;5 + LD L,A + LD H,0 + ADD HL,HL ;10 + ADD HL,HL ;20 + ADD HL,HL ;40 +XPCU1: NOP ;ADD HL,HL *80 + ADD HL,DE + POP AF + POP DE + RET + SKP H + +;---------------------------------- +; +; pointer cal +; +; ent hl=curxy +; hl=bitmap addr +; +;---------------------------------- +PONTCB: ENT + LD HL,(CURXY) +PONTB: ENT + PUSH DE + PUSH AF + LD D,H + LD E,0 ;de=h*256 + LD A,L + LD L,H ;l=curx + LD H,E ;h=0 + ADD HL,HL ;*2 + ADD HL,HL ;*4 + ADD HL,HL ;*8 + ADD HL,HL ;*16 + ADD HL,HL ;*32 + ADD HL,HL ;*64 + ADD HL,DE ;*320 +XPCU2: NOP ;ADD HL,HL *640 + CALL ADDHLA + SET 7,H ;offset bitmap addr + POP AF + POP DE + RET +; +;------------------------------ +; +; +; +; cursor left,right,down,up +; +; +;------------------------------ +; +HOME: LD L,0 + LD A,(YS) + LD H,A + JP CSET +; +; +CR2: CALL PUSHR + LD HL,(CURXY) + LD A,L + OR A + JR NZ,CR1 + CALL TBCALC + LD A,(HL) + OR A + RET Z +CR1: LD A,0DH + JP CRT1C +; +; + +CTR.M: XOR A + LD (CRTSFG+1),A ;sft mode reset + LD HL,(CURXY) + PUSH HL + INC H + CALL TBCALC + LD A,(YE) + LD D,A +CTR.ML: LD A,M + OR A + JR Z,CTR.M4 + INC HL + INC E + LD A,D + CP E + JR NC,CTR.ML +CTR.M4: DEC E + POP HL + LD H,E + JR CTR.M2 +; +CDOWN: LD HL,(CURXY) + JR CDOWN2 +; +CRIGHT: LD HL,(CURXY) + INC L + LD A,(XE) + CP L + JR NC,CSET +CTR.M2: + LD L,0 +CDOWN2: INC H + JR CDOWN3 ;patch + PUSH HL + CALL TBCALC + LD (HL),1 + POP HL +CDOWN3: + LD A,(YE) + CP H + JR NC,CSET + LD H,A + PUSH HL + CALL SCROOL + POP HL +CSET: JP CURMOV +; +; +CUP: LD HL,(CURXY) + JR CUP2 +; +CLEFT: LD HL,(CURXY) + LD A,L + OR A + JR NZ,CSET2 + LD A,(XE) + LD L,A +CUP2: LD A,(YS) + CP H + JR C,CSET3 + + LD A,(YS) + LD H,A + DEFB 3EH +CSET2: DEC L + DEFB 3EH +CSET3: DEC H + JR CSET +; +; +CTR.F: +CTR.Y: XOR A ;ALPHA + DEFB 21H +CTR.E: LD A,1 ;Shift lock + DEFB 21H +CTR.W: LD A,2 ;GRAPH + LD (CURMAK),A + RET +; +;---------------------------------- +; +; +; +; tab function +; +; +;---------------------------------- +; +CTAB: LD B,0 ;tab + LD HL,(CURXY) + INC L + LD A,L +CTAB1: INC B + SUB 10 + JR NC,CTAB1 + XOR A +CTAB2: ADD A,10 + DJNZ CTAB2 + LD L,A +; + LD A,(XE) ;boader check + CP L + RET C +; + PUSH HL + LD A,(INPFLG) + OR A + JR Z,CTAB4 + LD A,(CURX) +; + LD H,A + LD A,L + SUB H + JR Z,CTAB4 + LD B,A +CTAB3: PUSH BC + LD A,20H ;space + CALL PLTOUT + POP BC + DJNZ CTAB3 +CTAB4: POP HL + + JP CURMOV +;------------------------------ +; +; tab print function +; +; +;------------------------------ +RNTT: ENT + CALL CRT1S + LD A,(CURX) + SUB 10 + JR NC,-2 + ADD A,10 + RET Z + JR PRNTT +; +; + END + SKP H + + INCLD XKB +;------------------------------ +; +; GET LINE V0.1A +; +; '84.7.11 +; +;------------------------------ +; +BINPUT: ENT + PUSH HL + LD HL,(CURXY) + PUSH HL + PUSH DE + CALL TBCALC + POP DE + LD M,0 + POP HL + CALL GETL + JR C,BINERT + LD A,L + OR A + JR Z,BINERT + LD H,0 + ADD HL,DE + EX DE,HL + OR A +BINERT: POP HL + RET +; +; +GETL: ENT + PUSH BC + PUSH HL + PUSH DE +LINP02: CALL INKEY1 + CP 0DH ;CR? + JP Z,GCRT + CP 1BH ;Break? + JR Z,LINP.B + PUSH AF + LD A,(CURMAK) + CP 2 ;Graph mode? + JR NZ,LINP10 + POP AF + CP 17H + JR NC,LINP11 + CP 11H + JR C,LINP11 +; + LD HL,(CTRSFT) + BIT 6,L ;Ctrl? + JR Z,LINP11 +; +LINP32: SVC .CRT1X + RST 3 + DEFB .CRT1X + ENDM + JR LINP02 +; + +LINP10: POP AF +LINP11: SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + JR LINP02 +; +LINP.B: SCF ;break key on +LINP80: + SVC .CR1 + RST 3 + DEFB .CR1 + ENDM + POP DE + POP HL + POP BC + RET +; +GCRT: LD HL,(CURXY) + CALL LBOUND ;begin end search + LD A,E + SUB D + LD E,A ;E:Y.length + LD H,D ;H:line count + LD L,0 + CALL PONT ;calc start address + LD A,(CWIDTH) ;X size + LD D,A + POP BC ;store address set + PUSH BC + EXX + PUSH HL + LD HL,(LINLIM) ;L:line inp limit + EXX +; +GCRT10: + LD A,(HL) ;A<--ascii code +GCRT36: INC HL + LD (BC),A ;(BC)<--ascii code + INC BC + EXX + DEC L + JR Z,GCRT40 ;line limit? + EXX + DEC D + JR NZ,GCRT10 ;X right end ? + LD A,(CWIDTH) + LD D,A + DEC E + JR NZ,GCRT10 ;line count=0 ? + EXX +GCRT40: POP HL + EXX + XOR A + LD (BC),A ;end address=0 + LD L,C + LD H,B + POP DE + PUSH DE + PUSH HL + + OR A + SBC HL,DE + LD B,L + POP HL + LD A,20H ;clschr? + LD D,A + JP Z,LINP80 + DEC HL +GCRT50: LD A,M + OR A + JR Z,GCRT52 + CP D + JR NZ,GCRT54 + LD M,0 +GCRT52: DEC HL + DJNZ GCRT50 + JR GCRT56 +GCRT54: LD A,M + OR A + JR NZ,+4 + LD M," " + DEC HL + DJNZ GCRT54 +GCRT56: OR A + JP LINP80 +; +;------------------------------- +; +; KEY V0.1A +; +; '84.7.11 +; +;------------------------------- +; +; INKEY$[(ACC)] +; A=FF : INKEY$ =GET +; A=0 : INKEY$(0)=KEY DATA +; A>0 : INKEY$(1)=FLASH GET +; +INKEY$: ENT + INC A + JR Z,INKEYFF + DEC A + JP Z,INKEY0 +; +; +INKEY1: ENT + CALL KBFCHR + CALL PUSHR + CALL HCURON + EX AF,AF' + PUSH AF + CALL KEYSNS + LD A,(REPTF) +?KEY10: EX AF,AF' +?KEY12: LD B,16 ;chattering +?KEY14: CALL FLASH + CALL KEYSNS + BIT 1,A + JR NZ,?KEY12 ;same key ? + + DJNZ ?KEY14 + BIT 0,A + JR Z,?KEY20 ;key on ? + BIT 2,A + JR NZ,?KEY24 ;new key ? + EX AF,AF' + DEC A + JR NZ,?KEY10 + LD A,6 ;Repeat step time + JR ?KEY26 +?KEY20: PUSH HL + PUSH DE + PUSH BC + LD HL,KYDTB2 + LD DE,KYDTB1 + LD BC,10 + LDIR ;(KYDTB1)<--(KYDTB2) + POP BC + POP DE + POP HL +?KEY24: LD A,40H ;Repeat init time +?KEY26: LD (REPTF),A +?KEY28: CALL FLASH + CALL KEYGET + OR A + JR Z,?KEY29 + LD (KEYDAT),A + LD C,A + CALL HCUROF + POP AF + EX AF,AF' + LD A,C + RET +; +?KEY29: + PUSH HL + PUSH BC + LD B,10 + LD HL,KYDTB1 +?KEY30: LD (HL),FFH + INC HL + DJNZ ?KEY30 + POP BC + POP HL + JR ?KEY28 +; +INKEYFF:ENT + CALL KBFCHR + PUSH HL + CALL KEYGET + LD HL,KEYDAT + OR A + JR Z,INKEY9 + CP M + JR NZ,INKEY9 + POP HL + XOR A + RET +INKEY9: LD M,A + POP HL + + RET +; +INKEY0: ENT + CALL KBFCHR + CALL KEYGET + LD (KEYDAT),A + RET +; +KBFCHR: PUSH HL ;function key buffer + LD HL,(INBUFC) + LD A,L ;INBUFC + CP H ;INBUFL + POP HL + RET Z + EX (SP),HL + INC A + LD (INBUFC),A + LD HL,INBUFL ;INBUF-1 + CALL ADDHLA + LD A,M + POP HL + RET +; +; +; +KEYSNS: CALL PUSHR + LD DE,KYDTB2 + LD HL,KYDTB1 + LD BC,0A00H + DI +KEYSN0: LD A,B + ADD A,EFH + OUT (D0H),A + CP F8H ;special strobe + IN A,(D1H) + JR NZ,+4 + OR 7FH + CP FFH + JR Z,+4 + SET 0,C ;bit 0=key on + EX DE,HL + CP M + LD M,A + EX DE,HL + JR Z,+4 + SET 1,C ;bit 1=not same key + CPL + AND M + JR Z,+4 + SET 2,C ;bit 2=new key + INC HL + INC DE + DJNZ KEYSN0 + LD A,C +KEYSNE: EI + RET +; +KEYGET: CALL PUSHR + LD HL,KYDTB1 + LD DE,KYDTB2 + + PUSH HL + PUSH DE + LD BC,10 + LDIR ;(KYDTB2)<--(KYDTB1) + POP HL + POP DE + LD BC,0AF9H + DI + LD A,C + OUT (D0H),A + NOP + IN A,(D1H) + LD (DE),A +KEYGL1: LD A,C + OUT (D0H),A + CP F8H ;special strobe + IN A,(D1H) + LD (DE),A + JR Z,KEYG13 + CPL + AND M ;same--->Acc=0 +KEYGL3: LD M,A + INC DE + INC HL + DEC C + DJNZ KEYGL1 + EI + LD BC,0A00H +KYSTCK: DEC HL + LD A,M + OR A + JR NZ,KEYGIN ;not same-->KEYGIN + INC C + DJNZ KYSTCK + LD B,10 +KEYGL2: DEC DE + LD A,(DE) + CP FFH + JR NZ,REPKIN +REPKI3: DJNZ KEYGL2 +KEYNUL: XOR A + JR KEYSNE +; +KEYG13: XOR A + JR KEYGL3 +; +REPKIN: LD A,B + CP 2 + JR NZ,REPKI2 + LD A,(DE) + AND 81H + JR NZ,REPKI3 + LD A,1BH ;break key + JR KEYSNE +REPKI2: CP 1 + JR Z,KEYNUL + LD A,(REPCD1) + CP B + JR NZ,REPKI3 + LD A,(DE) + + PUSH DE + LD D,A + LD A,(REPCD2) + AND D + POP DE + JR NZ,REPKI3 + LD A,(KEYDAT) + JR KEYSNE +; +KEYGIN: PUSH AF + LD A,B + LD (REPCD1),A + LD A,M + LD (REPCD2),A + POP AF + DEC B + JR NZ,KEYGI6 + CALL ABITB ;function key + LD A,(CTRSFT) + BIT 6,A + JR Z,KEYNUL + BIT 0,A + LD A,B + JR NZ,+4 + ADD A,5 + CP 10 + JR NC,KEYNUL + LD L,A + LD H,0 + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + LD BC,FUNBUF + ADD HL,BC + LD A,M + OR A + JR Z,KEYNUL + LD DE,INBUFC + LD A,1 + LD (DE),A + INC DE + LD BC,16 + LDIR + LD A,(INBUF) + JP KEYSNE +KEYGI6: CALL ABITB + LD A,C + ADD A,A + ADD A,A + ADD A,A + ADD A,B + LD L,A + LD H,0 + LD A,(CTRSFT) + BIT 6,A ;ctrl key + LD BC,NOMALB + JR Z,CTRLIN + PUSH AF + LD A,(CURMAK) + + CP 1 ;shift+lock + JR NZ,SFTLKL + POP AF + XOR 1 + PUSH AF +SFTLKL: POP AF + BIT 0,A ;shift key + JR NZ,+5 + LD BC,SHIFTB + LD A,(CURMAK) + CP 2 ;graph + JR NZ,CHRSET + LD BC,GRPHB + LD A,(CTRSFT) + BIT 0,A + JR Z,CHRSET + LD BC,GRPHS +CHRSET: CALL ?KYTBL + LD A,C + JP KEYSNE +CTRLIN: CALL ?KYTBL + LD A,C + CP 20H + JP C,KEYSNE + LD HL,CTKYTB + LD B,5 + CP M + JR Z,CTRLC1 + INC HL + DJNZ -4 + CP 40H + JP C,KEYNUL + CP 5BH + JP NC,KEYNUL + SUB 40H + JP KEYSNE +CTRLC1: LD A,32 + SUB B + JP KEYSNE +; +ABITB: LD B,8 + RRCA + JR C,ABITB2 + DJNZ -3 + RET +ABITB2: DEC B + RET +; +; +BRKEY: ENT + LD A,E8H + OUT (D0H),A + NOP + IN A,(D1H) + AND 81H + RET Z + RLCA + RET C + JR BRKEY +; + +KYDTB1: DEFS 1 +CTRSFT: DEFS 9 +KYDTB2: DEFS 10 +REPTF: DEFB 0 +REPCD1: DEFB 0 +REPCD2: DEFB 1 +; +; +NOMALB: DEFW 0BEAH + DEF8 90,17,FC,19,09,3B,3A,0D + DEFW 1790H + DEFW 19FCH + DEFW 3B09H + DEFW 0D3AH + ENDM + DEF8 18,10,12,11,13,14,3F,2F + DEFW 1018H + DEFW 1112H + DEFW 1413H + DEFW 2F3FH + ENDM +; +SHIFTB: DEFW 0C2AH + DEF8 90,17,FB,05,09,2B,2A,0D + DEFW 1790H + DEFW 05FBH + DEFW 2B09H + DEFW 0D2AH + ENDM + DEF8 16,15,12,11,13,14,C6,5F + DEFW 1516H + DEFW 1112H + DEFW 1413H + DEFW 5FC6H + ENDM +; +GRPHB: DEFW 0CE9H + DEF8 90,17,68,05,09,84,E9,0D + DEFW 1790H + DEFW 0568H + DEFW 8409H + DEFW 0DE9H + ENDM + DEF8 16,15,12,11,13,14,8F,8B + DEFW 1516H + DEFW 1112H + DEFW 1413H + DEFW 8B8FH + ENDM +; +GRPHS: DEFW 0C6AH + DEF8 90,17,6C,19,09,FE,89,0D + DEFW 1790H + DEFW 196CH + DEFW FE09H + DEFW 0D89H + ENDM + DEF8 16,15,12,11,13,14,8A,7B + DEFW 1516H + DEFW 1112H + + DEFW 1413H + DEFW 7B8AH + ENDM +; +CTKYTB: DEFB 5BH ; [ + DEFB 5CH ; \ + DEFB 5DH ; ] + DEFB 5EH ; ^ + DEFB 2FH ; / + END + SKP H + + INCLD XPL2 +;----------------------------------- +; +; +; CRT message out +; +; 05H,06H simulated +; +; ent. DE=msg top addr +; eof is NULL +; mode code 05h,06h +; CR is reset mode +;----------------------------------- +; +CRTSIMU:CALL PUSHR +CRTSI2: LD A,(DE) ;get msg data + INC DE ;next pointer + OR A + RET Z ;eof code is NULL + LD C,A + CP 05H ;sft lock in + JR Z,CRTSIE ;CTR.E + CP 06H ;normal mode + JR Z,CRTSIF ;CTR.F + SUB "A" + CP 26 + JR NC,CRTSI4 ;skip not if code A-Z +CRTSFG: LD A,0 ;xxx + OR A + JR Z,CRTSI4 + LD HL,SMLTBL-"A" ;sftlock code trans. + LD B,0 + ADD HL,BC + LD C,M +; +CRTSI4: LD A,C + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + CP 0DH + JR NZ,CRTSI2 +CRTSIF: XOR A +CRTSIE: LD (CRTSFG+1),A + JR CRTSI2 +; +SMLTBL: + DEFB 0A1H ;a + DEFB 09AH ;b + DEFB 09FH ;c + DEFB 09CH ;d + DEFB 092H ;e + DEFB 0AAH ;f + DEFB 097H ;g + DEFB 098H ;h + DEFB 0A6H ;i + DEFB 0AFH ;j + DEFB 0A9H ;k + DEFB 0B8H ;l + DEFB 0B3H ;m + + DEFB 0B0H ;n + DEFB 0B7H ;o + DEFB 09EH ;p + DEFB 0A0H ;q + DEFB 09DH ;r + DEFB 0A4H ;s + DEFB 096H ;t + DEFB 0A5H ;u + DEFB 0ABH ;v + DEFB 0A3H ;w + DEFB 09BH ;x + DEFB 0BDH ;y + DEFB 0A2H ;z + SKP H + +EQTBL: ENT +;--------------------------------- +; +; +; +; CRT/KB driver +; +; +;--------------------------------- +$CRT: ENT + DEFW $KB + DEFM "CRT" + DEFB 0 + DEFB 8AH ;Streem, O1C, W + DEFW 0 + DEFW CRTINI + DEFW .RET ;ROPEN + DEFW .RET ;WOPEN + DEFW .RET ;CLOSE + DEFW .RET ;KILL + DEFW CRTIN + DEFW CRTOUT + DEFW CRTPOS +$KB: ENT + DEFW $LPT + DEFM "KB" + DEFW 0 + DEFB 81H ;Streem, R + DEFW 0 + DEFW .RET ;INIT + DEFW .RET ;ROPEN + DEFW .RET ;WOPEN + DEFW .RET ;CLOSE + DEFW .RET ;KILL + DEFW CRTIN + DEFW .RET + DEFW .RET +; +CRTIN: SVC .GETL + RST 3 + DEFB .GETL + ENDM + LD A,80H ;BREAKZ + RET C + SVC .COUNT + RST 3 + DEFB .COUNT + ENDM + RET +CRTOUT: EX AF,AF' + LD HL,CRT1C + LD A,(DISPX) ;0=msg/1=msgx + OR A + JR Z,+5 + LD HL,CRT1CX + EX AF,AF' + JP (HL) +CRTPOS: LD A,(CURX) + RET + SKP H + +; +;---------------------------------- +; +; +; CRT(LPT) routine +; +; CRT1C &1C +; CRT1CX &1CX +; CRTMSG &MSG +; &CR +; +;--------------------------------- +; +&CR: LD A,0DH +; +&1C: PUSH AF + LD A,(FILOUT) ;0=crt/1=lpt + OR A + JR NZ,&1CL + POP AF + JR CRT1C +&1CL: POP AF + JP LPT1C +; +&1CX: PUSH AF + LD A,(FILOUT) ;0=crt/1=lpt + OR A + JR NZ,&1CXL + POP AF + JR CRT1CX +&1CXL: POP AF + JP LPT1CX +; +&MSG: CALL PUSHR + LD HL,&1C + JR CRTMS2 +; +CRTMSG: CALL PUSHR + LD HL,CRT1C +CRTMS2: LD A,(DE) + OR A + RET Z + CALL .HL + INC DE + JR CRTMS2 + SKP H + +; +CRT1S: LD A," " +CRT1C: ENT + CALL PUSHRA +CRT1C0: + LD C,A + LD A,(INPFLG) ;plot on/off + OR A + JR Z,CRT1C9 ;skip if plot off + LD A,C + CP 20H + JR NC,CRT1C4 ;skip if normal ascii + LD DE,(CURXY) ;control code only + LD HL,(XS) + CP 14H + JR Z,CRT1C1 ;skip if left code + CP 12H + JR NZ,CRT1C2 ; + LD HL,(YS) ;skip if up code + LD E,D +CRT1C1: LD A,L + CP E + JP NC,BEEP ;error range +CRT1C2: + LD HL,PLTCOD ;plotter code trans. + LD B,0 + ADD HL,BC + LD A,M + INC A + JR Z,CRT1C9 ; no operation when ffh + DEC A + JP Z,BEEP ;beep when null code +CRT1C4: CALL PLTOUT +CRT1C9: LD A,C + CP 20H + JP C,CTRLJB ;control code trans. + JP ACCDI ;1 byte disply ent.=acc +; +CRT1CX: CALL PUSHRA + LD C,A + CP 0DH + JR Z,CRT1C0 + CALL ACCDI + LD A,(INPFLG) ;plot on/off + OR A + RET Z + LD A,C +; JR PLTOTX + SKP H + +; +PLTOTX: ENT + CP 11H + JR C,PLT2E + CP 17H + JR C,PLTOK + CP 20H + JR C,PLT2E +PLTOUT: CP 60H + JR C,PLTOK + CP 70H + JR C,PLT2E + CP C1H + JR C,PLTOK + CALL CHKACC + DEFB 3 + DEFW CFD7H + DEFB FFH + JR Z,PLTOK +PLT2E: LD A,2EH +PLTOK: JP LPTOUT +; +PLTCOD: DEFB 0 ;00 + DEFB 0 ;01 + DEFB 0 ;02 + DEFB 0 ;03 + DEFB FFH ;04 CTR.D + DEFB FFH ;05 CTR.E + DEFB FFH ;06 CTR.F + DEFB 1DH ;07 + DEFB 0 ;08 + DEFB FFH ;09 CTAB + DEFB 0 ;0A + DEFB 0 ;0B + DEFB 0 ;0C + DEFB 0DH ;0D + DEFB 0 ;0E + DEFB 0 ;0F + DEFB 0 ;10 DEL + DEFB 0AH ;11 DOWN + DEFB 03H ;12 UP + DEFB 20H ;13 RIGHT + DEFB 0EH ;14 LEFT + DEFB 0 ;15 HOME + DEFB 0 ;16 CLR + DEFB FFH ;17 GRAPH + DEFB 0 ;18 INST + DEFB FFH ;19 ALPHA + DEFB FFH ;1A KANA + DEFB 0DH ;1B + DEFB FFH ;1C hirakana + DEFB 0 ;1D + DEFB 0 ;1E + DEFB 0 ;1F + SKP H + +; +;-------------------------------- +; +; Monitor hot start +; +; +;-------------------------------- +STARTP: + DI + XOR A + OUT (LSDMD),A ;mz-800 320*200 4col + LD (INPFLG),A ;plot on/off + LD (FILOUT),A ;0=crt/1=lpt + LD SP,0000H ;stack pointer set + IM 2 ;interruptt mode 2 + LD A,4 + OUT (LSD3),A ;8253 int disable + OUT (LSE0),A ;bank dram + OUT (LSE1),A ;bank dram + CALL PALOFF ;palette all off + LD A,0FH ;interrupt vector + LD I,A + LD A,FEH ;interrupt addrs + OUT (FDH),A ;PIO int vector set + LD A,0FH + OUT (FDH),A ;PIO mode 0 + PUSH BC + CALL CRTPWR ;CRT power on init + CALL PSGPWR ;PSG power on init + CALL EMMPWR ;EMM power on init + POP BC +STRTP2: DEFB 21H ;dummy byte + JR STRTP9 + XOR A + LD (STRTP2),A + LD D,A + LD E,A + SVC .TIMST + RST 3 + DEFB .TIMST + ENDM + LD DE,$CMT + LD A,B + OR A + JR Z,STRTP4 + DEC A + JR Z,STRTP4 + LD DE,$FD + DEC A + JR Z,STRTP4 + LD DE,$QD +STRTP4: LD A,C + SVC .SETDF + RST 3 + DEFB .SETDF + ENDM +STRTP9: JP COLDST +; +; +; + +; +CRTPWR: +; check vram option ? +; + DI + XOR A + OUT (LSDMD),A ;320*200 4 color + LD A,14H + OUT (LSRF),A + LD A,94H + OUT (LSWF),A + IN A,(LSE0) + OUT (LSE0),A ;cg off + LD HL,9FFFH + LD A,(HL) ;read + LD C,A + CPL + LD (HL),A ;write + CP (HL) ;verify + LD (HL),C ;pop mem + LD A,0 + JR NZ,CRTPW0 + INC A +CRTPW0: LD (MEMOP),A + IN A,(LSE1) + EI +; + LD A,1 ;window (0,24) + CALL DSMODE ;320*200 4 color +; +; data free area init +; +; + XOR A + LD (CURFLG),A ;cursor off + LD (CURMAK),A ;nomal char + RET +; +; + END + SKP H + + INCLD XMON-USR +; ----------------------------- +; MZ-2Z009 User I/O driver +; FI:MON-USR ver 1.0A 03.17.84 +; ----------------------------- +; +; +; +$USR: ENT + DEFW 0 + DEFM "USR" + DEFB 0 + DEFB 9FH ;STRM, FNM, W1C, R1C, W, R + DEFW 0 + DEFW .RET ;INIT + DEFW USRRO ;ROPEN + DEFW USRWO ;WOPEN + DEFW .RET ;CLOSE + DEFW .RET ;KILL + DEFW USRIN ;INP + DEFW USROUT ;OUT + DEFW .RET ;POS +; +USRRO: +USRWO: LD HL,ELMD1 + SVC .DEASC + RST 3 + DEFB .DEASC + ENDM + LD A,D + OR E + JP Z,ER60 + LD (ZWRK1),DE + RET +; +USRIN: +USROUT: LD HL,(ZWRK1) + JP (HL) + END + END diff --git a/software/asm/mz-xz009/MON2.ASM b/software/asm/mz-xz009/MON2.ASM new file mode 100644 index 0000000..73c73ff --- /dev/null +++ b/software/asm/mz-xz009/MON2.ASM @@ -0,0 +1,640 @@ +; ------------------------- +; MZ-800 monitor Work area +; FI:MON2 ver 1.0A 9.05.84 +; ------------------------- +; + INCLD MACRO + INCLD XCRTEQU +; +; +; Interrupt vector +; +; + ORG 0FF0H + DEFS 12 ;interrupt reserve +; + ORG 0FFCH + DEFW PSGINT ;PSG(timer) interrupt + DEFW LPTINT ;Printer intrrupt +; +; Directry entry +; + ORG 1000H +ELMD: ENT ;file mode + DEFS 1 +ELMD1: ENT ;file name + DEFS 17 +ELMD18: ENT ;protection, type + DEFS 2 +ELMD20: ENT ;size + DEFS 2 +ELMD22: ENT ;adrs + DEFS 2 +ELMD24: ENT ;exec + DEFS 2 +ELMD26: ENT + DEFS 4 +ELMD30: ENT + DEFS 2 +ELMD32: ENT + DEFS 32 +; +; LU table entry +; +ZTOP: ENT ;LU block top + DEFW 2 +ZLOG: ENT ;LU# + DEFB 0 +ZRWX: ENT ;1:R, 2:W, 3:X + DEFB 0 +ZEQT: ENT ;Address of EQTBL + DEFW 0 +ZCH: ENT ;CH# + DEFB 0 +ZEOF: ENT ;EOF? + DEFB 0 +ZWRK1: ENT ;Work 1 + DEFB 0 +ZWRK2: ENT ;Work 2 + DEFB 0 +; + + SKP H + +; +; EQT table entry +; +ZNXT: ENT ;STRM SQR RND + DEFW 0 +ZDEVNM: ENT ;-- device name -- + DEFS 4 +ZFLAG1: ENT ;----- flag 1 ---- + DEFB 1 +ZFLAG2: ENT ;----- flag 2 ---- + DEFB 0 +ZDIRMX: ENT ;---- max dir ---- + DEFB 0 +ZINIT: ENT ;--- initialize -- + DEFW 0 +ZRO: ENT ;ROPEN RDINF +ZMAPS: ENT ; Map.start + DEFW 0 +ZWO: ENT ;WOPEN WRFIL +ZMAPB: ENT ; Map.bytes + DEFW 0 +ZCL: ENT ;CLOSE +ZSTRT: ENT ; START +ZDIRS: ENT ; Dir.start + DEFW 0 +ZKL: ENT ;KILL +ZBLK: ENT ; - Block/byte - + DEFW 0 +ZINP: ENT ;INP RDDAT BREAD + DEFW 0 +ZOUT: ENT ;OUT WRDAT BWRIT + DEFW 0 +ZPOS: ENT ;Position +ZDELT: ENT ; DELETE + DEFW 0 +ZWDIR: ENT ; WR DIR + DEFW 0 +ZFREE: ENT ; - free bytes - + DEFW 0 +; +ZBYTES: EQU ZFREE+2-ZNXT ;Z-area bytes +; + DEFS 2 +; +DCHAN: ENT ;default channel + DEFS 1 +DDEV: ENT ;default device + DEFS 2 +; +; +.$CRT: ENT + DEFW $CRT +.$LPT: ENT + DEFW $LPT +; + SKP H + +; +; Work area pointers +; +TEXTST: ENT ;Text starat + DEFS 2 +TEXTED: ENT +POOL: ENT ;I/O work + DEFS 2 +POOLED: ENT +VARST: ENT ;Variable start + DEFS 2 +STRST: ENT ;String start + DEFS 2 +VARED: ENT ;Var & string end + DEFS 2 +TMPEND: ENT ;Temporaly end + DEFS 2 +INTFAC: ENT ;Initial FAC + DEFS 2 +MEMLMT: ENT ;LIMIT command + DEFS 2 +MEMMAX: ENT ;Last avairable memory + DEFW FF00H +; +; +; cursor / position work +; +; +; +CURXY: ENT ;cursor position +CURX: ENT + DEFB 0 +CURY: ENT + DEFB 0 +POSADR: ENT ;text buf addr + DEFW 2000H +BITADR: ENT ;bitmap mem addr + DEFW 8000H +; +POINTX: ENT ;Graphic x-coordinate + DEFS 2 +POINTY: ENT ;Graphic y-coordinate + DEFS 2 +; +CURFLG: ENT ;0:off 1:on + DEFB 0 +CURMAK: ENT ;cursor mark 0=normal + DEFB 0 ; 1=sftlock +; 2=graph + SKP H + +; +; CRT/LPT work +; +CMTMSG: ENT ;if =0 disp cmt-msg + DEFS 1 +INPFLG: ENT ;0=plot off 1=plot on + DEFB 0 +DISPX: ENT ;0=MSG 1=MSGX + DEFS 1 +FILOUT: ENT ;0=CRT 1=LPT + DEFB 0 +PSEL: ENT ;Printer select + DEFB 1 +PCRLF: ENT ;LPT CRLF CODE + DEFB 0DH +LPT.TM: ENT ;LPT wait time + DEFB 14 +LPOSB: ENT ;LPT position + DEFB 0 +PSMAL: ENT ;LPT small/capital + DEFB 0 +PNMODE: ENT ;LPT mode + DEFB 1 ; 1..text, 2..graph +; +; +; crt dispmode work +; +; +DMD: ENT ;disp mode 0 320 4 col + DEFB 0 ; 2 320 16 col +; 4 640 2 col +; 6 640 4 col +MEMOP: ENT ;option mem exit + DEFB 0 ;0= off 1= on +PWMODE: ENT ;graphic operation mode + DEFB 0 +CMODE: ENT ;color mode + DEFB 3 +CPLANE: ENT ;curent active plane + DEFB 3 +MAXCF: ENT ;maximum plane data + DEFB 4 +PMASK: ENT ;mask plane data + DEFB FFH +GMODE: ENT ;graphic color mode + DEFB 3 +; + DEFS 50H ;10A0 -- 10EF monitor stack +; +; +; +IBUFE: ENT ;CMT work + DEFS 128 +; + DEFS 34 + DEFB EFH ;FLSDT + DEFS 2 ;STRFG, DPRNT +TMCNT: ENT + DEFS 2 +SUMDT: ENT + + DEFS 2 ;SUMDT +CSMDT: ENT + DEFS 2 ;CSMDT + DEFS 2 ;AMPM, TIMFG + DEFB 1 ;SWRK +TEMPW: ENT + DEFB 4 ;TEMPW + DEFB 5 ;ONTYO + DEFS 3 ;OCTV, RATIO +; +KEYBM1: ENT + DEFS 1 +KEYBUF: ENT + DEFS 262 +KEY262: ENT + DEFS 2 +KEY264: ENT + DEFS 2 +KEY266: ENT + DEFS 4 +; +FUNBUF: ENT + FKEY 1,"RUN ",0DH + DEFB FNB1E-FNB1S +FNB1S: DEFM "RUN " + + IFD 0DH + DEFB 0DH + ENDIF +FNB1E: DEFS FNB1S+15-FNB1E + ENDM + FKEY 2,"LIST " + DEFB FNB2E-FNB2S +FNB2S: DEFM "LIST " + + IFD @3 + ENDIF +FNB2E: DEFS FNB2S+15-FNB2E + ENDM + FKEY 3,"AUTO " + DEFB FNB3E-FNB3S +FNB3S: DEFM "AUTO " + + IFD @3 + ENDIF +FNB3E: DEFS FNB3S+15-FNB3E + ENDM + FKEY 4,"RENUM " + DEFB FNB4E-FNB4S +FNB4S: DEFM "RENUM " + + + IFD @3 + ENDIF +FNB4E: DEFS FNB4S+15-FNB4E + ENDM + FKEY 5,"COLOR " ;QD FD ->"DIR " + DEFB FNB5E-FNB5S +FNB5S: DEFM "COLOR " + + IFD @3 + ENDIF +FNB5E: DEFS FNB5S+15-FNB5E + ENDM + FKEY 6,"CHR$(" + DEFB FNB6E-FNB6S +FNB6S: DEFM "CHR$(" + + IFD @3 + ENDIF +FNB6E: DEFS FNB6S+15-FNB6E + ENDM + FKEY 7,"DEF KEY(" + DEFB FNB7E-FNB7S +FNB7S: DEFM "DEF KEY(" + + IFD @3 + ENDIF +FNB7E: DEFS FNB7S+15-FNB7E + ENDM + FKEY 8,"CONT" + DEFB FNB8E-FNB8S +FNB8S: DEFM "CONT" + IFD @3 + ENDIF +FNB8E: DEFS FNB8S+15-FNB8E + ENDM + FKEY 9,"SAVE " + DEFB FNB9E-FNB9S +FNB9S: DEFM "SAVE " + + IFD @3 + ENDIF +FNB9E: DEFS FNB9S+15-FNB9E + ENDM + FKEY 10,"LOAD " + DEFB FNB10E-FNB10S +FNB10S: DEFM "LOAD " + + IFD @3 + ENDIF +FNB10E: DEFS FNB10S+15-FNB10E + ENDM +; +INBUFC: ENT ;INBUF counter + DEFB 0 +INBUFL: ENT ;INBUF length + DEFB 0 +INBUF: ENT ;pending key 16 + DEFS 16 +; +LINLIM: ENT ;getline buffer limit + + DEFB 255 ;const +KEYDAT: ENT + DEFB 0 +; +; timer work +; +AMPM: ENT + DEFB 0 +SECD: ENT + DEFW 0 +; +; scrool work +; +XS: ENT ;console X start const=0 + DEFB 0 +XE: ENT ;console X end + DEFB 39 +CWIDTH: ENT ;console width + DEFW 40 ;cwidth=xe+1 +CSIZE: ENT ;csize=cwidth*8 + DEFW 320 +YS: ENT ;console Y start + DEFB 0 +YE: ENT ;console Y end + DEFB 24 +YW: ENT ;console Y width + DEFB 25 ;yw=ye-ys+1 +; +; scrool custom data +; +SOF: ENT ;scrool offset + DEFW 0 +SW: ENT ;scrool width + DEFB 7DH ;sw = yw*5 +SSA: ENT ;scrool start + DEFB 0 ;ssa = ys*5 +SEA: ENT ;scrool end + DEFB 7DH ;sea =(ye+1)*5 +SSW: ENT ;scrool offset limit + DEFW 3E8H ;ssw = sw *8 +; +; crt work (basic used) +; +CRTMD1: ENT ;crt bit data + DEFB 1 +CRTMD2: ENT ;crt mode no. data + DEFB 1 +SELCOL: ENT ;default color + DEFB 3 +PAIWED: ENT + DEFW 0 ;paint stack end +; +; +; +; palette work +; +PALBK: ENT ;palette block number + DEFB 0 +PALAD: ENT ;palette init addr + DEFW PAL4T + +PALTBL: ENT ;palette data table + DEFS 4 +; +; +; palette init data table +; +PAL2T: ENT ;palette + DEFB 00H ;PAL 0 black + DEFB 1FH ;PAL 1 white + DEFB 2FH ;PAL 2 white + DEFB 3FH ;PAL 3 white +; +PAL4T: ENT ;palette + DEFB 00H ;PAL 0 black + DEFB 11H ;PAL 1 blue + DEFB 22H ;PAL 2 red + DEFB 3FH ;PAL 3 white +; +PAL16T: ENT ;palette + DEFB 00H ;PAL 0 black + DEFB 11H ;PAL 1 blue + DEFB 22H ;PAL 2 red + DEFB 33H ;PAL 3 purple +; +; +; cursor init data table +; +CURDT1: ENT ;cursor normal + DEFB FFH ;0 + DEFB FFH ;1 + DEFB FFH ;2 + DEFB FFH ;3 + DEFB FFH ;4 + DEFB FFH ;5 + DEFB FFH ;6 + DEFB FFH ;7 +; +CURDT2: ENT ;cursor sftlock + DEFB 7EH ;0 + DEFB FFH ;1 + DEFB FFH ;2 + DEFB FFH ;3 + DEFB FFH ;4 + DEFB FFH ;5 + DEFB FFH ;6 + DEFB 7EH ;7 +; +CURDT3: ENT ;cursor graph + DEFB 00H ;0 + DEFB 00H ;1 + DEFB 00H ;2 + DEFB 00H ;3 + DEFB 00H ;4 + DEFB 00H ;5 + DEFB 00H ;6 + DEFB FFH ;7 +; +; screen management buffer +; +SCRNT0: ENT + + DEFS 25 +SCRNTE: DEFB 0 +; +; +; emm work +; +; +EMFLG: ENT + DEFS 1 +EMPTR: ENT + DEFS 2 +EMWP0: ENT + DEFS 2 +EMWP1: ENT + DEFS 2 + SKP H + +; ------------------------------ +; +; lpt work +; +; ------------------------------ +; +WPULSE: DEFB 0 +WSTROB: DEFB 0 +PBCMAW: DEFW 3FF0H +PBCN: ENT + DEFW 0 ; +PBCIP: DEFW C000H ;FIFO inp pointer +PBCOP: DEFW C000H ;FIFO out pointer +PBCTOP: DEFW C000H ;buffer top +SPLFLG: DEFB 0 ;spool on/stop/off +OUTIMF: DEFB 0 ;output image flag +HPCOUN: DEFB 4 ;printer counter +HERRF: ENT + DEFB 0 ;ROM error flag +; +; +;--------------------------------- +; +; +; code translation table +; +;--------------------------------- +; +CTABLE: ENT + DEFW CTABL1 ;change table address +; +; +CTABL1: DEFB 39 ;change number +; +; + DEFB 023H ;# + DEFB 023H +; + DEFB 040H ;@ + DEFB 040H +; + DEFB 05BH ;[ + DEFB 05BH +; + DEFB 05CH ;\ + DEFB 05CH +; + DEFB 05DH ;] + DEFB 05DH +; + DEFB 08BH ;^ + DEFB 05EH +; + DEFB 090H ;under_ + DEFB 05FH +; + DEFB 093H ;' + DEFB 060H +; + DEFB 0A1H ;a + + DEFB 061H +; + DEFB 09AH ;b + DEFB 062H +; + DEFB 09FH ;c + DEFB 063H +; + DEFB 09CH ;d + DEFB 064H +; + DEFB 092H ;e + DEFB 065H +; + DEFB 0AAH ;f + DEFB 066H +; + DEFB 097H ;g + DEFB 067H +; + DEFB 098H ;h + DEFB 068H +; + DEFB 0A6H ;i + DEFB 069H +; + DEFB 0AFH ;j + DEFB 06AH +; + DEFB 0A9H ;k + DEFB 06BH +; + DEFB 0B8H ;l + DEFB 6CH +; + DEFB 0B3H ;m + DEFB 6DH +; + DEFB 0B0H ;n + DEFB 6EH +; + DEFB 0B7H ;o + DEFB 6FH +; + DEFB 09EH ;p + DEFB 70H +; + DEFB 0A0H ;q + DEFB 71H +; + DEFB 09DH ;r + DEFB 72H +; + DEFB 0A4H ;s + DEFB 73H +; + DEFB 096H ;t + DEFB 74H +; + DEFB 0A5H ;u + + DEFB 75H +; + DEFB 0ABH ;v + DEFB 76H +; + DEFB 0A3H ;w + DEFB 77H +; + DEFB 09BH ;x + DEFB 78H +; + DEFB 0BDH ;y + DEFB 79H +; + DEFB 0A2H ;z + DEFB 7AH +; + DEFB 0BEH ;{ + DEFB 7BH +; + DEFB 0C0H ;Ý + DEFB 7CH +; + DEFB 080H ;} + DEFB 7DH +; + DEFB 094H ;~ + DEFB 7EH +; + DEFB 07FH ; + DEFB 7FH +; +; + END diff --git a/software/asm/mz-xz009/MON3.ASM b/software/asm/mz-xz009/MON3.ASM new file mode 100644 index 0000000..e3ce9a6 --- /dev/null +++ b/software/asm/mz-xz009/MON3.ASM @@ -0,0 +1,941 @@ + INCLD MACRO + LIST + INCLD XMON-ROM +; +;--------------------------------- +; XMON-ROM 8.30.84 +; +; JISX MZ-800 --> ASC +; ent A :data +; IX :output sub +; (HL) :tab counter +; E :DISPX +; +;--------------------------------- +; +; +JISX: ENT + CP 0DH + JR Z,JISXCR + CP 0AH + JR Z,JISXCR + CALL AJISX ;code change + CP 20H + JR NC,.IX + BIT 0,E ;print/p ? + JR Z,.IX ;no + LD A," " +.IX: JP (IX) +; +JISXCR: CALL .IX + LD M,0 + RET +; +AJISX: PUSH BC + LD C,0 + CALL AJISX1 + POP BC + RET +; +; +AJISX1: CALL PUSHR + LD HL,(CTABLE) + LD B,(HL) ;code counter set + INC HL ;HL=MZ-800 + LD D,H ;DE=JIS + LD E,L + INC DE + BIT 0,C ;MZ-800 --> JIS ? + JR Z,AJISX2 ;yes + EX DE,HL +AJISX2: CP (HL) + JR Z,AJISX3 ;code match + INC HL + INC HL + INC DE + INC DE + DJNZ AJISX2 + RET +; +AJISX3: LD A,(DE) + + RET +; +; +;--------------------------------- +; +; +; JISR ASC --> MZ-800 +; ent (A) :data +; IX :input sub +; +;--------------------------------- +; +; +JISR: ENT + CALL .IX ;input sub :A set + RET C +; + PUSH BC + LD C,1 + CALL AJISX1 + POP BC + OR A + RET +;--------------------------------- +; +$LPT: ENT + DEFW $CMT + DEFM "LPT" + DEFB 0 + DEFB 8AH ;Streem, O1C, W + DEFW 0 + DEFW LPTINI + DEFW ER59 ;ROPEN + DEFW .RET ;WOPEN + DEFW .RET ;CLOSE + DEFW .RET ;KILL + DEFW 0 ;INP + DEFW LPT1C? + DEFW LPTPOS +; +; +PIO.AC: EQU FCH ;Port-A control +PIO.AD: EQU FEH ;Port-A data +PIO.BC: EQU FDH ;Port-B control +PIO.BD: EQU FFH ;Port-B data +; +P.PLT: EQU 0 ;1P01, 1P09 +P.KP5: EQU 1 ;KP5 +P.JIS: EQU 2 ;JIS code +P.THRU: EQU 3 ;thrue +; +; +LPTPOS: LD A,(INPFLG) + OR A + LD A,(LPOSB) + RET Z + LD A,(CURX) + RET +; +; + +; +;---------------------------------- +; +; PL ROM CALL +; +;---------------------------------- +ROMST: EQU 03H ;F403H +ROMST1: EQU F400H +; +; +TIMST: ENT + CALL ROMJP2 + DEFB ROMST +; +TIMRD: ENT + CALL ROMJP2 + DEFB ROMST+3 +; +STICK: ENT + CALL ROMJP2 + DEFB ROMST+6 +; +STRIG: ENT + CALL ROMJP2 + DEFB ROMST+9 +; +HCPY: ENT + CALL ROMJP + DEFB ROMST+12 +; +LPT1C?: ENT + LD HL,DISPX + BIT 0,M + JR NZ,LPT1CX +; +LPT1C: ENT + PUSH IY + EX AF,AF' + LD A,3+15 ;F003+15 + LD (APL1CD),A + LD A,.CRT1C +APL1CF: LD (APL1CE),A + EX AF,AF' + CALL APL1C + POP IY + PUSH BC + LD B,A + LD A,(INPFLG) + OR A + LD A,B + POP BC + RET Z + RST 3 +APL1CE: DEFB .CRT1C + RET +APL1C: LD IY,JISX + CALL ROMJP +APL1CD: DEFB ROMST+15 +; +LPT1CX: ENT + + PUSH IY + EX AF,AF' + LD A,3+18 ;F003+18 + LD (APL1CD),A + LD A,.CRT1CX + JR APL1CF +; +LPTINI: ENT + CALL ROMJP + DEFB ROMST+21 +; +LPTOUT: ENT + CALL ROMJP + DEFB ROMST+24 +; +PBCCLR: ENT + CALL ROMJP + DEFB ROMST+27 +; +SPLOFF: ENT + CALL ROMJP + DEFB ROMST+30 +; +SPLON: ENT + CALL ROMJP + DEFB ROMST+33 +; +SPLSW: ENT + CALL ROMJP + DEFB ROMST+36 +; +LPTM02: ENT + CALL ROMJP + DEFB ROMST+39 +; +;--------------------------- +; +; +; +ROMJP: EX AF,AF' + LD A,(PSEL) + BIT P.KP5,A + JR Z,ROMJP1 +; + PUSH BC + LD B,3 + SVC .MCTRL + RST 3 + DEFB .MCTRL + ENDM + POP BC +; +ROMJP1: EX AF,AF' +ROMJP2: EX AF,AF' + XOR A + LD (KEY266),HL + LD (HERRF),A + EX AF,AF' + DI + LD (KEY264),SP + + EX (SP),HL ;HL=call stored address + LD SP,HL ; + POP HL ;HL=call address + OUT (LSE3),A + LD SP,KEY262 + CALL HLJP + OUT (LSE1),A + LD SP,(KEY264) + EX (SP),HL + INC SP + INC SP + EI + EX AF,AF' + LD A,(HERRF) + OR A + JR NZ,ROMERR + EX AF,AF' + RET +HLJP: LD H,0F4H ;HL=F4??H + JP (HL) +; +; +ROMERR: + LD B,A ;B=0 + EX AF,AF' + DEC B ;B=1 + JP Z,BREAKZ + DEC B ;B=2 + JP NZ,ERRORJ +ROMER1: LD HL,(PBCN) ;INIT M2 + LD A,H + OR L + JR Z,LPTM02 + CALL SPLON + SVC .BREAK + RST 3 + DEFB .BREAK + ENDM + JP Z,BREAKZ + JR ROMER1 +; +; +LPTINT: ENT + DI + PUSH AF + PUSH HL + PUSH BC + LD (WKLINT),SP + LD SP,WKLINT + OUT (LSE3),A + CALL ROMST1 + OUT (LSE1),A + LD SP,(WKLINT) + POP BC + POP HL + POP AF + EI + RETI + DEFS 8 +WKLINT: DEFW 0 + +; + END + SKP H + + INCLD MONOP +; --------------------------- +; MZ-800 Monitor command +; FI:MONOP ver 1.0A 8.04.84 +; --------------------------- +; +MONOP: ENT + PUSH HL + LD DE,(ERRORP) + PUSH DE + LD DE,MONERR + LD (ERRORP),DE ;error ret adr set + LD A,(LINLIM) + PUSH AF + LD A,100 ;getline max set + LD (LINLIM),A + LD (MONSP+1),SP ;stack pointer push + XOR A + LD (FILOUT),A ;crt mode +MONCLD: LD SP,0000H ;stack initize +MONHOT: LD BC,MONHOT + PUSH BC ;last return addrs set + SVC .CR2 ;linefeed & cr + RST 3 + DEFB .CR2 + ENDM + LD A,"*" ;prompt disp + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + CALL MONEDT ;memory corretion ? + JR NC,-3 + LD A,(DE) + CP "*" + RET NZ ;prompt check + INC DE + LD A,(DE) ;acc=next interpret data + INC DE ;next interpret data addr +; +; +; moniter tabel command jump +; + EXX ;parameter push + LD HL,MNCMTB + LD B,10 ;commands counter +MNCMCP: CP M + INC HL + JR Z,MNCMOK ;skip if just command + INC HL ;next search + INC HL + DJNZ MNCMCP + EXX + RET +; +MONERR: LD C,A + AND 7FH + JR Z,MONCLD ;Break + LD A,C ;acc=errcode + SVC .ERRX ;display error messege + + RST 3 + DEFB .ERRX + ENDM + SVC .ERCVR ;error recover fd/qd + RST 3 + DEFB .ERCVR + ENDM + JR MONCLD +; +; +MNCMOK: LD E,M + INC HL + LD D,M + PUSH DE ;commnd addr set + EXX ;parameter pop + RET +; +MNCMTB: DEFM 'D' + DEFW MONDMP + DEFM 'M' + DEFW MONSET + DEFM 'P' + DEFW MONPRT + DEFM 'G' + DEFW MONGOT + DEFM 'F' + DEFW MONSCH + DEFM 'R' + DEFW MONSP + DEFM 'S' + DEFW MONSAV + DEFM 'L' + DEFW MONLOD + DEFM 'V' + DEFW MONVRY + DEFM 'T' + DEFW MONTRN +; +MONPRT: LD A,(FILOUT) ;lpt/crt + XOR 1 + LD (FILOUT),A + RET +;--------------------------------- +; +; moniter save commnd +; +;--------------------------------- +MONSAV: CALL SAVTRN ;set addrs + RET C + EXX + CALL FNMST ;file name set + EXX + LD (ELMD20),BC ;bytes + LD (ELMD22),DE ;data adrs + LD (ELMD24),HL ;exec adrs + SVC .SAVEF ;save file + RST 3 + DEFB .SAVEF + ENDM + RET + +;--------------------------------- +; +; moniter load command +; +;--------------------------------- +MONLOD: CALL HLSET ;load addr set + PUSH HL ;hl=load addrs + PUSH AF + CALL LOAVRY ;filename set & open + POP AF + POP HL + JR NC,+5 ;user load addr set ?? + LD HL,(ELMD22) + SVC .LOADF ;load file + RST 3 + DEFB .LOADF + ENDM + RET +;--------------------------------- +; +; filename set & open +; +;--------------------------------- +LOAVRY: CALL FNMST ;file name set + SVC .LOPEN ;ropen + RST 3 + DEFB .LOPEN + ENDM + CP 1 + RET Z + JP ER61 ;File mode error +;--------------------------------- +; +; moniter verify command +; +;--------------------------------- +MONVRY: CALL LOAVRY ;filename set + LD HL,(ELMD22) + SVC .VRFYF ;file verify + RST 3 + DEFB .VRFYF + ENDM + RET +;--------------------------------- +; +; moniter rerturn command +; +; to BASIC +;--------------------------------- +MONSP: LD SP,0000H + POP AF + LD (LINLIM),A + POP HL + LD (ERRORP),HL + POP HL + RET +;--------------------------------- +; +; moniter operation +; + +;--------------------------------- +MONEDT: LD DE,FF00H ;moniter work + SVC .GETL + RST 3 + DEFB .GETL + ENDM + JR C,MONEDE +; +; check ':xxxx=' +; + LD A,(DE) + CP ":" ;mem correct ?? + SCF + RET NZ +; + INC DE + CALL HLSET ;addrs input ? + RET C + LD A,(DE) + INC DE + XOR 3DH ;"=" input ? + RET NZ +; +; +NEXTAC: CALL ACSET ;data read + CCF + RET NC + LD M,A ;mem correction ! + INC HL ;next pointer + JR NEXTAC +; +; +MONEDE: LD (DE),A ;error + RET +;---------------------------------- +; +; 4 ascii to binary (word) +; +; ent. de=ascii data pointer +; ext hl=xxxxH +; +;---------------------------------- +HLSET: PUSH HL + CALL SPCTAC ;separater search + PUSH DE + CALL ACSETH ;2 ascii to binary + JR C,HLSETE + LD H,A + CALL ACSETH ;2 ascii to binary + JR C,HLSETE + LD L,A + POP AF + POP AF + XOR A + RET +; +HLSETE: POP DE + POP HL + SCF + RET + +;---------------------------------- +; +; separater search +; +;---------------------------------- +SPCTA2: INC DE +SPCTAC: LD A,(DE) + CP 20H + JR Z,SPCTA2 + RET +;--------------------------------- +; +; 1 ascii to binary (nible) +; +; ent. de=ascii data pointer +; ext acc= 0xH +; +;--------------------------------- +ACSETS: LD A,(DE) + SVC .CKHEX ;0-9 a-f check + RST 3 + DEFB .CKHEX + ENDM + INC DE ;next pointer + RET +;--------------------------------- +; +; 2 ascii to binary (byte) +; +; ent. de=ascii data pointer +; ext acc= xxH +; +;--------------------------------- +ACSET: CALL SPCTAC ;separeter search + CP ";" + JR Z,SEMIOK ;skip if ascii input +ACSETH: + PUSH BC + PUSH DE + CALL ACSETS ;1 ascii to binary(nible) + JR C,ACSTER + LD C,A ;high nible + CALL ACSETS ;1 ascii to binary(nible) + JR C,ACSTER + LD B,A ;low nible + LD A,C + RLCA + RLCA + RLCA + RLCA + ADD A,B + LD C,A + LD A,C + POP BC + POP BC + OR A + RET +; +ACSTER: POP DE + POP BC + + SCF + RET +;---------------------------------- +; +; ascii code input mode +; +;---------------------------------- +SEMIOK: INC DE + LD A,(DE) + INC DE + OR A ;¯¯JR ACSETO + RET ;¯¯ +;---------------------------------- +; +; moniter jump commnd +; +;---------------------------------- +MONGOT: CALL HLSET ;addrs set + RET C + JP (HL) +;---------------------------------- +; +; moniter dump commnd +; +;---------------------------------- +MONDMP: CALL HLSET ;top addrs set + JR C,MONDP1 ;skip if 'd' only + PUSH HL + CALL HLSET ;end addrs set + JR C,MONDP2 ;skip if top addrs only + POP DE + EX DE,HL + JR MONDP3 +; +; +; +MONDP2: POP HL ; +MONDP1: EX DE,HL + LD HL,80H + ADD HL,DE ;last addrs calc + EX DE,HL +MONDP3: LD C,8 ;counter set + CALL MONDPS ;dump list disp + RET C + PUSH HL + SBC HL,DE ;dump end calc + POP HL + RET NC + JR MONDP3 +; +MONDPS: CALL HLHXPR ;addrs disp + LD B,C + PUSH HL +MONDP4: LD A,M ;data read + CALL ACHXPR ;1 byte disp + INC HL + LD A,20H ;space disp + SVC .&1C + RST 3 + DEFB .&1C + + ENDM + DJNZ MONDP4 + POP HL +; + LD A,"/" ;separater disp + SVC .&1C + RST 3 + DEFB .&1C + ENDM + LD B,C +MONDP5: LD A,M ;data read + CP 20H ;contol code + JR NC,+4 + LD A,"." ;yes, control code + SVC .&1C + RST 3 + DEFB .&1C + ENDM + INC HL ;next pointer + DJNZ MONDP5 +; + SVC .&CR ; + RST 3 + DEFB .&CR + ENDM + SVC .HALT ;braek & stop + RST 3 + DEFB .HALT + ENDM + OR A + RET +;-------------------------------- +; +; disp addrs +; +; ent. hl=addrs +; ':xxxx=' +; +;-------------------------------- +HLHXPR: LD A,":" + SVC .&1C + RST 3 + DEFB .&1C + ENDM + LD A,H + CALL ACHXPR ;acc disp + LD A,L + CALL ACHXPR ;acc disp + LD A,"=" + SVC .&1C + RST 3 + DEFB .&1C + ENDM + RET +;-------------------------------- +; +; acc disp +; +; ent. acc = disp data +; + +;-------------------------------- +ACHXPR: PUSH AF + RLCA + RLCA + RLCA + RLCA + CALL AC1HXP ;nible disp + POP AF +AC1HXP: AND 0FH ;ascii trans + ADD A,30H + CP ":" + JR C,+4 + ADD A,7 + SVC .&1C ;disp acc(nible) + RST 3 + DEFB .&1C + ENDM + RET +;--------------------------------- +; +; moniter mem correction comd +; +;--------------------------------- +MONSET: CALL HLSET ; + LD A,(FILOUT) ;lpt/crt switch + PUSH AF + XOR A + LD (FILOUT),A ;crt mode +MONSTL: SVC .CR2 + RST 3 + DEFB .CR2 + ENDM + CALL HLHXPR ;addrs disp + LD A,M ;data read + CALL ACHXPR ;data disp + LD A,20 ;back space + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + CALL MONEDT ;moniter operation + JR NC,MONSTL + POP AF + LD (FILOUT),A + RET +;-------------------------------- +; +; moniter search command +; +;-------------------------------- +MONSCH: CALL HLSET ;start addrs + RET C + PUSH HL + CALL HLSET ;end addrs + POP BC + RET C + + PUSH HL ;hl end addr + PUSH BC ;bc start addr + LD HL,FF00H ;check data read + CALL NEXTAC ;(hl)<--data + LD DE,FF00H + OR A + SBC HL,DE ;check data bytes + LD C,L + POP HL + PUSH HL + EXX + POP HL ;hl start addr + POP DE ;de end addr + EXX + RET Z +MNSHLP: CALL HLDECK ;de=FF00h + JR NZ,SKPSCH ;de check databuf + CALL MONDPS ;data disp + RET C +SKPSCH: SVC .BREAK + RST 3 + DEFB .BREAK + ENDM + RET Z + EXX + INC HL ;next check pointer + PUSH HL + SCF + SBC HL,DE ;end check ? + POP HL + RET NC + PUSH HL + EXX + POP HL ;next check pointer + JR MNSHLP +;---------------------------------- +; +; 3 pointer data interpret +; +; ent de=ascii data top addr +; +; ext de=first data +; bc=(second-first) data +; hl=last data +; +; used save,xfer commnd +; +; command : save : xfer +; +; de : start: source +; bc : bytes: bytes +; hl : end : destination +;---------------------------------- +SAVTRN: CALL HLSET ;first + PUSH HL + CALL NC,HLSET ;second + POP BC ;first + RET C + SBC HL,BC ;calc bytes + INC HL + + PUSH HL ;bytes + PUSH BC ;first + CALL HLSET ;last + PUSH HL ;last + EXX + POP HL ;last + POP DE ;first + POP BC ;bytes + RET +;------------------------------- +; +; moniter xfer command +; +;------------------------------- +MONTRN: CALL SAVTRN ; + RET C + EX DE,HL + PUSH HL + SBC HL,DE ;direction check + POP HL + JR C,LDDRTR + LDIR + RET +LDDRTR: ADD HL,BC ;last addrs calc + DEC HL + EX DE,HL + ADD HL,BC + DEC HL + EX DE,HL + LDDR + RET +;---------------------------------- +; +; filename set +; +;---------------------------------- +FNMST: LD A,(DE) + OR A + JR Z,FNMST2 + INC DE + CP ":" ;demiliter seach + JR NZ,FNMST +FNMST2: SVC .COUNT ;count string length + RST 3 + DEFB .COUNT + ENDM + SVC .DEVFN ;interpret dev. file name + RST 3 + DEFB .DEVFN + ENDM + LD A,1 + LD (ELMD),A ;.OBJ atribut + RET +;--------------------------------- +; +; check (de) (hl) ? +; +; hl,de check data point +; c counter +; + +;--------------------------------- +HLDECK: LD A,(DE) + CP M + RET NZ + PUSH BC + PUSH DE + PUSH HL + LD B,C +HLDEC1: LD A,(DE) + CP M + JR NZ,HLDEC2 + INC DE + INC HL + DJNZ HLDEC1 + XOR A +HLDEC2: POP HL + POP DE + POP BC + RET +; + END + END diff --git a/software/asm/mz-xz009/MON4.ASM b/software/asm/mz-xz009/MON4.ASM new file mode 100644 index 0000000..99b588d --- /dev/null +++ b/software/asm/mz-xz009/MON4.ASM @@ -0,0 +1,83 @@ + ORG 3C00H + INCLD MACRO + LIST + INCLD XROM +;---------------------------------- +; +; ascii display code trans +; +;---------------------------------- +?ADCN: ENT + CP 10H ;EX only + JR C,?AD3 ; <10H ==> F0H + CP 80H + JR Z,?AD7 ; 80H ==> 40H + CP C0H + JR Z,?AD7 ; C0H ==> 80H + DI + OUT (LSE2),A + CALL 0BB9H + OUT (LSE0),A + EI + RET +?AD3: LD A,F0H + RET +?AD7: SUB 40H + RET +; +?DACN: ENT + CP F0H + JR NC,?DA3 + CP 73H + JR Z,?AD3 ; 73H ==> F0H + CP 40H ;EX only + JR Z,?DA7 ; 40H ==> 80H + CP 80H + JR Z,?DA7 ; 80H ==> C0H + DI + OUT (LSE2),A + CALL 0BCEH + OUT (LSE0),A + EI + CP F0H + RET NZ +?DA3: LD A," " + RET +?DA7: ADD A,40H + RET +; +; +; +?KYTBL: ENT + PUSH AF + LD A,L + SUB 8 + JR C,?KY0 + SUB 48 + JR C,?KY1 +?KY0: ADD A,10 + LD L,A + ADD HL,BC + + LD C,M + POP AF + RET +?KY1: LD A,(BC) + PUSH AF + INC BC + LD A,(BC) + LD B,A + POP AF + LD C,A ;BC=ROM adrs + ADD HL,BC + DI + OUT (LSE2),A + LD A,M + OUT (LSE0),A + EI + CALL ?DACN + LD C,A + POP AF + RET + END + END diff --git a/software/asm/mz-xz009/MONEQU.ASM b/software/asm/mz-xz009/MONEQU.ASM new file mode 100644 index 0000000..c32e0e2 --- /dev/null +++ b/software/asm/mz-xz009/MONEQU.ASM @@ -0,0 +1,356 @@ + LIST + + INCLD XE1 +IOOUT: EQU 0104H +DEASC: EQU 029EH +PATCH: EQU 0531H +INKEY0: EQU 0BA1H +IOERR: EQU 00EBH +TEST1: EQU 0164H +ERRX: EQU 0340H +COLS: EQU 049CH +HCLSW: EQU 061DH +PONT: EQU 0963H +INKEY1: EQU 0B21H +$KB: EQU 0DF6H +.HL: EQU 00A7H +PUSHR: EQU 00C7H +SETDFL: EQU 0314H +BINPUT: EQU 0A67H +PUSHRA: EQU 00BAH +CKHEX: EQU 02E9H +DCOLOR: EQU 048AH +PONTB: EQU 097AH +ERRORJ: EQU 00EDH +?CLRHL: EQU 0137H +?SETDE: EQU 013EH +INDRCT: EQU 0151H +INCHLF: EQU 015DH +IOCALL: EQU 0247H +DWIDTH: EQU 04EFH +ACCDI: EQU 05ADH +LBOUND: EQU 05F9H +PONTC: EQU 0960H +INKEY$: EQU 0B1AH +BRKCHK: EQU 001EH +DEVASC: EQU 010DH +DWIND: EQU 04AEH +PONTCB: EQU 0977H +INKEYF: EQU 0B8BH +SYSSTA: EQU 004DH +PUSHW: EQU 0671H +HCUROF: EQU 093BH +TESTX: EQU 016EH +PALOFF: EQU 0441H +DPALST: EQU 0476H +PRNTT: EQU 0A58H +EQTBL: EQU 0DDDH +$TEMPO: EQU 0041H +.RET: EQU 00B2H +?CLRDE: EQU 013DH +HLFTCH: EQU 015EH +HALT: EQU 02F8H +ADDP0: EQU 031CH +DGCOL: EQU 0493H +TBCALC: EQU 0615H +ERRORP: EQU 004FH +LDDEMD: EQU 0132H +ADDP1: EQU 0323H +HCLS: EQU 0652H +.NOP: EQU 00A6H + +ASCHL: EQU 025EH +ADDP2: EQU 032AH +SETDNM: EQU 0397H +PLTOTX: EQU 0EB3H +DSMODE: EQU 03BEH +CURMOV: EQU 094DH +GETL: EQU 0A84H +BREAKX: EQU 00E6H +CHKACC: EQU 011BH +LDDEHL: EQU 0143H +LDHLDE: EQU 014AH +BITMAP: EQU 05CEH +BRKEY: EQU 0D22H +$CRT: EQU 0DDDH +CRT1C: EQU 0E61H +ADDHLA: EQU 0158H +DEHEX: EQU 02CEH +DPALBK: EQU 044FH +FLASH: EQU 0945H +$USR: EQU 0F7FH +BREAKZ: EQU 00E8H +LDDEMI: EQU 012DH +?SETHL: EQU 0138H +HCURON: EQU 092BH +LSPAL: EQU 00F0H +LSFC: EQU 00FCH +LSE0: EQU 00E0H +LSE1: EQU 00E1H +LSE2: EQU 00E2H +LSE3: EQU 00E3H +LSE4: EQU 00E4H +LSE5: EQU 00E5H +LSE6: EQU 00E6H +LSD0: EQU 00D0H +LSD1: EQU 00D1H +LSD2: EQU 00D2H +LSD3: EQU 00D3H +LSWF: EQU 00CCH +LSRF: EQU 00CDH +LSDMD: EQU 00CEH +LSSCR: EQU 00CFH +TEXTBF: EQU 2000H +BITBUF: EQU 8000H +FONTBF: EQU 1000H +ERRTXT: EQU FDA0H +.IOSVC: EQU 0003H +.MONOP: EQU 0000H +.CR1: EQU 0001H +.CR2: EQU 0002H +.CRT1C: EQU 0003H +.CRT1X: EQU 0004H +.CRTMS: EQU 0005H +.LPTOT: EQU 0006H +.LPT1C: EQU 0007H +.&CR: EQU 0008H +.&1C: EQU 0009H +.&1CX: EQU 000AH +.&MSG: EQU 000BH +.GETL: EQU 000CH +.INKEY: EQU 000DH + +.BREAK: EQU 000EH +.HALT: EQU 000FH +.DI: EQU 0010H +.EI: EQU 0011H +.CURMV: EQU 0012H +.DEASC: EQU 0013H +.DEHEX: EQU 0014H +.CKHEX: EQU 0015H +.ASCHL: EQU 0016H +.COUNT: EQU 0017H +.ADDP0: EQU 0018H +.ADDP1: EQU 0019H +.ADDP2: EQU 001AH +.ERRX: EQU 001BH +.?DACN: EQU 001CH +.?ADCN: EQU 001DH +.STICK: EQU 001EH +.STRIG: EQU 001FH +.BELL: EQU 0020H +.PLAY: EQU 0021H +.SOUND: EQU 0022H +.MCTRL: EQU 0023H +.IOOUT: EQU 0024H +.TIMRD: EQU 0025H +.TIMST: EQU 0026H +.INP1C: EQU 0027H +.CLRIO: EQU 0028H +.SEGAD: EQU 0029H +.OPSEG: EQU 002AH +.DLSEG: EQU 002BH +.DEVNM: EQU 002CH +.DEVFN: EQU 002DH +.LUCHK: EQU 002EH +.LOPEN: EQU 002FH +.LOADF: EQU 0030H +.SAVEF: EQU 0031H +.VRFYF: EQU 0032H +.RWOPN: EQU 0033H +.INSTT: EQU 0034H +.INMSG: EQU 0035H +.INDAT: EQU 0036H +.PRSTR: EQU 0037H +.CLKL: EQU 0038H +.DIR: EQU 0039H +.SETDF: EQU 003AH +.LSALL: EQU 003BH +.FINIT: EQU 003CH +.DELET: EQU 003DH +.RENAM: EQU 003EH +.LOCK: EQU 003FH +.RECST: EQU 0040H +.INREC: EQU 0041H +.PRREC: EQU 0042H +.ERCVR: EQU 0043H +.SWAP: EQU 0044H +.CLS: EQU 0045H +.POSCK: EQU 0046H +.POSSV: EQU 0047H +.PSET: EQU 0048H +.LINE: EQU 0049H + +.PATTR: EQU 004AH +.BOX: EQU 004BH +.PAINT: EQU 004CH +.CIRCL: EQU 004DH +.POINT: EQU 004EH +.HCPY: EQU 004FH +.DSMOD: EQU 0050H +.DPLBK: EQU 0051H +.DPLST: EQU 0052H +.DWIND: EQU 0053H +.DCOL: EQU 0054H +.DGCOL: EQU 0055H +.ICRT: EQU 0056H +.SYMBL: EQU 0057H + END + INCLD XE2 +ZWRK2: EQU 1049H +ZWO: EQU 1057H +ZWDIR: EQU 1063H +VARST: EQU 1074H +STRST: EQU 1076H +INPFLG: EQU 108FH +LPOSB: EQU 1095H +INBUFL: EQU 1353H +YW: EQU 1371H +ZKL: EQU 105BH +ZINP: EQU 105DH +ELMD: EQU 1000H +ZOUT: EQU 105FH +.$LPT: EQU 106EH +VARED: EQU 1078H +CURX: EQU 1082H +POINTX: EQU 1088H +KEYDAT: EQU 1365H +SELCOL: EQU 137BH +PALAD: EQU 137FH +ELMD1: EQU 1001H +ZBLK: EQU 105BH +ZDELT: EQU 1061H +DDEV: EQU 106AH +POOLED: EQU 1074H +CURY: EQU 1083H +POINTY: EQU 108AH +CURFLG: EQU 108CH +CURMAK: EQU 108DH +FILOUT: EQU 1091H +PNMODE: EQU 1097H +CPLANE: EQU 109CH +KEY262: EQU 12AAH +CWIDTH: EQU 136BH +PAL2T: EQU 1385H +CURDT1: EQU 1391H +PBCN: EQU 13CEH +ELMD20: EQU 1014H +ZEQT: EQU 1044H +ZEOF: EQU 1047H +ZNXT: EQU 104AH +ZDEVNM: EQU 104CH +PSEL: EQU 1092H +INBUF: EQU 1354H + +CURDT2: EQU 1399H +ELMD30: EQU 101EH +ZCH: EQU 1046H +ZFLAG1: EQU 1050H +INTFAC: EQU 107CH +MEMMAX: EQU 1080H +DMD: EQU 1098H +KEY264: EQU 12ACH +LINLIM: EQU 1364H +PAL4T: EQU 1389H +CURDT3: EQU 13A1H +ELMD22: EQU 1016H +ZFLAG2: EQU 1051H +BITADR: EQU 1086H +TMCNT: EQU 1195H +KEYBUF: EQU 11A4H +FUNBUF: EQU 12B2H +ELMD32: EQU 1020H +ZSTRT: EQU 1059H +PCRLF: EQU 1093H +KEY266: EQU 12AEH +INBUFC: EQU 1352H +SSA: EQU 1375H +HERRF: EQU 13D9H +ELMD24: EQU 1018H +TMPEND: EQU 107AH +DISPX: EQU 1090H +CMODE: EQU 109BH +SOF: EQU 1372H +PAL16T: EQU 138DH +EMPTR: EQU 13C4H +ZCL: EQU 1059H +POSADR: EQU 1084H +KEYBM1: EQU 11A3H +SEA: EQU 1376H +EMWP0: EQU 13C6H +ELMD26: EQU 101AH +ZMAPB: EQU 1057H +POOL: EQU 1072H +SW: EQU 1374H +PAIWED: EQU 137CH +PALBK: EQU 137EH +SCRNT0: EQU 13A9H +EMWP1: EQU 13C8H +ELMD18: EQU 1012H +ZRWX: EQU 1043H +ZRO: EQU 1055H +ZMAPS: EQU 1055H +.$CRT: EQU 106CH +CURXY: EQU 1082H +CMTMSG: EQU 108EH +IBUFE: EQU 10F0H +CSMDT: EQU 1199H +AMPM: EQU 1366H +XS: EQU 1369H +CRTMD1: EQU 1379H +EMFLG: EQU 13C3H +CTABLE: EQU 13DAH +ZLOG: EQU 1042H +ZDIRS: EQU 1059H + +ZPOS: EQU 1061H +ZFREE: EQU 1065H +TEXTST: EQU 1070H +MEMLMT: EQU 107EH +PWMODE: EQU 109AH +PMASK: EQU 109EH +GMODE: EQU 109FH +YS: EQU 136FH +CRTMD2: EQU 137AH +ZTOP: EQU 1040H +PSMAL: EQU 1096H +SUMDT: EQU 1197H +TEMPW: EQU 119EH +XE: EQU 136AH +SSW: EQU 1377H +ZDIRMX: EQU 1052H +ZINIT: EQU 1053H +DCHAN: EQU 1069H +TEXTED: EQU 1072H +MEMOP: EQU 1099H +CSIZE: EQU 136DH +YE: EQU 1370H +ZWRK1: EQU 1048H +LPT.TM: EQU 1094H +MAXCF: EQU 109DH +SECD: EQU 1367H +PALTBL: EQU 1381H +LSPAL: EQU 00F0H +LSFC: EQU 00FCH +LSE0: EQU 00E0H +LSE1: EQU 00E1H +LSE2: EQU 00E2H +LSE3: EQU 00E3H +LSE4: EQU 00E4H +LSE5: EQU 00E5H +LSE6: EQU 00E6H +LSD0: EQU 00D0H +LSD1: EQU 00D1H +LSD2: EQU 00D2H +LSD3: EQU 00D3H +LSWF: EQU 00CCH +LSRF: EQU 00CDH +LSDMD: EQU 00CEH +LSSCR: EQU 00CFH +TEXTBF: EQU 2000H +BITBUF: EQU 8000H +FONTBF: EQU 1000H +ERRTXT: EQU FDA0H +ZBYTES: EQU 001DH + END + END diff --git a/software/asm/mz-xz009/MUSIC.ASM b/software/asm/mz-xz009/MUSIC.ASM new file mode 100644 index 0000000..db75dca --- /dev/null +++ b/software/asm/mz-xz009/MUSIC.ASM @@ -0,0 +1,463 @@ +; --------------------------- +; MZ-800 BASIC Music command +; FI:MUSIC ver 1.0A 7.18.84 +; Programed by T.Miho +; --------------------------- +; + INCLD MACRO +; +DIRARE: EQU 27D0H +NMAX: EQU 83 ;/ÙÄs max +; +; +; SOUND m,l / SOUND=(r,d) +; +SOUND: ENT + TEST1 0F4H ;= + CALL TEST1 + DEFB 0F4H + ENDM + JR NZ,SOUND1 + CALL HCH28H ;( + CALL IBYTE + CP 16 + SET 7,A + JR SOUND2 +; +SOUND1: CALL IBYTE + CP NMAX+1 +SOUND2: JP NC,ER03 + PUSH AF + CALL HCH2CH ;, + CALL IDEEXP + POP AF + PUSH AF + OR A + CALL M,HCH29H ;) + POP AF + PUSH HL + SVC .SOUND + RST 3 + DEFB .SOUND + ENDM + POP HL + RET +; +; TEMPO n (n= 1 to 7 ) +; +TEMPO: ENT + CALL IBYTE + DEC A + CP 7 + INC A + JP $TEMPO + SKP H + +; +;;;;;;;;;;;;;;;;;;;;; +; +; NOISE A1$;A2$,B1$;... +; MUSIC A1$;A2$;...;A6$,B1$;... +; +NOISE: ENT + LD A,08H ;pattern (3) + DEFB 1 +; +MUSIC: ENT + LD A,07H ;pattern (0,1,2) + LD (MUNOF),A ;channel pattern + CALL HLFTCH + LD B,3 + CP BEH ;WAIT + JR Z,MCTRL + DEC B + CP 99H ;STOP + JR Z,MCTRL + CP DCH ;INIT + JR NZ,MUSIC1 +; + LD DE,MUSCHO + LD B,4 + LD A,2 + CALL ?SETDE +MCTRL: PUSH HL + SVC .MCTRL + RST 3 + DEFB .MCTRL + ENDM + POP HL + INC HL + RET +; +MUSIC1: CALL ENDCHK + RET Z + XOR A + LD (MUDNO),A + LD (MUCHNO),A + LD B,A + LD A,0DH + LD DE,DIRARE + LD (MMBU1A),DE + LD (DE),A + CALL ?SETDE + LD A,(MUNOF) + LD (MUNOF2),A +MUSI1: LD DE,MUNOF2 + LD A,(DE) + RRC A + LD (DE),A + PUSH AF + LD B,0 + JR NC,MUSI3 + CALL HLFTCH + CP ";" + JR Z,MUSI3 + CALL STREXP + +MUSI3: PUSH HL + LD A,(MUCHNO) + CP 4 + JP Z,ER01 ;Ch no over + INC A + LD (MUCHNO),A + INC B + JP Z,ER05 + LD A,(MUDNO) + ADD A,B + JP C,ER05 ;data no. over + LD (MUDNO),A + LD HL,(MMBU1A) + CALL LDHLDE + LD (MMBU1A),HL + DEC HL + LD M,0DH + POP HL + POP AF + JR NC,MUSI1 + CALL ENDCHK + JR Z,MUSI4 + TEST1 ',' + CALL TEST1 + DEFB ',' + ENDM + JR Z,MUSI4 + TEST1 ';' + CALL TEST1 + DEFB ';' + ENDM + JR MUSI1 +MUSI4: PUSH HL + LD HL,DIRARE + LD IX,HL + LD IY,MUSCHO + LD B,4 +MUSI5: PUSH BC + PUSH HL + LD HL,IX + LD DE,DIRARE + XOR A + SBC HL,DE + LD (IY+4),L + POP HL + LD (MUSI6+1),SP + CALL MML.EN +MUSI6: LD SP,0 ;xxx + POP BC + INC HL + INC IY + DJNZ MUSI5 + LD B,3 + SVC .MCTRL ;MWAIT + RST 3 + DEFB .MCTRL + ENDM +MUSI8: LD BC,100H + LD HL,DIRARE + LD DE,DIRARE+700H + + LDIR + LD B,4 + LD HL,MMCHDA +MUSDS: LD E,M + LD D,0 + INC HL + PUSH HL + LD HL,DIRARE+700H + ADD HL,DE + LD A,M + CP 0FFH + JR Z,MUSDS1 + LD A,4 + SUB B + PUSH BC + EX DE,HL + SVC .PLAY + RST 3 + DEFB .PLAY + ENDM + POP BC +MUSDS1: POP HL + DJNZ MUSDS + LD B,1 + SVC .MCTRL ;PSGON + RST 3 + DEFB .MCTRL + ENDM +; + POP HL + JP MUSIC1 +; +MUSCHO: DEFW 0202H ;Oct data eny ch. + DEFW 0202H +MMCHDA: DEFS 4 ;Play & Noise Data addr +; +MUDNO: DEFS 1 ;total data No. +MUCHNO: DEFS 1 ;ch no. +MMBU1A: DEFS 2 ;MML data buffer +MUNOF: DEFS 1 ;07:MUSIC 08:NOISE +MUNOF2: DEFS 1 ;rotate(MUNOF) +; + SKP H + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +; MML(HL) => IOCSM(IX) trans +; END code=00H or 0DH or C8H +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; +MML.EN: CALL MML.WC +MML.E0: CALL HLFTCH + CALL MMAGCH + JR C,MMTCAL + LD C,0 + CALL MML.AG ;String:A-G + JR MMTCA9 +; +MMTCAL: CALL MMENCH + JP Z,MMLEND + LD B,12 + EX DE,HL + LD HL,MMTCAT ;Call address table +MMTCA0: CP M ;cmp chr + INC HL + JR Z,MMTCAJ + DEC B + JP Z,ER03 + INC HL + INC HL + JR MMTCA0 +MMTCAJ: LD C,M + INC HL + LD B,M + EX DE,HL + INC HL + CALL .BC +MMTCA9: JP C,ER03 + JR MML.E0 +; +.BC: PUSH BC + RET +; +MMTCAT: DEFM '#' + DEFW MML.SH + DEFM '+' + DEFW MML.UO + DEFB D7H + DEFW MML.UO + DEFM '-' + DEFW MML.DO + DEFB CFH + DEFW MML.DO + DEFM 'O' + DEFW MML.O + DEFM 'N' + DEFW MML.N + DEFM 'T' + DEFW MML.T + DEFM 'V' + DEFW MML.V + DEFM 'S' + DEFW MML.S + + DEFM 'M' + DEFW MML.M + DEFM 'L' + DEFW MML.L +; +MML.DO: LD C,-12 ;- + DEFB 11H +; +MML.UO: LD C,12 ;+ + TEST1 "#" + CALL TEST1 + DEFB "#" + ENDM + JR NZ,+3 + INC C + DEFB 11H +; +MML.SH: LD C,1 ;# + CALL HLFTCH + CALL MMAGCH + RET C +MML.AG: LD B,A + INC HL + CALL MML.DL + CCF + CALL C,MML.L1 + RET C + LD A,B + CP 'R' + JR Z,MML.R + PUSH HL + LD HL,ONCTT-41H ;A-G + CALL ADDHLA + LD B,(IY+0) + INC B + LD A,M + POP HL + ADD A,C + SUB 12 + ADD A,12 + DJNZ -2 + JR MML.N0 +; +MML.R: XOR A +MML.R0: PUSH AF + CALL MML.WO + POP AF +MML.W1: LD (IX+0),A + INC IX + RET +; +MML.O: CALL MML.DL ;O + JR NC,+4 + LD A,2 + CP 7 + CCF + RET C + LD (IY+0),A ;oct No. + RET +; + +MML.N: CALL MML.DL ;N + RET C +MML.N0: CP NMAX+1 + CCF + RET C + JR MML.R0 +; +MML.T: CALL MML.DL ;T + JR NC,+4 + LD A,4 + DEC A + CP 7 + CCF + RET C + ADD A,6AH + LD (MML.W),A + RET +; +MML.V: CALL MML.DL ;V + JR NC,+4 + LD A,15 + CP 16 + CCF + RET C + ADD A,80H + LD (MML.W+1),A + RET +; +MML.L: CALL MML.DL ;L + JR NC,+4 + LD A,5 +MML.L1: CP 10 + CCF + RET C +MML.L2: ADD A,60H + LD (MML.W+2),A + RET +; +MML.S: CALL MML.DL ;S + RET C + CP 9 + CCF + RET C + ADD A,90H + LD (MML.W+3),A + RET +; +MML.M: CALL MML.DL ;M + RET C + OR A + SCF + RET Z + LD B,A + LD C,0A0H + LD (MML.W+4),BC + OR A + RET +; +; +MML.DL: CALL HLFTCH + + CALL MMENCH + SCF + CALL NZ,TSTNUM + RET C ;RET not number + SVC .DEASC + RST 3 + DEFB .DEASC + ENDM + JP DCHECK +; +MMAGCH: CP 'R' ;A-G & R check + RET Z + CP 'A' + RET C + CP 'H' + CCF + RET +; +MMENCH: OR A + RET Z + CP 0DH + RET Z + CP 0C8H + RET +; +MMLEND: CALL MML.WO + LD A,FFH ;Music Data end + CALL MML.W1 + JP MUSI6 +; +MML.WO: LD DE,MML.W + LD B,6 + LD A,(DE) + OR A + CALL NZ,MML.W1 + INC DE + DJNZ -6 +; +MML.WC: LD DE,MML.W + LD B,6 + JP ?CLRDE +; +; +ONCTT: DEFB 9 ;A + DEFB 11 ;B + DEFB 0 ;C + DEFB 2 ;D + DEFB 4 ;E + DEFB 5 ;F + DEFB 7 ;G +; +MML.W: DEFB 0 ;T + DEFB 0 ;V + DEFB 0 ;L + DEFB 0 ;S + DEFB 0 ;Mn + DEFB 0 +; + END diff --git a/software/asm/mz-xz009/PLT.ASM b/software/asm/mz-xz009/PLT.ASM new file mode 100644 index 0000000..317946e --- /dev/null +++ b/software/asm/mz-xz009/PLT.ASM @@ -0,0 +1,754 @@ +; ----------------------------- +; MZ-800 BASIC Plotter package +; FI:PLT ver 1.0A 8.25.84 +; Programed by T.Miho +; ----------------------------- +; + INCLD MACRO +; +P.PLT: EQU 0 +PNCHNM: DEFB "N" ;N,S,L +; +NEWON: ENT + LD BC,ER59' + LD DE,NEWONT ;NEW ON +NEWON2: LD A,(DE) ; omit plotter + INC DE + ADD A,A + JR Z,NEWON4 + LD HL,SJPTBL + CALL ADDHLA + LD M,C + INC HL + LD M,B + JR NEWON2 +NEWON4: XOR A ; PLOT OFF + LD (INPFLG),A + LD A,(PNMODE) + DEC A + CALL NZ,MODETX ; PMODE TX + LD HL,NEWAD2 +NEWON9: LD (TEXTST),HL + RET + SKP H + +; +NEWONT: DEFB A2H ;PMODE + DEFB A3H ;PSKIP + DEFB A4H ;PLOT + DEFB A5H ;PLINE + DEFB A6H ;RLINE + DEFB A7H ;PMOVE + DEFB A8H ;RMOVE + DEFB AEH ;PCOLOR + DEFB AFH ;PHOME + DEFB B0H ;HSET + DEFB B1H ;GPRINT + DEFB B3H ;AXIS + DEFB BBH ;PCIRCLE + DEFB BCH ;PTEST + DEFB BDH ;PAGE + DEFB 0 +; +LPTTMD: ENT + LD B,1 ;Check text mode + JR +4 +LPTGMD: ENT + LD B,2 ;Check graph mode + LD A,(PNMODE) + CP B + RET Z + JP LPTMER +; + SKP H + +; +NEWAD2: ENT +; +MODE: ENT + CALL MODE0 ;"PMODE" command + XOR A + LD (LPOSB),A ;LPT TAB + RET +; +MODE0: LD A,(INPFLG) + OR A + JP NZ,LPTMER + CALL PPCHCK + TEST1 "G" + CALL TEST1 + DEFB "G" + ENDM + JP Z,PGRAPH + TESTX "T" + CALL TESTX + DEFB "T" + ENDM + TEST1 "N" + CALL TEST1 + DEFB "N" + ENDM + JR Z,TEXTN + TEST1 "L" + CALL TEST1 + DEFB "L" + ENDM + JR Z,TEXTN + TESTX "S" + CALL TESTX + DEFB "S" + ENDM +TEXTN: LD (PNCHNM),A + CALL ENDZ + CALL OUTA3H +MODETX: LD A,1 + LD (PNMODE),A + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + LD A,(PNCHNM) + CP "N" + RET Z + CP "L" + LD A,0BH + JR Z,XLPTOT +T80CH: LD A,9 + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + +XLPTOT: SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + RET +; +OUTA3H: LD A,0AH + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + LD A,3 + JR XLPTOT +; +PGRAPH: INC HL ;Graphic mode + CALL ENDZ + LD A,2 + LD (PNMODE),A + JR XLPTOT + SKP H + +; +SKIP: ENT + CALL PPCHCK + CALL LPTTMD ;SKIP n + CALL IDEEXP + LD A,E + OR A + RET Z + CP -20 + JR NC,SKIPPS + CP 21 + JP NC,ER03 +SKIPPS: CALL ENDZ + BIT 7,E + JR NZ,SKIPD +SKIPI: LD A,0AH + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + DEC E + JR NZ,SKIPI + RET +; +SKIPD: LD A,03H + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + INC E + JR NZ,SKIPD + RET +; +PNMX99: PUSH HL + LD HL,999 + JR +6 +PNMX48: PUSH HL + LD HL,480 + PUSH HL + ADD HL,DE + POP HL + JR C,PNMX2 + SBC HL,DE + JP C,ER03 +PNMX2: POP HL + RET + SKP H + +; +PLINE: ENT ; PLINE %n,x,y + LD C,"D" + DEFB 11H +RLINE: ENT ; RLINE %n,x,y" + LD C,"J" + DEFB 11H +PMOVE: ENT ; PMOVE x,y + LD C,"M" + DEFB 11H +RMOVE: ENT ; RMOVE x,y + LD C,"R" + CALL PPCHCK + CALL LPTGMD + LD A,C + LD (LINEC+1),A + CP "M" + JR NC,LINE5 ;"M","R" + TEST1 "%" + CALL TEST1 + DEFB "%" + ENDM + JR NZ,LINE5 + CALL IBYTE + LD A,E + DEC A + CP 16 + JP NC,ER03 + DEC DE + LD A,"L" + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + CALL NUMPLT + CALL LPTCR + CALL ENDCHK + RET Z + CALL CH2CH +LINE5: CALL IDEEXP + CALL CH2CH + CALL PNMX48 + PUSH DE + CALL IDEEXP + CP "," + JR Z,LINEXY + CALL ENDZ +LINEXY: CALL PNMX99 + POP BC + PUSH DE +LINEC: LD A,0 ;Plotter command + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + LD E,C + LD D,B + CALL NUMPLT ;X + CALL LPTCOM + POP DE + + CALL NUMPLT ;Y + CALL LPTCR + CALL ENDCHK + RET Z + INC HL + JR LINE5 + SKP H + +; +PCOLOR: ENT + CALL PPCHCK + CALL IBYTE ;PCOLOR n + LD A,E + CP 4 + JP NC,ER03 + CALL ENDZ + LD A,(PNMODE) + CP 2 + JR Z,PNMBR2 + CALL OUTA3H + LD A,2 + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + CALL PNMBR2 + JP PRTTX +; +PNMBR2: LD A,"C" + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + LD A,E + OR 30H + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM +LPTCR: LD A,0DH + JR +4 +LPTCOM: LD A,"," +YLPTOT: SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + RET +; +PHOME: ENT + LD C,"H" + DEFB 11H +HSET: ENT + LD C,"I" + CALL LPTGMD ;PHOME / HSET + CALL ENDZ + LD A,C + JR YLPTOT +; + SKP H + +; +GPRINT: ENT + CALL PPCHCK + CALL LPTGMD ;GPRINT [n,s],x$ + TEST1 "[" + CALL TEST1 + DEFB "[" + ENDM + JR NZ,SYMBL2 + CALL IBYTE + CP 64 + JP NC,ER03 + PUSH DE + CALL HCH2CH + CALL IBYTE + CP 4 + JP NC,ER03 + PUSH DE + TESTX "]" + CALL TESTX + DEFB "]" + ENDM + POP BC + POP DE + PUSH BC + LD A,"S" + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + CALL NUMPLT + CALL LPTCOM + POP DE + LD A,"Q" + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + CALL NUMPLT + CALL LPTCR + CALL ENDCHK + RET Z + CALL CH2CH +SYMBL2: CALL STREXP + CALL ENDCHK + JR Z,SYMBL5 + CALL CH2CH + DEC HL +SYMBL5: LD A,B + OR A + JR Z,SYMBL4 + LD A,"P" + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM +SYMBL3: LD A,(DE) + SVC .LPTOT + RST 3 + DEFB .LPTOT + + ENDM + INC DE + DJNZ SYMBL3 + CALL LPTCR +SYMBL4: CALL ENDCHK + RET Z + INC HL + JR SYMBL2 + SKP H + +; +AXIS: ENT + CALL LPTGMD ;AXIS x,p,r + CALL IBYTE + CP 2 + JP NC,ER03 + PUSH AF + CALL HCH2CH + CALL IDEEXP + PUSH DE + CALL CH2CH + CALL IBYTE + OR A + JP Z,ER03 + CALL ENDZ + LD A,"X" + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + POP BC + POP AF + PUSH DE + PUSH BC + OR 30H + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + CALL LPTCOM + POP DE + CALL PNMX99 + CALL NUMPLT + CALL LPTCOM + POP DE + CALL NUMPLT + JP LPTCR + SKP H + +; +PCIRCLE:ENT + CALL LPTGMD ;PCIRCLE x,y,r,s,e,d + PUSH HL + LD DE,0 + LD HL,CRS + CALL FLTHEX + LD DE,360 + LD HL,CRE + CALL FLTHEX + LD HL,FLTEN + LD DE,CRTEN + CALL LDIR5 + POP HL + CALL EXPR ;X + CALL CH2CH + PUSH HL + LD HL,CRX + EX DE,HL + CALL LDIR5 + POP HL + CALL EXPR ;Y + CALL CH2CH + PUSH HL + LD HL,CRY + EX DE,HL + CALL LDIR5 + POP HL + CALL EXPR ;R + PUSH HL + PUSH AF + LD HL,CRR + EX DE,HL + CALL LDIR5 + LD A,(CRR+1) + RLCA + JP C,ER03 + POP AF + CP "," + JR NZ,CIREND + POP HL + INC HL + CALL EXPR ;S + PUSH HL + PUSH AF + LD HL,CRS + EX DE,HL + CALL LDIR5 + POP AF + CP "," + JR NZ,CIREND + POP HL + INC HL + CALL EXPR ;E + PUSH HL + PUSH AF + LD HL,CRE + EX DE,HL + CALL LDIR5 + POP AF + + CP "," + JR NZ,CIREND + POP HL + INC HL + CALL EXPR ;D + PUSH HL + LD HL,CRTEN + EX DE,HL + CALL LDIR5 + LD A,(CRTEN+1) + RLCA + JP C,ER03 +CIREND: + POP HL + CALL ENDZ + PUSH HL +; + LD HL,CRE + LD DE,CRS + LD A,(CRTEN) + OR A + CALL NZ,CMP + JP C,ER03 +; + CALL CRXYRS ;CAL X,Y +; + LD HL,CRXX ;MOVE X,Y + LD (CRMOVX+1),HL + LD HL,CRYY + LD (CRMOVY+1),HL + CALL CRMOVE + LD A,(CRTEN) + OR A + JR Z,CREDLI +; +CRCLP: LD HL,CRS ;S+D + LD DE,CRTEN + CALL ADD + LD DE,CRE + CALL CMP + JR NC,EDLINE + CALL CRXYRS + CALL CRLINE +; + SVC .BREAK + RST 3 + DEFB .BREAK + ENDM + JR NZ,CRCLP +; + POP HL + RET +; +EDLINE: CALL CREDST + CALL CRLINE + POP HL + RET +; +CREDST: LD HL,CRE + LD DE,CRS + + LD BC,5 + LDIR + JR CRXYRS +; +CREDLI: LD HL,CRX + LD (CRMOVX+1),HL + LD HL,CRY + LD (CRMOVY+1),HL + CALL CRLINE + CALL CREDST + LD HL,CRXX + LD (CRMOVX+1),HL + LD HL,CRYY + LD (CRMOVY+1),HL + CALL CRLINE + POP HL + RET +; +CRLINE: LD A,"D" + DEFB 21H +CRMOVE: LD A,"M" + PUSH AF +CRMOVX: LD HL,CRX + CALL HLFLT + PUSH HL + EX DE,HL + CALL PNMX99 +CRMOVY: LD HL,CRY + CALL HLFLT + PUSH HL + EX DE,HL + CALL PNMX99 + POP HL + POP DE + POP AF + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + PUSH HL + CALL NUMPLT + CALL LPTCOM + POP DE + CALL NUMPLT + JP LPTCR +; +CRXYRS: LD DE,(INTFAC) + LD HL,CRS + CALL LDIR5 + LD HL,(INTFAC) + CALL RAD + CALL COS + LD DE,CRR + CALL MUL + LD DE,CRX + CALL ADD + LD DE,CRXX + CALL LDIR5 + LD DE,(INTFAC) + LD HL,CRS + + CALL LDIR5 + LD HL,(INTFAC) + CALL RAD + CALL SIN + LD DE,CRR + CALL MUL + LD DE,CRY + CALL ADD + LD DE,CRYY + JP LDIR5 +; +CRX: DEFS 5 +CRY: DEFS 5 +CRR: DEFS 5 +CRS: DEFS 5 +CRE: DEFS 5 +CRTEN: DEFS 5 +CRXX: DEFS 5 +CRYY: DEFS 5 + DEFS 5 +; +; +; +NUMPLT: PUSH AF + PUSH HL + LD HL,(INTFAC) + CALL FLTHEX + CALL CVNMFL + SVC .COUNT + RST 3 + DEFB .COUNT + ENDM +NUMPL2: LD A,(DE) + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + INC DE + DJNZ NUMPL2 + POP HL + POP AF + RET +; + SKP H + +; +TEST: ENT + CALL PPCHCK + CALL LPTTMD ;TEST command + CALL ENDZ + LD A,04H + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + RET +; +PAGE: ENT + CALL LPTTMD ;PAGE n + CALL IDEEXP + LD A,E + OR A + JP Z,ER03 + CP 73 + JP NC,ER03 + CALL ENDZ + LD A,9 + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + LD A,(PSEL) + BIT P.PLT,A + JR Z,PAGE2 + CALL NUMPLT ;Plotter only + JP LPTCR +PAGE2: LD A,E ;Except plotter + LD DE,KEYBUF + CALL HEXACC + DEC DE + DEC DE + LD A,(DE) + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + INC DE + LD A,(DE) + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + RET +; +PLOT: ENT + LD A,M + CP 9DH ;PLOT ON/OFF + JR Z,PLOTO' + CP A1H ;OFF + JP NZ,ER01 + XOR A + +PLOTOK: LD (INPFLG),A + INC HL + RET +PLOTO': CALL LPTTMD + CALL PPCHCK + LD A,(PNCHNM) + CP "L" + JP Z,LPTMER + CALL PRTTX +PL40C: LD A,(INPFLG) + OR A + JR NZ,PLOTOK + CALL CONSOI + LD A,16H + SVC .CRT1C + RST 3 + DEFB .CRT1C + ENDM + OR 01H + JR PLOTOK +; +PRTTX: LD A,1 + SVC .LPTOT + RST 3 + DEFB .LPTOT + ENDM + LD A,(CRTMD2) + CP 3 + RET C + CALL T80CH + RET +; +PPCHCK: LD A,(PSEL) + BIT P.PLT,A ;if not plotter + JP Z,LPTMER ; then err + RET +; +NEWAD0: ENT +; + END diff --git a/software/asm/mz-xz009/STMNT.ASM b/software/asm/mz-xz009/STMNT.ASM new file mode 100644 index 0000000..48d67f3 --- /dev/null +++ b/software/asm/mz-xz009/STMNT.ASM @@ -0,0 +1,1346 @@ +; --------------------------------- +; MZ-800 BASIC Statement interprit +; FI:STMNT ver 1.0A 9.06.84 +; Programed by T.Miho +; --------------------------------- +; + INCLD MACRO +; +LET: ENT + TEST1 FFH + CALL TEST1 + DEFB FFH + ENDM + JP Z,PFUNCT + CALL INTGTV + PUSH BC + PUSH BC + PUSH AF + TESTX F4H ;= + CALL TESTX + DEFB F4H + ENDM + CALL EXPR + POP BC + LD A,(PRCSON) + CP B + JP NZ,ER04 + EX (SP),HL ; VAR ADRS<>TEXTPOINT + EX DE,HL + CP 05H + JR Z,DAIBCK + PUSH BC + CALL STRDAI + POP AF + POP HL + POP BC + RET +; +DAIBCK: LD C,A + LD B,0 + LDIR + POP HL + POP BC + RET +; +PFUNCT: ENT + TESTX C4H + CALL TESTX + DEFB C4H + ENDM + JP TIMDAI ;TI$=... +; +STRLET: ENT + PUSH DE + EX DE,HL + JR STRDI2 +; +STRDAI: ENT + PUSH DE + CALL CVTSDC + +STRDI2: LD HL,KEYBM1 + LD M,A + LD B,A + LD C,A + INC HL + CALL LDHLDE + POP HL + LD A,M + CP C + JR Z,SMLNST + PUSH HL + OR A + CALL NZ,DELSTR + POP HL + LD A,(KEYBM1) + OR A + JR Z,STRNL1 + PUSH HL + LD BC,(VARST) + SBC HL,BC + EX DE,HL + LD HL,(VARED) + DEC HL + DEC HL + LD M,E + INC HL + LD M,D + INC HL + LD BC,(STRST) + OR A + POP DE + PUSH HL + SBC HL,BC + EX DE,HL + LD M,A + LD B,A + INC HL + LD M,E + INC HL + LD M,D + POP HL + LD DE,KEYBM1 + INC DE + CALL STRENT + CALL LDHL00 + LD (TMPEND),HL + LD (VARED),HL + RET +; +STRNL1: LD M,0 + RET +; +SMLNST: INC HL + LD E,M + INC HL + LD D,M + LD HL,(STRST) + ADD HL,DE + LD DE,KEYBM1 + LD B,C + + INC DE + JP STRENT +; +DELSTR: LD C,M + LD B,0 + INC BC + INC BC + INC HL + LD E,M + INC HL + LD D,M + LD HL,(STRST) + ADD HL,DE + DEC HL + DEC HL + LD E,L + LD D,H + ADD HL,BC + PUSH BC + PUSH DE + EX DE,HL + LD HL,(VARED) + OR A + SBC HL,DE + LD C,L + LD B,H + EX DE,HL + POP DE + PUSH DE + JR Z,+4 + LDIR + POP DE + POP BC + LD HL,(VARED) + OR A + SBC HL,BC + LD (VARED),HL + EX DE,HL +STRDE1: LD E,M + INC HL + LD D,M + LD A,D + OR E + RET Z + LD HL,(VARST) + ADD HL,DE + LD A,M + INC HL + LD E,M + INC HL + LD D,M + OR A + EX DE,HL + SBC HL,BC + EX DE,HL + LD M,D + DEC HL + LD M,E + PUSH BC + LD C,A + + LD B,0 + LD HL,(STRST) + ADD HL,DE + ADD HL,BC + POP BC + JR STRDE1 + SKP H + +; +FOR: ENT ;FOR TO STEP + POP BC + LD (FORRTA),BC + CALL LET + LD IX,0 + ADD IX,SP + LD (FRTXPT),HL + CALL VAROFST + LD (FORVAD+1),BC +FOR3: LD E,(IX+0) + LD D,(IX+1) + LD HL,FF12H + OR A + SBC HL,DE + JR NZ,FOR1 + LD E,(IX+6) + LD D,(IX+7) + EX DE,HL + OR A + SBC HL,BC + JR Z,FOR2 ;EQL FORVAR + LD DE,012H + ADD IX,DE + JR FOR3 +FOR2: LD DE,012H + ADD IX,DE + LD SP,IX +FOR1: LD HL,(FRTXPT) + TESTX E0H ;TO + CALL TESTX + DEFB E0H + ENDM + CALL EXPR + PUSH AF + PUSH HL + EX DE,HL + LD DE,TODTBF + CALL LDIR5 + POP HL + POP AF + CP E1H ;STEP + LD DE,FLONE + JR NZ,SSTEP1 + INC HL + CALL EXPR +SSTEP1: LD (FRTXPT),HL + LD HL,FFF6H ;-10 + ADD HL,SP + LD SP,HL + EX DE,HL + CALL LDIR5 + LD HL,TODTBF + CALL LDIR5 +FORVAD: LD HL,0 + PUSH HL + DEFB 21H +FRTXPT: DEFS 2 + PUSH HL + LD HL,(NXTLPT) + + PUSH HL + LD HL,FF12H ;FOR MARK + PUSH HL + LD HL,-512 + ADD HL,SP + LD DE,(TMPEND) + SBC HL,DE + LD A,11 ;FOR..NEXT ERR + JP C,NESTER + LD HL,(FRTXPT) + DEFB C3H +FORRTA: DEFS 2 +; +; +NEXT: ENT ;NEXT + LD A,5 + LD (PRCSON),A + POP BC + LD (NEXRTA),BC +NEXT6: PUSH AF + POP BC + LD (FRTXPT),HL + LD IX,0 + ADD IX,SP + LD (FORSTK),IX + LD E,(IX+0) + LD D,(IX+1) + LD HL,FF12H + OR A + SBC HL,DE + JP NZ,ER13 + PUSH BC + POP AF + JR NZ,NEXT1 +; + LD E,(IX+4) ;FOR TEXTPO + LD D,(IX+5) + EX DE,HL + LD (NEXT4+1),HL +; + LD E,(IX+6) ;FORVAD + LD D,(IX+7) + LD HL,(VARST) + ADD HL,DE +; + LD BC,8 ;STEP ADR + ADD IX,BC + PUSH IX + POP DE + CALL ADD + INC DE + LD A,(DE) + LD IX,(FORSTK) + LD DE,0DH + ADD IX,DE + PUSH IX + POP DE + BIT 7,A + JR NZ,+3 + EX DE,HL + + CALL CMP + JR C,NEXT3 ;END + DEFB 31H +FORSTK: DEFS 2 + LD HL,2 + ADD HL,SP + LD A,M + INC HL + LD H,M + LD L,A + LD (NXTLPT),HL +NEXT4: LD HL,0 ;TEXTPO +NEXT5: DEFB C3H +NEXRTA: DEFS 2 +NEXT3: LD DE,012H + LD HL,(FORSTK) + ADD HL,DE + LD SP,HL + LD HL,(FRTXPT) + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR NZ,NEXT5 +; + LD (FRTXPT),HL +NEXT1: LD IX,0 + ADD IX,SP + LD (FORSTK),IX + LD HL,(FRTXPT) + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JP Z,NEXT6 + CALL INTGTV + LD (FRTXPT),HL + CALL VAROFST + LD IX,(FORSTK) +NEXT12: LD E,(IX+0) + LD D,(IX+1) + LD HL,FF12H + OR A + SBC HL,DE + JP NZ,ER13 + LD L,(IX+6) + LD H,(IX+7) + OR A + SBC HL,BC + LD HL,(FRTXPT) + JP Z,NEXT6 + LD DE,012H + ADD IX,DE + LD (FORSTK),IX + LD SP,(FORSTK) + JR NEXT12 +; +VAROFST:LD HL,BC + LD BC,(VARST) + OR A + + SBC HL,BC + LD BC,HL + RET +; +TODTBF: DEFS 5 +; +FRLNBF: DEFS 2 +FRNLPT: DEFS 2 +; +FORSKS: CALL IFSKSB + OR A + RET NZ + INC HL + PUSH DE + LD E,M + INC HL + LD D,M + LD A,D + OR E + INC HL + LD (FRNLPT+1),DE + LD E,M + INC HL + LD D,M + LD (FRLNBF+1),DE + POP DE + SCF + RET Z + JR FORSKS + SKP H + +; +USR: ENT ;USR(adrs,source$,dest$) + CALL CH28H + CALL IDEEXP ;adrs + LD (USRADR+1),DE + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR NZ,USR2 + CALL EXPR ;source$ + CALL STROK + LD (USRSRC+1),DE + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR NZ,USR2 + CALL INTGTV ;dest$ + CALL STROK + LD (USRDST+1),BC + XOR A +USR2: PUSH HL + PUSH AF +USRSRC: LD HL,0 ;xxx + CALL CVTSDC + LD IX,ERRORJ + XOR A +USRADR: CALL 0 ;xxx + POP AF + JR NZ,USR8 + LD A,B ;dest$ exist + EX DE,HL +USRDST: LD DE,0 ;xxx + CALL STRLET +USR8: POP HL + JP HCH29H + SKP H + +; +; +PAUSE: ENT ;PAUSE command + CALL IDEEXP +PAUSE2: LD A,D + OR E + RET Z + LD B,FBH ;JAPAN 00H + DJNZ +0 + SVC .BREAK + RST 3 + DEFB .BREAK + ENDM + RET Z + DEC DE + JR PAUSE2 +; +REM: ENT ;REM command +LABEL: ENT ;LABEL command +DATA: ENT ;DATA command +GSUB: ENT ;GOSUB command + DEC HL +DATA0: CALL IFSKSB + OR A + SCF + RET Z + CP ":" + RET Z + JR DATA0 +; +OUT@: ENT ;OUT @port,data + CALL IBYTE + SUB E0H + CP 7 + JP C,ER03 ;E0H .. E6H + CALL HCH2CH + PUSH DE + CALL IBYTE + POP BC + OUT (C),A + RET +; +INP@: ENT ;INP @port,vara + CALL IBYTE + CALL HCH2CH + PUSH DE + CALL INTGTV + CP 5 + JP NZ,ER04 + EX (SP),HL + PUSH BC + EX (SP),HL + POP BC + IN E,(C) + LD D,0 + CALL FLTHEX + POP HL + RET + SKP H + +; +CURSOR: ENT ;CURSOR x,y + CALL CSRXY + EX DE,HL + SVC .CURMV + RST 3 + DEFB .CURMV + ENDM + EX DE,HL + RET +; +CSRXY: ENT + LD B,24 + LD C,39 + LD A,(CRTMD2) ;80 char. mode change + CP 3 + JR C,CSRXY3 + LD C,79 +CSRXY3: CALL CSRXY2 + JP C,ER03 + RET +; +CSRXY2: PUSH BC + CALL IBYTE + PUSH AF + CALL HCH2CH + CALL IBYTE + LD D,E + POP AF + LD E,A + POP BC + LD A,C + CP E + RET C + LD A,B + CP D + RET +; +GETOP: ENT ;GET var + CALL INTGTV + LD (PRCSON),A + CP 5 + JR Z,GETSUJ + PUSH HL ;GET STR + PUSH BC + LD A,FFH + SVC .INKEY + RST 3 + DEFB .INKEY + ENDM + OR A + JR Z,NLGTKY + LD HL,(TMPEND) + LD M,A + LD A,1 +NLGTKY: POP DE + CALL STRLET + POP HL + RET +; + +GETSUJ: PUSH HL + PUSH BC + LD A,FFH + SVC .INKEY + RST 3 + DEFB .INKEY + ENDM + SUB 30H + CP 0AH + JR C,+3 + XOR A + LD E,A + LD D,0 + POP HL + CALL FLTHEX + POP HL + RET + SKP H + +; +POKE: ENT ;POKE ad,d1,d2,d3,... + CALL IDEEXP + CALL CH2CH +POKELP: PUSH DE + CALL IBYTE + POP DE + LD (DE),A + INC DE + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + RET NZ + JR POKELP +; +LIMIT: ENT ;LIMIT adrs + PUSH HL + TEST1 "M" + CALL TEST1 + DEFB "M" + ENDM + JR NZ,LIMIT1 + TEST1 "A" + CALL TEST1 + DEFB "A" + ENDM + JR NZ,LIMIT1 + TEST1 "X" + CALL TEST1 + DEFB "X" + ENDM + JR NZ,LIMIT1 + EX (SP),HL + LD HL,(MEMMAX) + JR LIMIT2 +LIMIT1: POP HL + CALL IDEEXP + PUSH HL + LD HL,(MEMMAX) + OR A + SBC HL,DE + JP C,ER06' + LD HL,(TMPEND) + INC H + INC H + INC H + INC H + OR A + SBC HL,DE + JP NC,ER03 + EX DE,HL +LIMIT2: CALL MEMSET + POP HL + POP DE + LD SP,(INTFAC) + LD BC,FFFFH + PUSH BC + PUSH DE + RET + + SKP H + +; +RETURN: ENT ;RETURN linenumber + POP IX +RETRN2: POP BC + PUSH BC + LD A,B + INC A + JP NZ,ER14 + LD A,C + CP 12H + JR Z,RETRN6 + CP FEH + JP NZ,ER14 + POP BC + CALL ENDCHK + EX DE,HL + POP HL + LD (LNOBUF),HL + POP HL + LD (NXTLPT),HL + POP HL + PUSH IX + RET Z + EX DE,HL + JP GOTO +RETRN6: EX DE,HL + LD HL,12H + ADD HL,SP + LD SP,HL + EX DE,HL + JR RETRN2 +; +GOSUB: ENT ;GOSUB linenumber + PUSH HL + CALL GSUB + EX DE,HL + POP HL + POP BC + PUSH DE + EXX + LD HL,(NXTLPT) + PUSH HL + LD HL,(LNOBUF) + PUSH HL + LD HL,FFFEH + PUSH HL + LD HL,-512 + ADD HL,SP + LD DE,(TMPEND) + SBC HL,DE + LD A,10 + JP C,NESTER + EXX + PUSH BC + JR GOTO + SKP H + +; +ON: ENT ;ON command + TEST1 C1H + CALL TEST1 + DEFB C1H + ENDM + JP Z,ONERRG ;ON ERROR + CALL IDEEXP + LD C,E + LD B,D + CP 87H + JP NC,ER01 + CP 82H + JR NZ,ON.4 + CALL INCHLF + LD E,81H + CP E4H + JR Z,ON.2 + CP E0H + JP NZ,ER01 + DEC E +ON.2: LD A,E +ON.4: PUSH HL + LD HL,SJPTBL + SUB 80H + ADD A,A + LD E,A + LD D,0 + ADD HL,DE + CALL INDRCT + EX (SP),HL + INC HL + LD A,B + OR A + JR NZ,ON.9 + LD A,C + OR A + JR Z,ON.9 + LD B,A +ON.6: DEC B + RET Z + CALL HLFTCH + CALL LINE? + JP NZ,ER01 + CALL DTSKL1 + OR A + RET Z + INC HL + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR Z,ON.6 + POP DE + JP ENDZ +ON.9: POP DE + JP DATA + SKP H + +; +GOTO: ENT ;GOTO linenumber + CALL GETLIN + EX DE,HL + JR NZ,+5 + LD HL,(TEXTST) ;GOTO 0 + LD (NXTLPT),HL + XOR A + LD (CONTFG),A + JP NXLINE +; +IF: ENT ;IF THEN ELSE + CALL EXPR + EX AF,AF' + LD A,(DE) + OR A + JR Z,IFALSE + EX AF,AF' + CP E2H ;THEN + JR NZ,IF.4 +IF.2: CALL INCHLF + CALL LINE? + JR Z,GOTO +IF.4: POP AF + JP MAIN +; +LINE?: ENT + CP '"' + RET Z +LINE?2: ENT + CP 0BH + RET Z + CP 0CH + RET +; +ELSE: ENT + CALL IFSKIP + JR NC,-3 + RET +; +IFALSE: DEC HL + CALL IFSKIP + JR NC,IF.2 + JP ENDLIN +; +IFSKIP: CALL IFSKSB + OR A + SCF + RET Z + CP C2H ;ELSE + RET Z + CP 93H ;IF + JR NZ,IFSKIP + CALL IFSKIP + RET C + JR IFSKIP +; +DTSKSB: ENT + INC HL + LD A,M + + JR DTSKL1 +; +IFSKSB: ENT + INC HL + LD A,M + CP 94H ;DATA + JR Z,IFDASK +DTSKL1: OR A + RET Z + CP '"' + JR Z,IFDQSK + CP FEH ;FUNC/OPTION + JR NC,IFFNRT + CP 97H ;REM + JR Z,IFDASK + CP 27H ;' + JR Z,IFDASK + CP 20H + RET NC + CP 0BH + RET C + CP 15H + JR NC,ISKFLT + INC HL +IFFNRT: INC HL + RET +; +; +IFDASK: LD A,M + OR A + RET Z + CP 3AH + RET Z + CP '"' + JR Z,DADQSK + INC HL + JR IFDASK +; +DADQSK: CALL IFDQSK + OR A + RET Z + INC HL + JR IFDASK +; +ISKFLT: AND 0FH + ADD A,L + LD L,A + LD A,20H + RET NC + INC H + RET +; +IFDQSK: INC HL + LD A,M + OR A + RET Z + CP '"' + RET Z + JR IFDQSK + SKP H + +; +; +BEEP: ENT ;BEEP command + SVC .BELL + RST 3 + DEFB .BELL + ENDM + RET +; +BYE: ENT ;BYE command + CALL ENDZ + SVC .CLRIO + RST 3 + DEFB .CLRIO + ENDM + SVC .MONOP + RST 3 + DEFB .MONOP + ENDM + RET + SKP H + +; +CONSOL: ENT ;CONSOLE x,xl,y,yl + JR Z,CONSOI + LD A,(YS) +; +;CONSCK + LD D,0 + LD E,A + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + JR Z,CONSOK + CALL IBYTE + CALL HCH2CH +CONSOK: LD C,E + PUSH BC + CALL IBYTE + POP BC + DEC A + JP M,ER03 + ADD A,C + CP 25 + JP NC,ER03 + LD B,A +; + PUSH HL + LD H,B + LD L,C + SVC .DWIND + RST 3 + DEFB .DWIND + ENDM + POP HL + RET +CONSOI: ENT ;CONSOLE INIT + PUSH HL + LD HL,1800H + SVC .DWIND + RST 3 + DEFB .DWIND + ENDM + POP HL + RET +; +BOOT: ENT ;BOOT command + DI + OUT (E4H),A + JP 0 + SKP H + +; +; +SEARCH: ENT ;SEARCH#n "xxxx" + XOR A + DEFB 1 +LIST: ENT ;LIST#n Start-End + LD A,1 + LD (SELTF),A + PUSH AF + CALL GETLU + SVC .LUCHK + RST 3 + DEFB .LUCHK + ENDM + JP C,ER64 + BIT 1,A ;W? + JP Z,ER64 + TEST1 "," + CALL TEST1 + DEFB "," + ENDM + POP AF + OR A + JR NZ,LIST10 + CALL STREXP ;SEARCH command only + LD A,B + LD (SECLEN),A + LD (SESTR),DE + CALL ENDZ + JR LIST10 +; +LIST0: ENT + LD A,2 + LD (SELTF),A +LIST10: CALL GTSTED + LD (LISTSN),DE + LD (LISTEN),BC + LD A,FFH + LD (DISPX),A + CALL PUSHR + LD HL,(TEXTST) +LIST20: CALL LDDEMI + LD A,D + OR E + RET Z + EX DE,HL + ADD HL,DE + DEC HL + DEC HL + EX DE,HL + PUSH DE + CALL LDDEMI + PUSH HL + DEFB 21H +LISTSN: DEFS 2 + OR A + SBC HL,DE + JR C,LIST30 + JR Z,LIST30 + POP HL + + POP HL + JR LIST20 +; +LIST30: DEFB 21H +LISTEN: DEFS 2 + OR A + SBC HL,DE + JR NC,LIST40 + POP HL + POP HL + RET +; +; +LIST40: EX DE,HL + CALL ASCFIV + SVC .COUNT + RST 3 + DEFB .COUNT + ENDM + LD HL,KEYBUF + CALL LDHLDE + LD M," " + INC HL + EX DE,HL + POP HL + CALL CVTXIM + LD A,(SELTF) + OR A + JR NZ,LIST50 + CALL SSEST + JR NC,LIST60 +LIST50: LD DE,KEYBUF + SVC .COUNT + RST 3 + DEFB .COUNT + ENDM + SVC .PRSTR + RST 3 + DEFB .PRSTR + ENDM + CALL PRTCR +LIST60: POP HL + LD A,(SELTF) + CP 2 + JR Z,LIST20 ;ASCII SAVE + SVC .HALT + RST 3 + DEFB .HALT + ENDM + JR LIST20 +; +; +; +; HL=TEXT START ADDRESS +; +SSEST: EX DE,HL +SSESTL: PUSH HL + CALL SSESTS + POP HL + RET C + + RET Z + INC HL + JR SSESTL +; +;;;;;;;;;;;;;;;;;;;;;; +; +; ent HL:CMP pointer +; +; ext CY=1 sane string +; CY=0 Acc=0 not same & text end +; Acc=FFH not same chr +; +SSESTS: LD A,(SECLEN) ;String Length + LD B,A + LD DE,(SESTR) ;String address +SSEST0: LD A,(HL) + INC HL + OR A + RET Z + CP 5 + JR Z,SSEST1 + CP 6 + JR NZ,SSEST2 +SSEST1: JR SSEST0 +; +SSEST2: PUSH HL + LD C,A +SSEST4: LD A,(DE) + INC DE + CP 5 + JR Z,SSEST3 + CP 6 + JR NZ,SSEST5 +SSEST3: DEC B + SCF + POP HL + RET Z + PUSH HL + JR SSEST4 +SSEST5: SUB C + POP HL + OR A + RET NZ ;1 Chr not same + DEC B + SCF + RET Z + JR SSEST0 +; +; +SECLEN: DEFS 1 ;Stling length +; +SESTR: DEFS 2 ;Stling Addrsess +; +SSESTW: DEFS 2 ;Line No. +; +SELTF: DEFS 1 ;0:SEARCH , 1:LIST +; + SKP H + +; +KLIST: ENT ;KEY LIST + TESTX 87H ;LIST + CALL TESTX + DEFB 87H + ENDM + CALL TESTP + PUSH HL + LD C,0 +KLSTLP: SVC .&CR + RST 3 + DEFB .&CR + ENDM + LD A,C + ADD A,"1" + LD D,A + LD E," " + CP 3AH + JR NZ,+5 + LD DE,"01" + LD (KEYME2),DE + LD DE,KEYME1 ;'DEF KEY(' + SVC .&MSG + RST 3 + DEFB .&MSG + ENDM + LD A,C + CALL KEYBCL + LD B,M + INC HL + PUSH BC + CALL STKYMS ;(DE)=MSTRING + POP BC + INC C + LD A,C + CP 10 + JR NZ,KLSTLP + SVC .&CR + RST 3 + DEFB .&CR + ENDM + POP HL + RET +; +STKYMS: LD A,B + OR A + LD C,0 + JR NZ,STKYM1 + LD A,'"' + SVC .&1CX + RST 3 + DEFB .&1CX + ENDM + SVC .&1CX + RST 3 + DEFB .&1CX + ENDM + RET +STKYM1: LD A,M + CP 20H + + JR C,CHRME1 + CP '"' + JR Z,CHRME1 + LD A,C + CP 1 + JR Z,CHRM22 + OR A + LD DE,KEYME3 + JR NZ,+4 + INC DE + INC DE + SVC .&MSG + RST 3 + DEFB .&MSG + ENDM +CHRM22: LD A,M + SVC .&1CX + RST 3 + DEFB .&1CX + ENDM + INC HL + LD C,1 + DJNZ STKYM1 +STKYE2: LD A,'"' +..&1CX: SVC .&1CX + RST 3 + DEFB .&1CX + ENDM + RET +; +CHRME1: LD A,C + CP FFH + JR Z,CHRM12 + OR A + LD DE,KEYME4 + JR NZ,+4 + INC DE + INC DE + SVC .&MSG + RST 3 + DEFB .&MSG + ENDM +CHRM16: PUSH BC + PUSH HL + LD L,M + LD H,0 + CALL ASCFIV + SVC .&MSG + RST 3 + DEFB .&MSG + ENDM + POP HL + POP BC + INC HL + LD C,FFH + DJNZ STKYM1 + LD A,")" + JP ..&1CX +; +CHRM12: LD A,"," + + SVC .&1CX + RST 3 + DEFB .&1CX + ENDM + JR CHRM16 +; +KEYME1: DEFM 'DEF KEY(' + +KEYME2: DEFS 2 + DEFM ')=' + DEFB 0 +KEYME3: DEFM ')+"' + DEFB 0 +KEYME4: DEFM '"+CHR$(' + + DEFB 0 + SKP H + +; +DEFOP: ENT ;DEF command + TEST1 B2H + CALL TEST1 + DEFB B2H + ENDM + JR Z,DEFKEY ;DEF KEY(n)="..." + TESTX FFH + CALL TESTX + DEFB FFH + ENDM + TESTX C7H + CALL TESTX + DEFB C7H + ENDM + JP DEFFN ;DEF FNx(x)=expr +; +DEFKEY: TESTX "(" + CALL TESTX + DEFB "(" + ENDM + CALL IBYTE + TESTX ")" + CALL TESTX + DEFB ")" + ENDM + TESTX F4H ;= + CALL TESTX + DEFB F4H + ENDM + LD A,E + DEC A + CP 10 + JP NC,ER03 + PUSH HL + CALL KEYBCL + EX (SP),HL + CALL STREXP ;A,DE + EX (SP),HL + LD A,B + CP 16 + JR C,+4 + LD A,15 + LD M,A + OR A + JR Z,ESCKPT + LD B,A + INC HL + LD A,(DE) + LD M,A + INC DE + INC HL + DJNZ -4 +ESCKPT: POP HL + EI + RET +; +; +KEYBCL: ADD A,A + ADD A,A + + ADD A,A + ADD A,A + LD HL,FUNBUF + JP ADDHLA +; + END diff --git a/software/asm/mz-xz009/XSYS.ASM b/software/asm/mz-xz009/XSYS.ASM new file mode 100644 index 0000000..5979f4d --- /dev/null +++ b/software/asm/mz-xz009/XSYS.ASM @@ -0,0 +1,5 @@ +; +; + ORG 5800H +$START: ENT + END diff --git a/software/asm/mz-xz009/XWORK.ASM b/software/asm/mz-xz009/XWORK.ASM new file mode 100644 index 0000000..a0f5ee5 --- /dev/null +++ b/software/asm/mz-xz009/XWORK.ASM @@ -0,0 +1,9 @@ + ORG 2000H +TEXTBF: + DEFS 2000 +; +; work area +; +DIRARE: ENT ;DIR area + DEFS 800H + END diff --git a/software/asm/mz2000_ipl.asm b/software/asm/mz2000_ipl.asm new file mode 100644 index 0000000..5853e4a --- /dev/null +++ b/software/asm/mz2000_ipl.asm @@ -0,0 +1,891 @@ + ;**************************************************************** + ; + ; MZ-2000 Initial Program Loader Firmware. + ; + ; Disassembled with dz80 v2.1 and comments copied from the + ; MZ-80B IPL disassembly. + ; + ;**************************************************************** + ; +CR EQU 0D8H +TR EQU 0D9H +SCR EQU 0DAH +DR EQU 0DBH +DM EQU 0DCH +HS EQU 0DDH +PPIA EQU 0E0H +PPIB EQU 0E1H +PPIC EQU 0E2H +PPICTL EQU 0E3H +PIOA EQU 0E8H +PIOCTLA EQU 0E9H +PIOB EQU 0EAH +PIOCTLB EQU 0EBH +GRPHCTL EQU 0F4H +IBUFE EQU 0CF00H +ATRB EQU 0CF00H +NAME EQU 0CF01H +SIZE EQU 0CF12H +DTADR EQU 0CF14H +SUMDT EQU 0FFE0H +TMCNT EQU 0FFE2H +IBADR1 EQU 0CF00H +IBADR2 EQU 08000H +NTRACK EQU 0FFE0H +NSECT EQU 0FFE1H +BSIZE EQU 0FFE2H +STTR EQU 0FFE4H +STSE EQU 0FFE5H +MTFG EQU 0FFE6H +CLBF0 EQU 0FFE7H +CLBF1 EQU 0FFE8H +CLBF2 EQU 0FFE9H +CLBF3 EQU 0FFEAH +RETRY EQU 0FFEBH +DRINO EQU 0FFECH +PRGSTART EQU 00000H + + ORG PRGSTART + +L0000: JR START + ; + ; NST RESET + ; +NST: LD A,003H ;Set PC1 NST=1 + OUT (PPICTL),A +START: LD A,082H ;8255 A=OUT B=IN C=OUT + OUT (PPICTL),A + LD A,058H ;PIO A=OUT + OUT (PPIC),A + LD SP,SUMDT ;PIO B=IN + LD A,0F7H + OUT (PPIA),A + LD A,00FH + OUT (PIOCTLA),A ;BST=1 NST=0 OPEN=1 WRITE=1 + LD A,0CFH + OUT (PIOCTLB),A + LD A,0FFH + OUT (PIOCTLB),A + XOR A ;Set Graphics VRAM to default, input to GRPH I, no output. + OUT (0F6H),A + OUT (GRPHCTL),A + INC A + OUT (0F7H),A + LD A,007H + OUT (0F5H),A + LD A,0D3H + OUT (PIOA),A + LD HL,0D000H + LD A,CR +CLEAR: LD (HL),000H ; DISPLAY CLEAR + INC HL + CP H + JR NZ,CLEAR + LD A,0FFH + OUT (PPIA),A + LD A,003H + OUT (0F7H),A + CALL L006E + LD A,002H + OUT (0F7H),A + CALL L006E + LD A,001H + OUT (0F7H),A + CALL L006E + LD A,013H + OUT (PIOA),A + XOR A + LD (DRINO),A + LD (MTFG),A +KEYIN: CALL KEYS1 + BIT 3,A ;C - Cassette. + JR Z,CMT + BIT 0,A ;/ - Boot external rom. + JP Z,EXROMT + JR NKIN ;No selection, so standard startup, try FDC then CMT. + +L006E: LD HL,0C000H + DI + IN A,(PIOA) + SET 7,A + RES 6,A + OUT (PIOA),A + LD DE,0C001H + LD (HL),000H + LD BC,03E7FH +L0082: LDIR + RES 7,A + SET 6,A + OUT (PIOA),A + EI + RET + +KEYS1: LD B,014H ;Preserve A4-A7, set A4 to prevent all strobes low, the select line 5 (0-4). +KEYS: IN A,(PIOA) + AND 0F0H + OR B + OUT (PIOA),A + IN A,(PIOB) ;Read the strobed key. + RET + +NKIN: CALL FDCC + JP Z,FD + JR CMT + +FDCC: LD A,0A5H + LD B,A + OUT (TR),A + CALL DLY80U + IN A,(TR) + CP B + RET + ; + ; ; + ; CMT CONTROL ; + ; ; + ; +CMT: CALL MSTOP + CALL KYEMES + CALL RDINF + JR C,ST1 + CALL LDMSG + LD HL,NAME + LD E,010H + LD C,010H + CALL DISP2 + LD A,(IBUFE) + CP 001H + JR NZ,MISMCH + CALL RDDAT +ST1: PUSH AF + CALL FR + POP AF + JP C,TRYAG + JP NST + +MISMCH: LD HL,MES16 + LD E,00AH + LD C,00FH + CALL DISP + CALL MSTOP + SCF + JR ST1 + ; + ;READ INFORMATION + ; CF=1:ERROR +?RDI: +RDINF: DI + IN A,(PPIC) + SET 5,A + OUT (PPIC),A + LD D,004H + LD BC,0080H + LD HL,IBUFE +RD1: CALL MOTOR + JR C,STPEIR + CALL TMARK + JR C,STPEIR + CALL RTAPE + JR C,STPEIR + BIT 3,D + JR Z,EIRTN +STPEIR: CALL MSTOP +EIRTN: EI + RET + ; + ; + ;READ DATA + ; +?RDD: +RDDAT: DI + LD D,008H + LD BC,(0CF12H) + LD HL,IBADR2 + JR RD1 + ; + ; + ;READ TAPE + ; BC=SIZE + ; DE=LOAD ADDRSS +RTAPE: PUSH DE + PUSH BC + PUSH HL + LD H,002H +RTP2: CALL SPDIN + JR C,TRTN1 ; BREAK + JR Z,RTP2 + LD D,H + LD HL,L0000 + LD (SUMDT),HL + POP HL + POP BC + PUSH BC + PUSH HL +RTP3: CALL RBYTE + JR C,TRTN1 + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JR NZ,RTP3 + LD HL,(SUMDT) + CALL RBYTE + JR C,TRTN1 + LD E,A + CALL RBYTE + JR C,TRTN1 + CP L + JR NZ,RTP5 + LD A,E + CP H + JR Z,TRTN1 +RTP5: DEC D + JR Z,RTP6 + LD H,D + JR RTP2 + +RTP6: CALL BOOTER + SCF +TRTN1: POP HL + POP BC + POP DE + RET + +EDGE: IN A,(PPIB) + CPL + RLCA + RET C ; BREAK + RLCA + JR NC,EDGE ; WAIT ON LOW +L016A: IN A,(PPIB) + CPL + RLCA + RET C ; BREAK + RLCA + JR C,L016A ; WAIT ON HIGH + RET + ; 1 BYTE READ + ; DATA=A + ; SUMDT STORE +RBYTE: PUSH HL + LD HL,00800H ; 8 BITS +RBY1: CALL SPDIN + JR C,RBY3 ; BREAK + JR Z,RBY2 ; BIT=0 + PUSH HL + LD HL,(SUMDT) ;CHECKSUM + INC HL + LD (SUMDT),HL + POP HL + SCF +RBY2: RL L + DEC H + JR NZ,RBY1 + CALL EDGE + LD A,L +RBY3: POP HL + RET + ;TAPE MARK DETECT + ; E=L:INFORMATION + ; E=S:DATA +TMARK: PUSH HL + LD HL,01414H + BIT 3,D + JR NZ,TM0 + ADD HL,HL +TM0: LD (TMCNT),HL +TM1: LD HL,(TMCNT) +TM2: CALL SPDIN + JR C,RBY3 + JR Z,TM1 + DEC H + JR NZ,TM2 +TM3: CALL SPDIN + JR C,RBY3 + JR NZ,TM1 + DEC L + JR NZ,TM3 + CALL EDGE + JR RBY3 + +SPDIN: CALL EDGE ;WAIT ON HIGH + RET C ;BREAK + CALL DLY2 + IN A,(PPIB) ;READ BIT + AND 040H + RET + ; + ; + ;MOTOR ON +MOTOR: PUSH DE + PUSH BC + PUSH HL + IN A,(PPIB) + AND 020H + JR Z,MOTRD + LD HL,MES6 + LD E,00AH + LD C,00EH + CALL DISP + CALL OPEN +MOT1: IN A,(PIOB) + CPL + RLCA + JR C,MOTR + IN A,(PPIB) + AND 020H + JR NZ,MOT1 + CALL KYEMES + CALL DEL1M +MOTRD: CALL PLAY +MOTR: POP HL + POP BC + POP DE + RET + ; + ; + ;MOTOR STOP +MSTOP: LD A,0F7H + OUT (PPIA),A + CALL DEL6 + LD A,0FFH + OUT (PPIA),A + RET + ;EJECT +OPEN: LD A,008H ;Reset PC4 - EJECT activate + OUT (PPICTL),A + CALL DEL6 + LD A,009H + OUT (PPICTL),A ;Set PC4 - Deactivate EJECT + RET + +KYEMES: LD HL,MES3 + LD E,004H + LD C,01CH + CALL DISP + RET + ; + ;PLAY +PLAY: LD A,0FBH + OUT (PPIA),A + CALL DEL6 + LD A,0FFH + OUT (PPIA),A + RET + +FR: LD A,0FEH +FR1: OUT (PPIA),A + CALL DEL6 + LD A,0FFH + OUT (PPIA),A + IN A,(PPIC) + RES 5,A + OUT (PPIC),A + RET + ; + ;TIMING DEL +DM1: PUSH AF +DM1A: XOR A +DM1B: DEC A + JR NZ,DM1B + DEC BC + LD A,B + OR C + JR NZ,DM1A + POP AF + POP BC + RET + +DEL6: PUSH BC + LD BC,RDINF + JR DM1 + +DEL1M: PUSH BC + LD BC,060FH + JR DM1 + ; + ;TAPE DELAY TIMING + ; + ; +DLY2: LD A,031H +DLY2A: DEC A + JP NZ,DLY2A + RET + +LDMSG: LD HL,MES1 + LD E,000H + LD C,00EH + JR DISP + +DISP2: LD A,0D3H + OUT (PIOA),A + JR DISP1 + +BOOTER: LD HL,MES8 + LD E,00AH + LD C,00DH +DISP: LD A,0D3H + OUT (PIOA),A + EXX + LD HL,0D000H + LD A,CR +DISP3: LD (HL),000H + INC HL + CP H + JR NZ,DISP3 + EXX +DISP1: XOR A + LD B,A + LD D,0D0H + LDIR + LD A,013H + OUT (PIOA),A + RET + + ; +MES1: DB "IPL is loading" +MES3: DB "IPL is looking for a program" +MES6: DB "Make ready CMT" +MES8: DB "Loading error" +MES9: DB "Make ready FD" +MES10: DB "Press F or C" +MES11: DB "F:Floppy disk " +MES12: DB "C:Cassette tape" +MES13: DB "Drive No? (1-4)" +MES14: DB "This disk is not master " +MES15: DB "Pressing S key starts the CMT" +MES16: DB "File mode error" + ; +IPLMC: DB 01H + DB "IPLPRO" + + ; + ; + ;FD +FD: LD IX,IBUFE + XOR A + LD (0CF1EH),A + LD (0CF1FH),A + LD IY,SUMDT + LD HL,0100H + LD (IY+002H),L + LD (IY+003H),H + CALL BREAD ;INFORMATION INPUT + LD HL,IBUFE ;MASTER CHECK + LD DE,IPLMC + LD B,006H +MCHECK: LD C,(HL) + LD A,(DE) + CP C + JP NZ,NMASTE + INC HL + INC DE + DJNZ MCHECK + CALL LDMSG + LD HL,0CF07H + LD E,010H + LD C,00AH + CALL DISP2 + LD IX,IBADR2 + LD HL,(0CF14H) + LD (IY+002H),L + LD (IY+003H),H + CALL BREAD + CALL MOFF + JP NST + +NODISK: LD HL,MES9 + LD E,00AH + LD C,00DH + CALL DISP + JP ERR1 + ; + ; READY CHECK + ; +READY: LD A,(MTFG) + RRCA + CALL NC,MTON + LD A,(DRINO) ;DRIVE NO GET + OR 084H + OUT (DM),A ;DRIVE SELECT MOTON + XOR A + CALL DLY60M + LD HL,L0000 +REDY0: DEC HL + LD A,H + OR L + JR Z,NODISK + RET C + RET C + CPL + RLCA + JR C,REDY0 + LD A,(DRINO) + LD C,A + LD HL,CLBF0 + LD B,000H + ADD HL,BC + BIT 0,(HL) + RET NZ + CALL RCLB + SET 0,(HL) + RET + ; + ; MOTOR ON + ; +MTON: LD A,080H + OUT (DM),A + LD B,00AH ;1SEC DELAY +MTD1: LD HL,03C19H +MTD2: DEC HL + LD A,L + OR H + JR NZ,MTD2 + DJNZ MTD1 + LD A,001H + LD (MTFG),A + RET + ; + ; Track SEEK + ; +SEEK: LD A,01BH + CPL + OUT (CR),A + CALL BUSY + CALL DLY60M + IN A,(CR) + CPL + AND 099H + RET + ; + ;MOTOR OFF + ; +MOFF: CALL DLY1M + XOR A + OUT (DM),A + LD (CLBF0),A + LD (CLBF1),A + LD (CLBF2),A + LD (CLBF3),A + LD (MTFG),A + RET + ; + ; RECALIBRATION + ; +RCLB: PUSH HL + LD A,00BH + CPL + OUT (CR),A + CALL BUSY + CALL DLY60M + IN A,(CR) + CPL + AND 085H + XOR 004H + POP HL + RET Z + JP ERR + ; + ; BUSY AND WAIT + ; +BUSY: PUSH DE + PUSH HL + CALL DLY80U + LD E,007H +BUSY2: LD HL,L0000 +BUSY0: DEC HL + LD A,H + OR L + JR Z,BUSY1 + IN A,(CR) + CPL + RRCA + JR C,BUSY0 + POP HL + POP DE + RET + +BUSY1: DEC E + JR NZ,BUSY2 + JP ERR + ; + ; DATA CHECK + ; +CONVRT: LD B,000H + LD DE,0010H + LD HL,(0CF1EH) + XOR A +TRANS: SBC HL,DE + JR C,TRANS1 + INC B + JR TRANS + +TRANS1: ADD HL,DE + LD H,B + INC L + LD (IY+004H),H + LD (IY+005H),L +DCHK: LD A,(DRINO) + CP 004H + JR NC,DTCK1 + LD A,(IY+004H) + CP 046H + JR NC,DTCK1 + LD A,(IY+005H) + OR A + JR Z,DTCK1 + CP 011H + JR NC,DTCK1 + LD A,(IY+002H) + OR (IY+003H) + RET NZ +DTCK1: JP ERR + ; + ; SEQUENTIAL READ + ; +BREAD: DI + CALL CONVRT + LD A,00AH + LD (RETRY),A +READ1: CALL READY + LD D,(IY+003H) + LD A,(IY+002H) + OR A + JR Z,RE0 + INC D +RE0: LD A,(IY+005H) + LD (IY+001H),A + LD A,(IY+004H) + LD (IY+000H),A + PUSH IX + POP HL +RE8: SRL A + CPL + OUT (DR),A + JR NC,RE1 + LD A,001H + JR RE2 + +RE1: LD A,000H +RE2: CPL + OUT (HS),A + CALL SEEK + JR NZ,REE + LD C,DR + LD A,(IY+000H) + SRL A + CPL + OUT (TR),A + LD A,(IY+001H) + CPL + OUT (SCR),A + EXX + LD HL,RE3 + PUSH HL + EXX + LD A,094H + CPL + OUT (CR),A + CALL WAIT +RE6: LD B,000H +RE4: IN A,(CR) + RRCA + RET C + RRCA + JR C,RE4 + INI + JR NZ,RE4 + INC (IY+001H) + LD A,(IY+001H) + CP 011H + JR Z,RETS + DEC D + JR NZ,RE6 + JR RE5 + +RETS: DEC D +RE5: LD A,CR + CPL + OUT (CR),A + CALL BUSY +RE3: IN A,(CR) + CPL + AND 0FFH + JR NZ,REE + EXX + POP HL + EXX + LD A,(IY+001H) + CP 011H + JR NZ,REX + LD A,001H + LD (IY+001H),A + INC (IY+000H) +REX: LD A,D + OR A + JR NZ,RE7 + LD A,080H + OUT (DM),A + RET + +RE7: LD A,(IY+000H) + JR RE8 + +REE: LD A,(RETRY) + DEC A + LD (RETRY),A + JR Z,ERR + CALL RCLB + JP READ1 + ; + ; WAIT AND BUSY OFF + ; +WAIT: PUSH DE + PUSH HL + CALL DLY80U + LD E,008H +WAIT2: LD HL,L0000 +WAIT0: DEC HL + LD A,H + OR L + JR Z,WAIT1 + IN A,(CR) + CPL + RRCA + JR NC,WAIT0 + POP HL + POP DE + RET + +WAIT1: DEC E + JR NZ,WAIT2 + JR ERR + +NMASTE: LD HL,MES14 + LD E,007H + LD C,01BH + CALL DISP + JR ERR1 + ; + ; ; + ; ERRROR OR BREAK ; + ; ; + ; +ERR: CALL BOOTER +ERR1: CALL MOFF + LD SP,SUMDT +TRYAG: CALL FDCC + JR NZ,TRYAG3 + LD HL,MES10 + LD E,05AH + LD C,00CH + CALL DISP2 + LD E,0ABH + LD C,011H + CALL DISP2 + LD E,0D3H + LD C,00FH + CALL DISP2 +TRYAG1: CALL KEYS1 + BIT 3,A + JP Z,CMT + BIT 6,A + JR Z,DNO + JR TRYAG1 + +DNO: LD HL,MES13 + LD E,00AH + LD C,00FH + CALL DISP +DNO10: LD D,012H + CALL DNO0 + JR NC,DNO3 + LD D,018H + CALL DNO0 + JR NC,DNO3 + JR DNO10 + +DNO3: LD A,B + LD (DRINO),A + JP FD + +TRYAG3: LD HL,MES15 + LD E,054H + LD C,01DH + CALL DISP2 +TRYAG4: LD B,006H +TRYAG5: CALL KEYS + BIT 3,A + JP Z,CMT + JR TRYAG5 + +DNO0: IN A,(PIOA) + AND 0F0H + OR D + OUT (PIOA),A + IN A,(PIOB) + LD B,000H + LD C,004H + RRCA +DNO1: RRCA + RET NC + INC B + DEC C + JR NZ,DNO1 + RET + ; + ; TIME DELAY (1M &60M &80U ) + ; +DLY80U: PUSH DE + LD DE,000DH + JP DLYT + +DLY1M: PUSH DE + LD DE,L0082 + JP DLYT + +DLY60M: PUSH DE + LD DE,01A2CH +DLYT: DEC DE + LD A,E + OR D + JR NZ,DLYT + POP DE + RET + ; + ; + ; ; + ; INTRAM EXROM ; + ; ; + ; +EXROMT: LD HL,IBADR2 + LD IX,EROM1 + JR SEROMA + +EROM1: IN A,(0F9H) + CP 000H + JP NZ,NKIN + LD IX,EROM2 +ERMT1: JR SEROMA + +EROM2: IN A,(0F9H) + LD (HL),A + INC HL + LD A,L + OR H + JR NZ,ERMT1 + OUT (0F8H),A + JP NST + +SEROMA: LD A,H + OUT (0F8H),A + LD A,L + OUT (0F9H),A + LD D,004H +SEROMD: DEC D + JR NZ,SEROMD + JP (IX) + + ; Align to rom size. + DS 0800H - 1 - ($ + 0800H - 1) % 0800H, 0FFh diff --git a/software/asm/MZ800_1Z_013B.asm b/software/asm/mz800_1z_013b.asm similarity index 100% rename from software/asm/MZ800_1Z_013B.asm rename to software/asm/mz800_1z_013b.asm diff --git a/software/asm/MZ800_9Z_504M.asm b/software/asm/mz800_9z_504m.asm similarity index 100% rename from software/asm/MZ800_9Z_504M.asm rename to software/asm/mz800_9z_504m.asm diff --git a/software/asm/MZ800_IOCS.asm b/software/asm/mz800_iocs.asm similarity index 100% rename from software/asm/MZ800_IOCS.asm rename to software/asm/mz800_iocs.asm diff --git a/software/asm/MZ80AFI.asm b/software/asm/mz80afi.asm similarity index 100% rename from software/asm/MZ80AFI.asm rename to software/asm/mz80afi.asm diff --git a/software/asm/MZ80B_IPL.asm b/software/asm/mz80b_ipl.asm similarity index 99% rename from software/asm/MZ80B_IPL.asm rename to software/asm/mz80b_ipl.asm index dacf307..3912dc9 100644 --- a/software/asm/MZ80B_IPL.asm +++ b/software/asm/mz80b_ipl.asm @@ -54,7 +54,7 @@ KEYS: IN A,(PIOA) AND 0F0H OR B OUT (PIOA),A - IN A,(PIOB) ;Read the strobed key. + IN A,(PIOB) ;Read the strobed key. RET ; ; @@ -237,7 +237,7 @@ TM3: CALL SPDIN JR RBY3 ;READ 1 BIT SPDIN: CALL EDGE ;WAIT ON HIGH - RET C ;BREAK + RET C ;BREAK CALL DLY2 IN A,(PPIB) ;READ BIT @@ -823,6 +823,9 @@ SEROMD: DEC D JR NZ,SEROMD JP (IX) + ; Align to ROM size. + DS 0800H - 1 - ($ + 0800H - 1) % 0800H, 0FFh + ;---------------------------------------------------------- ; Variables/Work area ;---------------------------------------------------------- diff --git a/software/asm/SA-5510_TZFS.asm b/software/asm/sa-5510_tzfs.asm similarity index 100% rename from software/asm/SA-5510_TZFS.asm rename to software/asm/sa-5510_tzfs.asm diff --git a/software/asm/SFD700.asm b/software/asm/sfd700.asm similarity index 100% rename from software/asm/SFD700.asm rename to software/asm/sfd700.asm diff --git a/software/dis/MZ2000_IPL/dz80.ini b/software/dis/MZ2000_IPL/dz80.ini new file mode 120000 index 0000000..49e8b82 --- /dev/null +++ b/software/dis/MZ2000_IPL/dz80.ini @@ -0,0 +1 @@ +mz2000_ipl.ini \ No newline at end of file diff --git a/software/dis/MZ2000_IPL/mz2000_ipl.asm b/software/dis/MZ2000_IPL/mz2000_ipl.asm new file mode 100644 index 0000000..b999754 --- /dev/null +++ b/software/dis/MZ2000_IPL/mz2000_ipl.asm @@ -0,0 +1,889 @@ + ;**************************************************************** + ; + ; MZ-2000 Initial Program Loader Firmware. + ; + ; Disassembled with dz80 v2.1 and comments copied from the + ; MZ-80B IPL disassembly. + ; + ;**************************************************************** + ; +CR EQU 0D8H +TR EQU 0D9H +SCR EQU 0DAH +DR EQU 0DBH +DM EQU 0DCH +HS EQU 0DDH +PPIA EQU 0E0H +PPIB EQU 0E1H +PPIC EQU 0E2H +PPICTL EQU 0E3H +PIOA EQU 0E8H +PIOCTLA EQU 0E9H +PIOB EQU 0EAH +PIOCTLB EQU 0EBH +GRPHCTL EQU 0F4H +IBUFE EQU 0CF00H +ATRB EQU 0CF00H +NAME EQU 0CF01H +SIZE EQU 0CF12H +DTADR EQU 0CF14H +SUMDT EQU 0FFE0H +TMCNT EQU 0FFE2H +IBADR1 EQU 0CF00H +IBADR2 EQU 08000H +NTRACK EQU 0FFE0H +NSECT EQU 0FFE1H +BSIZE EQU 0FFE2H +STTR EQU 0FFE4H +STSE EQU 0FFE5H +MTFG EQU 0FFE6H +CLBF0 EQU 0FFE7H +CLBF1 EQU 0FFE8H +CLBF2 EQU 0FFE9H +CLBF3 EQU 0FFEAH +RETRY EQU 0FFEBH +DRINO EQU 0FFECH +PRGSTART EQU 00000H + + ORG PRGSTART + +L0000: JR START + ; + ; NST RESET + ; +NST: LD A,003H ;Set PC1 NST=1 + OUT (PPICTL),A +START: LD A,082H ;8255 A=OUT B=IN C=OUT + OUT (PPICTL),A + LD A,058H ;PIO A=OUT + OUT (PPIC),A + LD SP,SUMDT ;PIO B=IN + LD A,0F7H + OUT (PPIA),A + LD A,00FH + OUT (PIOCTLA),A ;BST=1 NST=0 OPEN=1 WRITE=1 + LD A,0CFH + OUT (PIOCTLB),A + LD A,0FFH + OUT (PIOCTLB),A + XOR A ;Set Graphics VRAM to default, input to GRPH I, no output. + OUT (0F6H),A + OUT (GRPHCTL),A + INC A + OUT (0F7H),A + LD A,007H + OUT (0F5H),A + LD A,0D3H + OUT (PIOA),A + LD HL,0D000H + LD A,CR +CLEAR: LD (HL),000H ; DISPLAY CLEAR + INC HL + CP H + JR NZ,CLEAR + LD A,0FFH + OUT (PPIA),A + LD A,003H + OUT (0F7H),A + CALL L006E + LD A,002H + OUT (0F7H),A + CALL L006E + LD A,001H + OUT (0F7H),A + CALL L006E + LD A,013H + OUT (PIOA),A + XOR A + LD (DRINO),A + LD (MTFG),A +KEYIN: CALL KEYS1 + BIT 3,A ;C - Cassette. + JR Z,CMT + BIT 0,A ;/ - Boot external rom. + JP Z,EXROMT + JR NKIN ;No selection, so standard startup, try FDC then CMT. + +L006E: LD HL,0C000H + DI + IN A,(PIOA) + SET 7,A + RES 6,A + OUT (PIOA),A + LD DE,0C001H + LD (HL),000H + LD BC,03E7FH +L0082: LDIR + RES 7,A + SET 6,A + OUT (PIOA),A + EI + RET + +KEYS1: LD B,014H ;Preserve A4-A7, set A4 to prevent all strobes low, the select line 5 (0-4). +KEYS: IN A,(PIOA) + AND 0F0H + OR B + OUT (PIOA),A + IN A,(PIOB) ;Read the strobed key. + RET + +NKIN: CALL FDCC + JP Z,FD + JR CMT + +FDCC: LD A,0A5H + LD B,A + OUT (TR),A + CALL DLY80U + IN A,(TR) + CP B + RET + ; + ; ; + ; CMT CONTROL ; + ; ; + ; +CMT: CALL MSTOP + CALL KYEMES + CALL RDINF + JR C,ST1 + CALL LDMSG + LD HL,NAME + LD E,010H + LD C,010H + CALL DISP2 + LD A,(IBUFE) + CP 001H + JR NZ,MISMCH + CALL RDDAT +ST1: PUSH AF + CALL FR + POP AF + JP C,TRYAG + JP NST + +MISMCH: LD HL,MES16 + LD E,00AH + LD C,00FH + CALL DISP + CALL MSTOP + SCF + JR ST1 + ; + ;READ INFORMATION + ; CF=1:ERROR +?RDI: +RDINF: DI + IN A,(PPIC) + SET 5,A + OUT (PPIC),A + LD D,004H + LD BC,0080H + LD HL,IBUFE +RD1: CALL MOTOR + JR C,STPEIR + CALL TMARK + JR C,STPEIR + CALL RTAPE + JR C,STPEIR + BIT 3,D + JR Z,EIRTN +STPEIR: CALL MSTOP +EIRTN: EI + RET + ; + ; + ;READ DATA + ; +?RDD: +RDDAT: DI + LD D,008H + LD BC,(0CF12H) + LD HL,IBADR2 + JR RD1 + ; + ; + ;READ TAPE + ; BC=SIZE + ; DE=LOAD ADDRSS +RTAPE: PUSH DE + PUSH BC + PUSH HL + LD H,002H +RTP2: CALL SPDIN + JR C,TRTN1 ; BREAK + JR Z,RTP2 + LD D,H + LD HL,L0000 + LD (SUMDT),HL + POP HL + POP BC + PUSH BC + PUSH HL +RTP3: CALL RBYTE + JR C,TRTN1 + LD (HL),A + INC HL + DEC BC + LD A,B + OR C + JR NZ,RTP3 + LD HL,(SUMDT) + CALL RBYTE + JR C,TRTN1 + LD E,A + CALL RBYTE + JR C,TRTN1 + CP L + JR NZ,RTP5 + LD A,E + CP H + JR Z,TRTN1 +RTP5: DEC D + JR Z,RTP6 + LD H,D + JR RTP2 + +RTP6: CALL BOOTER + SCF +TRTN1: POP HL + POP BC + POP DE + RET + +EDGE: IN A,(PPIB) + CPL + RLCA + RET C ; BREAK + RLCA + JR NC,EDGE ; WAIT ON LOW +L016A: IN A,(PPIB) + CPL + RLCA + RET C ; BREAK + RLCA + JR C,L016A ; WAIT ON HIGH + RET + ; 1 BYTE READ + ; DATA=A + ; SUMDT STORE +RBYTE: PUSH HL + LD HL,00800H ; 8 BITS +RBY1: CALL SPDIN + JR C,RBY3 ; BREAK + JR Z,RBY2 ; BIT=0 + PUSH HL + LD HL,(SUMDT) ;CHECKSUM + INC HL + LD (SUMDT),HL + POP HL + SCF +RBY2: RL L + DEC H + JR NZ,RBY1 + CALL EDGE + LD A,L +RBY3: POP HL + RET + ;TAPE MARK DETECT + ; E=L:INFORMATION + ; E=S:DATA +TMARK: PUSH HL + LD HL,01414H + BIT 3,D + JR NZ,TM0 + ADD HL,HL +TM0: LD (TMCNT),HL +TM1: LD HL,(TMCNT) +TM2: CALL SPDIN + JR C,RBY3 + JR Z,TM1 + DEC H + JR NZ,TM2 +TM3: CALL SPDIN + JR C,RBY3 + JR NZ,TM1 + DEC L + JR NZ,TM3 + CALL EDGE + JR RBY3 + +SPDIN: CALL EDGE ;WAIT ON HIGH + RET C ;BREAK + CALL DLY2 + IN A,(PPIB) ;READ BIT + AND 040H + RET + ; + ; + ;MOTOR ON +MOTOR: PUSH DE + PUSH BC + PUSH HL + IN A,(PPIB) + AND 020H + JR Z,MOTRD + LD HL,MES6 + LD E,00AH + LD C,00EH + CALL DISP + CALL OPEN +MOT1: IN A,(PIOB) + CPL + RLCA + JR C,MOTR + IN A,(PPIB) + AND 020H + JR NZ,MOT1 + CALL KYEMES + CALL DEL1M +MOTRD: CALL PLAY +MOTR: POP HL + POP BC + POP DE + RET + ; + ; + ;MOTOR STOP +MSTOP: LD A,0F7H + OUT (PPIA),A + CALL DEL6 + LD A,0FFH + OUT (PPIA),A + RET + ;EJECT +OPEN: LD A,008H ;Reset PC4 - EJECT activate + OUT (PPICTL),A + CALL DEL6 + LD A,009H + OUT (PPICTL),A ;Set PC4 - Deactivate EJECT + RET + +KYEMES: LD HL,MES3 + LD E,004H + LD C,01CH + CALL DISP + RET + ; + ;PLAY +PLAY: LD A,0FBH + OUT (PPIA),A + CALL DEL6 + LD A,0FFH + OUT (PPIA),A + RET + +FR: LD A,0FEH +FR1: OUT (PPIA),A + CALL DEL6 + LD A,0FFH + OUT (PPIA),A + IN A,(PPIC) + RES 5,A + OUT (PPIC),A + RET + ; + ;TIMING DEL +DM1: PUSH AF +DM1A: XOR A +DM1B: DEC A + JR NZ,DM1B + DEC BC + LD A,B + OR C + JR NZ,DM1A + POP AF + POP BC + RET + +DEL6: PUSH BC + LD BC,RDINF + JR DM1 + +DEL1M: PUSH BC + LD BC,060FH + JR DM1 + ; + ;TAPE DELAY TIMING + ; + ; +DLY2: LD A,031H +DLY2A: DEC A + JP NZ,DLY2A + RET + +LDMSG: LD HL,MES1 + LD E,000H + LD C,00EH + JR DISP + +DISP2: LD A,0D3H + OUT (PIOA),A + JR DISP1 + +BOOTER: LD HL,MES8 + LD E,00AH + LD C,00DH +DISP: LD A,0D3H + OUT (PIOA),A + EXX + LD HL,0D000H + LD A,CR +DISP3: LD (HL),000H + INC HL + CP H + JR NZ,DISP3 + EXX +DISP1: XOR A + LD B,A + LD D,0D0H + LDIR + LD A,013H + OUT (PIOA),A + RET + + ; +MES1: DB "IPL is loading" +MES3: DB "IPL is looking for a program" +MES6: DB "Make ready CMT" +MES8: DB "Loading error" +MES9: DB "Make ready FD" +MES10: DB "Press F or C" +MES11: DB "F:Floppy disk " +MES12: DB "C:Cassette tape" +MES13: DB "Drive No? (1-4)" +MES14: DB "This disk is not master " +MES15: DB "Pressing S key starts the CMT" +MES16: DB "File mode error" + ; +IPLMC: DB 01H + DB "IPLPRO" + + ; + ; + ;FD +FD: LD IX,IBUFE + XOR A + LD (0CF1EH),A + LD (0CF1FH),A + LD IY,SUMDT + LD HL,0100H + LD (IY+002H),L + LD (IY+003H),H + CALL BREAD ;INFORMATION INPUT + LD HL,IBUFE ;MASTER CHECK + LD DE,IPLMC + LD B,006H +MCHECK: LD C,(HL) + LD A,(DE) + CP C + JP NZ,NMASTE + INC HL + INC DE + DJNZ MCHECK + CALL LDMSG + LD HL,0CF07H + LD E,010H + LD C,00AH + CALL DISP2 + LD IX,IBADR2 + LD HL,(0CF14H) + LD (IY+002H),L + LD (IY+003H),H + CALL BREAD + CALL MOFF + JP NST + +NODISK: LD HL,MES9 + LD E,00AH + LD C,00DH + CALL DISP + JP ERR1 + ; + ; READY CHECK + ; +READY: LD A,(MTFG) + RRCA + CALL NC,MTON + LD A,(DRINO) ;DRIVE NO GET + OR 084H + OUT (DM),A ;DRIVE SELECT MOTON + XOR A + CALL DLY60M + LD HL,L0000 +REDY0: DEC HL + LD A,H + OR L + JR Z,NODISK + RET C + RET C + CPL + RLCA + JR C,REDY0 + LD A,(DRINO) + LD C,A + LD HL,CLBF0 + LD B,000H + ADD HL,BC + BIT 0,(HL) + RET NZ + CALL RCLB + SET 0,(HL) + RET + ; + ; MOTOR ON + ; +MTON: LD A,080H + OUT (DM),A + LD B,00AH ;1SEC DELAY +MTD1: LD HL,03C19H +MTD2: DEC HL + LD A,L + OR H + JR NZ,MTD2 + DJNZ MTD1 + LD A,001H + LD (MTFG),A + RET + ; + ; Track SEEK + ; +SEEK: LD A,01BH + CPL + OUT (CR),A + CALL BUSY + CALL DLY60M + IN A,(CR) + CPL + AND 099H + RET + ; + ;MOTOR OFF + ; +MOFF: CALL DLY1M + XOR A + OUT (DM),A + LD (CLBF0),A + LD (CLBF1),A + LD (CLBF2),A + LD (CLBF3),A + LD (MTFG),A + RET + ; + ; RECALIBRATION + ; +RCLB: PUSH HL + LD A,00BH + CPL + OUT (CR),A + CALL BUSY + CALL DLY60M + IN A,(CR) + CPL + AND 085H + XOR 004H + POP HL + RET Z + JP ERR + ; + ; BUSY AND WAIT + ; +BUSY: PUSH DE + PUSH HL + CALL DLY80U + LD E,007H +BUSY2: LD HL,L0000 +BUSY0: DEC HL + LD A,H + OR L + JR Z,BUSY1 + IN A,(CR) + CPL + RRCA + JR C,BUSY0 + POP HL + POP DE + RET + +BUSY1: DEC E + JR NZ,BUSY2 + JP ERR + ; + ; DATA CHECK + ; +CONVRT: LD B,000H + LD DE,0010H + LD HL,(0CF1EH) + XOR A +TRANS: SBC HL,DE + JR C,TRANS1 + INC B + JR TRANS + +TRANS1: ADD HL,DE + LD H,B + INC L + LD (IY+004H),H + LD (IY+005H),L +DCHK: LD A,(DRINO) + CP 004H + JR NC,DTCK1 + LD A,(IY+004H) + CP 046H + JR NC,DTCK1 + LD A,(IY+005H) + OR A + JR Z,DTCK1 + CP 011H + JR NC,DTCK1 + LD A,(IY+002H) + OR (IY+003H) + RET NZ +DTCK1: JP ERR + ; + ; SEQUENTIAL READ + ; +BREAD: DI + CALL CONVRT + LD A,00AH + LD (RETRY),A +READ1: CALL READY + LD D,(IY+003H) + LD A,(IY+002H) + OR A + JR Z,RE0 + INC D +RE0: LD A,(IY+005H) + LD (IY+001H),A + LD A,(IY+004H) + LD (IY+000H),A + PUSH IX + POP HL +RE8: SRL A + CPL + OUT (DR),A + JR NC,RE1 + LD A,001H + JR RE2 + +RE1: LD A,000H +RE2: CPL + OUT (HS),A + CALL SEEK + JR NZ,REE + LD C,DR + LD A,(IY+000H) + SRL A + CPL + OUT (TR),A + LD A,(IY+001H) + CPL + OUT (SCR),A + EXX + LD HL,RE3 + PUSH HL + EXX + LD A,094H + CPL + OUT (CR),A + CALL WAIT +RE6: LD B,000H +RE4: IN A,(CR) + RRCA + RET C + RRCA + JR C,RE4 + INI + JR NZ,RE4 + INC (IY+001H) + LD A,(IY+001H) + CP 011H + JR Z,RETS + DEC D + JR NZ,RE6 + JR RE5 + +RETS: DEC D +RE5: LD A,CR + CPL + OUT (CR),A + CALL BUSY +RE3: IN A,(CR) + CPL + AND 0FFH + JR NZ,REE + EXX + POP HL + EXX + LD A,(IY+001H) + CP 011H + JR NZ,REX + LD A,001H + LD (IY+001H),A + INC (IY+000H) +REX: LD A,D + OR A + JR NZ,RE7 + LD A,080H + OUT (DM),A + RET + +RE7: LD A,(IY+000H) + JR RE8 + +REE: LD A,(RETRY) + DEC A + LD (RETRY),A + JR Z,ERR + CALL RCLB + JP READ1 + ; + ; WAIT AND BUSY OFF + ; +WAIT: PUSH DE + PUSH HL + CALL DLY80U + LD E,008H +WAIT2: LD HL,L0000 +WAIT0: DEC HL + LD A,H + OR L + JR Z,WAIT1 + IN A,(CR) + CPL + RRCA + JR NC,WAIT0 + POP HL + POP DE + RET + +WAIT1: DEC E + JR NZ,WAIT2 + JR ERR + +NMASTE: LD HL,MES14 + LD E,007H + LD C,01BH + CALL DISP + JR ERR1 + ; + ; ; + ; ERRROR OR BREAK ; + ; ; + ; +ERR: CALL BOOTER +ERR1: CALL MOFF + LD SP,SUMDT +TRYAG: CALL FDCC + JR NZ,TRYAG3 + LD HL,MES10 + LD E,05AH + LD C,00CH + CALL DISP2 + LD E,0ABH + LD C,011H + CALL DISP2 + LD E,0D3H + LD C,00FH + CALL DISP2 +TRYAG1: CALL KEYS1 + BIT 3,A + JP Z,CMT + BIT 6,A + JR Z,DNO + JR TRYAG1 + +DNO: LD HL,MES13 + LD E,00AH + LD C,00FH + CALL DISP +DNO10: LD D,012H + CALL DNO0 + JR NC,DNO3 + LD D,018H + CALL DNO0 + JR NC,DNO3 + JR DNO10 + +DNO3: LD A,B + LD (DRINO),A + JP FD + +TRYAG3: LD HL,MES15 + LD E,054H + LD C,01DH + CALL DISP2 +TRYAG4: LD B,006H +TRYAG5: CALL KEYS + BIT 3,A + JP Z,CMT + JR TRYAG5 + +DNO0: IN A,(PIOA) + AND 0F0H + OR D + OUT (PIOA),A + IN A,(PIOB) + LD B,000H + LD C,004H + RRCA +DNO1: RRCA + RET NC + INC B + DEC C + JR NZ,DNO1 + RET + ; + ; TIME DELAY (1M &60M &80U ) + ; +DLY80U: PUSH DE + LD DE,000DH + JP DLYT + +DLY1M: PUSH DE + LD DE,L0082 + JP DLYT + +DLY60M: PUSH DE + LD DE,01A2CH +DLYT: DEC DE + LD A,E + OR D + JR NZ,DLYT + POP DE + RET + ; + ; + ; ; + ; INTRAM EXROM ; + ; ; + ; +EXROMT: LD HL,IBADR2 + LD IX,EROM1 + JR SEROMA + +EROM1: IN A,(0F9H) + CP 000H + JP NZ,NKIN + LD IX,EROM2 +ERMT1: JR SEROMA + +EROM2: IN A,(0F9H) + LD (HL),A + INC HL + LD A,L + OR H + JR NZ,ERMT1 + OUT (0F8H),A + JP NST + +SEROMA: LD A,H + OUT (0F8H),A + LD A,L + OUT (0F9H),A + LD D,004H +SEROMD: DEC D + JR NZ,SEROMD + JP (IX) + diff --git a/software/dis/MZ2000_IPL/mz2000_ipl.ini b/software/dis/MZ2000_IPL/mz2000_ipl.ini new file mode 100644 index 0000000..b16c60e --- /dev/null +++ b/software/dis/MZ2000_IPL/mz2000_ipl.ini @@ -0,0 +1,264 @@ +---------------------------------------- +-- dZ80 configuration file +---------------------------------------- + +---------------------------------------- +-- Disassembly control +---------------------------------------- + +cpu="z80" +inputfile="mz2000_ipl.rom" +outputfile="mz2000_ipl.asm" +--fileheadersize=27 +filebaseaddr=0 +disstart=0 +disend=1606 +--quiet=0 +labelledoutput=1 + +---------------------------------------- +-- Layout +---------------------------------------- + +labelreference=1 +addresscolumn=1 +opcodecolumn=1 +relativejumpcomment=1 +uppercase=1 +autoblanklines=1 +db="db" +comment="; " +radix=16 +numprefix="0" +numsuffix="H" + +---------------------------------------- +-- Scripts +---------------------------------------- + +--script="scripts\\spectrum.lua" + +---------------------------------------- +-- References +---------------------------------------- + +referencefile="mz2000_ipl.ref" +inportreference=1 +outportreference=1 +addressreference=1 +indirectaddressreference=1 +limitreferences=1 + +---------------------------------------- +-- Opcode mapfile and code/data areas +---------------------------------------- + +--opmapfile="mayhem.map" + +-- Code Region isnt required as v2.x sets the entire region to code unless a data region overrides it. +d_SetCodeRegion(0, 1606) + +-- Set the known data regions, either as a data region (byte), word or string. The type affects the assembly output definitions and word +-- regions will attempt to map to an address, ie. jump tables will be setup with labels rather than constants. +d_SetDataRegion( hex("0289"), 218) + +d_SetStringRegion( hex("0289"), 13) +d_SetStringRegion( hex("0297"), 27) +d_SetStringRegion( hex("02B3"), 13) +d_SetStringRegion( hex("02C1"), 12) +d_SetStringRegion( hex("02CE"), 12) +d_SetStringRegion( hex("02DB"), 11) +d_SetStringRegion( hex("02E7"), 31) +d_SetStringRegion( hex("0307"), 14) +d_SetStringRegion( hex("0316"), 22) +d_SetStringRegion( hex("032D"), 3) +d_SetStringRegion( hex("0331"), 28) +d_SetStringRegion( hex("034E"), 14) +d_SetStringRegion( hex("035D"), 7) + +-- Create a mapping table of known Sharp I/O ports and 8 bit constants. +-- +-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address. +--d_SetByteEquate(hex("FE") , 1, "PRTC" ) +--d_SetByteEquate(hex("FF") , 1, "PRTD" ) + +-- Create a mapping table of known Sharp MZ BIOS/Memory Mapped Hardware addresses which dz80 +-- can use to replace an address with the label. The EQU list will also be output at the start +-- of the disassembly file so it can compile. +-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address. +d_SetWordEquate(hex("0002"), 1, "NST" ) +d_SetWordEquate(hex("0006"), 1, "START" ) + +d_SetWordEquate(hex("0036"), 1, "CLEAR" ) +d_SetWordEquate(hex("0060"), 1, "KEYIN" ) +d_SetWordEquate(hex("008C"), 1, "KEYS1" ) +d_SetWordEquate(hex("008E"), 1, "KEYS" ) +d_SetWordEquate(hex("0098"), 1, "NKIN" ) +d_SetWordEquate(hex("00A0"), 1, "FDCC" ) +d_SetWordEquate(hex("0364"), 1, "FD" ) +d_SetWordEquate(hex("00AC"), 1, "CMT" ) +d_SetWordEquate(hex("00CE"), 1, "ST1" ) +d_SetWordEquate(hex("00D9"), 1, "MISMCH" ) +d_SetWordEquate(hex("026D"), 1, "DISP" ) +d_SetWordEquate(hex("01F6"), 1, "MSTOP" ) +d_SetWordEquate(hex("00E9"), 1, "RDINF" ) +d_SetWordEquate(hex("00F8"), 1, "RD1" ) +d_SetWordEquate(hex("01C7"), 1, "MOTOR" ) +d_SetWordEquate(hex("0193"), 1, "TMARK" ) +d_SetWordEquate(hex("010B"), 1, "STPEIR" ) +d_SetWordEquate(hex("010E"), 1, "EIRTN" ) +d_SetWordEquate(hex("0110"), 1, "RDDAT" ) +d_SetWordEquate(hex("011C"), 1, "RTAPE" ) +d_SetWordEquate(hex("0121"), 1, "RTP2" ) +d_SetWordEquate(hex("01BB"), 1, "SPDIN" ) +d_SetWordEquate(hex("015E"), 1, "TRTN1" ) +d_SetWordEquate(hex("0121"), 1, "RTP2" ) +d_SetWordEquate(hex("0133"), 1, "RTP3" ) +d_SetWordEquate(hex("0173"), 1, "RBYTE" ) +d_SetWordEquate(hex("0154"), 1, "RTP5" ) +d_SetWordEquate(hex("015A"), 1, "RTP6" ) +d_SetWordEquate(hex("0266"), 1, "BOOTER" ) +d_SetWordEquate(hex("0162"), 1, "EDGE" ) +d_SetWordEquate(hex("0177"), 1, "RBY1" ) +d_SetWordEquate(hex("0188"), 1, "RBY2" ) +d_SetWordEquate(hex("0191"), 1, "RBY3" ) +d_SetWordEquate(hex("019C"), 1, "TM0" ) +d_SetWordEquate(hex("019F"), 1, "TM1" ) +d_SetWordEquate(hex("01A2"), 1, "TM2" ) +d_SetWordEquate(hex("01AC"), 1, "TM3" ) +d_SetWordEquate(hex("01DD"), 1, "MOT1" ) +d_SetWordEquate(hex("01EF"), 1, "MOTRD" ) +d_SetWordEquate(hex("01F2"), 1, "MOTR" ) +d_SetWordEquate(hex("0202"), 1, "OPEN" ) +d_SetWordEquate(hex("020E"), 1, "KYEMES" ) +d_SetWordEquate(hex("0219"), 1, "PLAY" ) +d_SetWordEquate(hex("0237"), 1, "DM1" ) +d_SetWordEquate(hex("0238"), 1, "DM1A" ) +d_SetWordEquate(hex("0239"), 1, "DM1B" ) +d_SetWordEquate(hex("0244"), 1, "DEL6" ) +d_SetWordEquate(hex("024A"), 1, "DEL1M" ) +d_SetWordEquate(hex("0250"), 1, "DLY2" ) +d_SetWordEquate(hex("0252"), 1, "DLY2A" ) +d_SetWordEquate(hex("0257"), 1, "LDMSG" ) +d_SetWordEquate(hex("027E"), 1, "DISP1" ) +d_SetWordEquate(hex("0260"), 1, "DISP2" ) +d_SetWordEquate(hex("0277"), 1, "DISP3" ) +d_SetWordEquate(hex("0289"), 1, "MES1" ) +d_SetWordEquate(hex("0297"), 1, "MES3" ) +d_SetWordEquate(hex("02B3"), 1, "MES6" ) +d_SetWordEquate(hex("02C1"), 1, "MES8" ) +d_SetWordEquate(hex("02CE"), 1, "MES9" ) +d_SetWordEquate(hex("02DB"), 1, "MES10" ) +d_SetWordEquate(hex("0307"), 1, "MES13" ) +d_SetWordEquate(hex("0316"), 1, "MES14" ) +d_SetWordEquate(hex("034E"), 1, "MES16" ) +d_SetWordEquate(hex("035D"), 1, "IPLMC" ) +d_SetWordEquate(hex("0387"), 1, "MCHECK" ) +d_SetWordEquate(hex("03B4"), 1, "NODISK" ) +d_SetWordEquate(hex("03C1"), 1, "READY" ) +d_SetWordEquate(hex("03D6"), 1, "REDY0" ) +d_SetWordEquate(hex("03F4"), 1, "MTON" ) +d_SetWordEquate(hex("03FA"), 1, "MTD1" ) +d_SetWordEquate(hex("03FD"), 1, "MTD2" ) +d_SetWordEquate(hex("040A"), 1, "SEEK" ) +d_SetWordEquate(hex("041B"), 1, "MOFF" ) +d_SetWordEquate(hex("0431"), 1, "RCLB" ) +d_SetWordEquate(hex("0449"), 1, "BUSY" ) +d_SetWordEquate(hex("0450"), 1, "BUSY2" ) +d_SetWordEquate(hex("0453"), 1, "BUSY0" ) +d_SetWordEquate(hex("0461"), 1, "BUSY1" ) +d_SetWordEquate(hex("0467"), 1, "CONVRT" ) +d_SetWordEquate(hex("0470"), 1, "TRANS" ) +d_SetWordEquate(hex("0477"), 1, "TRANS1" ) +d_SetWordEquate(hex("0480"), 1, "DCHK" ) +d_SetWordEquate(hex("049F"), 1, "DTCK1" ) +d_SetWordEquate(hex("04A2"), 1, "BREAD" ) +d_SetWordEquate(hex("04AB"), 1, "READ1" ) +d_SetWordEquate(hex("04B8"), 1, "RE0" ) +d_SetWordEquate(hex("04C7"), 1, "RE8" ) +d_SetWordEquate(hex("04D2"), 1, "RE1" ) +d_SetWordEquate(hex("04D4"), 1, "RE2" ) +d_SetWordEquate(hex("04FA"), 1, "RE6" ) +d_SetWordEquate(hex("04FC"), 1, "RE4" ) +d_SetWordEquate(hex("0516"), 1, "RETS" ) +d_SetWordEquate(hex("0517"), 1, "RE5" ) +d_SetWordEquate(hex("051F"), 1, "RE3" ) +d_SetWordEquate(hex("0538"), 1, "REX" ) +d_SetWordEquate(hex("0541"), 1, "RE7" ) +d_SetWordEquate(hex("0546"), 1, "REE" ) +d_SetWordEquate(hex("0555"), 1, "WAIT" ) +d_SetWordEquate(hex("055C"), 1, "WAIT2" ) +d_SetWordEquate(hex("055F"), 1, "WAIT0" ) +d_SetWordEquate(hex("056D"), 1, "WAIT1" ) +d_SetWordEquate(hex("0572"), 1, "NMASTE" ) +d_SetWordEquate(hex("057E"), 1, "ERR" ) +d_SetWordEquate(hex("0581"), 1, "ERR1" ) +d_SetWordEquate(hex("0583"), 1, "TRYAG2" ) +d_SetWordEquate(hex("0587"), 1, "TRYAG" ) +d_SetWordEquate(hex("05A4"), 1, "TRYAG1" ) +d_SetWordEquate(hex("05B2"), 1, "DNO" ) +d_SetWordEquate(hex("05BC"), 1, "DNO10" ) +d_SetWordEquate(hex("05CC"), 1, "DNO3" ) +d_SetWordEquate(hex("05D3"), 1, "TRYAG3" ) +d_SetWordEquate(hex("05DD"), 1, "TRYAG4" ) +d_SetWordEquate(hex("05DF"), 1, "TRYAG5" ) +d_SetWordEquate(hex("0331"), 1, "MES15" ) +d_SetWordEquate(hex("05E9"), 1, "DNO0" ) +d_SetWordEquate(hex("05F7"), 1, "DNO1" ) +d_SetWordEquate(hex("05FE"), 1, "DLY80U" ) +d_SetWordEquate(hex("0605"), 1, "DLY1M" ) +d_SetWordEquate(hex("060C"), 1, "DLY60M" ) +d_SetWordEquate(hex("0610"), 1, "DLYT" ) +d_SetWordEquate(hex("0617"), 1, "EXROMT" ) +d_SetWordEquate(hex("0620"), 1, "EROM1" ) +d_SetWordEquate(hex("062B"), 1, "ERMT1" ) +d_SetWordEquate(hex("062D"), 1, "EROM2" ) +d_SetWordEquate(hex("063A"), 1, "SEROMA" ) +d_SetWordEquate(hex("0642"), 1, "SEROMD" ) + +d_SetWordEquate(hex("CF00"), 1, "IBUFE" ) +d_SetWordEquate(hex("CF00"), 1, "ATRB" ) +d_SetWordEquate(hex("CF01"), 1, "NAME" ) +d_SetWordEquate(hex("CF12"), 1, "SIZE" ) +d_SetWordEquate(hex("CF14"), 1, "DTADR" ) +d_SetWordEquate(hex("FFE0"), 1, "SUMDT" ) +d_SetWordEquate(hex("FFE2"), 1, "TMCNT" ) +d_SetWordEquate(hex("CF00"), 1, "IBADR1" ) +d_SetWordEquate(hex("8000"), 1, "IBADR2" ) +d_SetWordEquate(hex("FFE0"), 1, "NTRACK" ) +d_SetWordEquate(hex("FFE1"), 1, "NSECT" ) +d_SetWordEquate(hex("FFE2"), 1, "BSIZE" ) +d_SetWordEquate(hex("FFE4"), 1, "STTR" ) +d_SetWordEquate(hex("FFE5"), 1, "STSE" ) +d_SetWordEquate(hex("FFE6"), 1, "MTFG" ) +d_SetWordEquate(hex("FFE7"), 1, "CLBF0" ) +d_SetWordEquate(hex("FFE8"), 1, "CLBF1" ) +d_SetWordEquate(hex("FFE9"), 1, "CLBF2" ) +d_SetWordEquate(hex("FFEA"), 1, "CLBF3" ) +d_SetWordEquate(hex("FFEB"), 1, "RETRY" ) +d_SetWordEquate(hex("FFEC"), 1, "DRINO" ) +d_SetByteEquate(hex("D8"), 1, "CR" ) +d_SetByteEquate(hex("D9"), 1, "TR" ) +d_SetByteEquate(hex("DA"), 1, "SCR" ) +d_SetByteEquate(hex("DB"), 1, "DR" ) +d_SetByteEquate(hex("DC"), 1, "DM" ) +d_SetByteEquate(hex("DD"), 1, "HS" ) +d_SetByteEquate(hex("E0"), 1, "PPIA" ) +d_SetByteEquate(hex("E1"), 1, "PPIB" ) +d_SetByteEquate(hex("E2"), 1, "PPIC" ) +d_SetByteEquate(hex("E3"), 1, "PPICTL" ) +d_SetByteEquate(hex("E8"), 1, "PIOA" ) +d_SetByteEquate(hex("E9"), 1, "PIOCTLA" ) +d_SetByteEquate(hex("EA"), 1, "PIOB" ) +d_SetByteEquate(hex("EB"), 1, "PIOCTLB" ) +d_SetByteEquate(hex("F4"), 1, "GRPHCTL" ) + +-- Comments to be added at fixed addresses. +d_SetComment( hex("1250"), "Sharp defined BASIC restart location from Monitor." ) +d_SetComment( hex("5B55"), "Relocated to 0x3302 for 0x5B bytes." ) +d_SetComment( hex("5BB0"), "Relocated to 0x4806 for 0xF8 bytes." ) +d_SetComment( hex("5CA8"), "End of Relocated code." ) + +---------------------------------------- +-- End of configuration file +---------------------------------------- diff --git a/software/dis/MZ2000_IPL/mz2000_ipl.ref b/software/dis/MZ2000_IPL/mz2000_ipl.ref new file mode 100644 index 0000000..04d8f3d --- /dev/null +++ b/software/dis/MZ2000_IPL/mz2000_ipl.ref @@ -0,0 +1,466 @@ +dZ80 2.1 Reference file from the disassembly of "mz2000_ipl.rom". + +Input Port Reference (22 entries) +--------------------------------- + +Input Port 000d8H. 6 references: +-------------------------------- + + 00415H: IN A,(0D8H) + 0043dH: IN A,(0D8H) + 00458H: IN A,(0D8H) + 004fcH: IN A,(0D8H) + 0051fH: IN A,(0D8H) + 00564H: IN A,(0D8H) + +Input Port 000d9H. 1 references: +-------------------------------- + + 000a8H: IN A,(0D9H) + +Input Port 000e1H. 5 references: +-------------------------------- + + 00162H: IN A,(0E1H) + 0016aH: IN A,(0E1H) + 001c2H: IN A,(0E1H) + 001caH: IN A,(0E1H) + 001e3H: IN A,(0E1H) + +Input Port 000e2H. 2 references: +-------------------------------- + + 000eaH: IN A,(0E2H) + 00230H: IN A,(0E2H) + +Input Port 000e8H. 3 references: +-------------------------------- + + 00072H: IN A,(0E8H) + 0008eH: IN A,(0E8H) + 005e9H: IN A,(0E8H) + +Input Port 000eaH. 3 references: +-------------------------------- + + 00095H: IN A,(0EAH) + 001ddH: IN A,(0EAH) + 005f0H: IN A,(0EAH) + +Input Port 000f9H. 2 references: +-------------------------------- + + 00620H: IN A,(0F9H) + 0062dH: IN A,(0F9H) + + +Output Port Reference (50 entries) +---------------------------------- + +Output Port 000d8H. 4 references: +--------------------------------- + + 0040dH: OUT (0D8H),A + 00435H: OUT (0D8H),A + 004f5H: OUT (0D8H),A + 0051aH: OUT (0D8H),A + +Output Port 000d9H. 2 references: +--------------------------------- + + 000a3H: OUT (0D9H),A + 004e4H: OUT (0D9H),A + +Output Port 000daH. 1 references: +--------------------------------- + + 004eaH: OUT (0DAH),A + +Output Port 000dbH. 1 references: +--------------------------------- + + 004caH: OUT (0DBH),A + +Output Port 000dcH. 4 references: +--------------------------------- + + 003cdH: OUT (0DCH),A + 003f6H: OUT (0DCH),A + 0041fH: OUT (0DCH),A + 0053eH: OUT (0DCH),A + +Output Port 000ddH. 1 references: +--------------------------------- + + 004d5H: OUT (0DDH),A + +Output Port 000e0H. 8 references: +--------------------------------- + + 00013H: OUT (0E0H),A + 0003eH: OUT (0E0H),A + 001f8H: OUT (0E0H),A + 001ffH: OUT (0E0H),A + 0021bH: OUT (0E0H),A + 00222H: OUT (0E0H),A + 00227H: OUT (0E0H),A + 0022eH: OUT (0E0H),A + +Output Port 000e2H. 3 references: +--------------------------------- + + 0000cH: OUT (0E2H),A + 000eeH: OUT (0E2H),A + 00234H: OUT (0E2H),A + +Output Port 000e3H. 4 references: +--------------------------------- + + 00004H: OUT (0E3H),A + 00008H: OUT (0E3H),A + 00204H: OUT (0E3H),A + 0020bH: OUT (0E3H),A + +Output Port 000e8H. 9 references: +--------------------------------- + + 0002fH: OUT (0E8H),A + 00057H: OUT (0E8H),A + 00078H: OUT (0E8H),A + 00088H: OUT (0E8H),A + 00093H: OUT (0E8H),A + 00262H: OUT (0E8H),A + 0026fH: OUT (0E8H),A + 00286H: OUT (0E8H),A + 005eeH: OUT (0E8H),A + +Output Port 000e9H. 1 references: +--------------------------------- + + 00017H: OUT (0E9H),A + +Output Port 000ebH. 2 references: +--------------------------------- + + 0001bH: OUT (0EBH),A + 0001fH: OUT (0EBH),A + +Output Port 000f4H. 1 references: +--------------------------------- + + 00024H: OUT (0F4H),A + +Output Port 000f5H. 1 references: +--------------------------------- + + 0002bH: OUT (0F5H),A + +Output Port 000f6H. 1 references: +--------------------------------- + + 00022H: OUT (0F6H),A + +Output Port 000f7H. 4 references: +--------------------------------- + + 00027H: OUT (0F7H),A + 00042H: OUT (0F7H),A + 00049H: OUT (0F7H),A + 00050H: OUT (0F7H),A + +Output Port 000f8H. 2 references: +--------------------------------- + + 00635H: OUT (0F8H),A + 0063bH: OUT (0F8H),A + +Output Port 000f9H. 1 references: +--------------------------------- + + 0063eH: OUT (0F9H),A + + +Direct address Reference (47 entries) +------------------------------------- + +Direct address 00000H. 4 references: +------------------------------------ + + 00129H: LD HL,00000H + 003d3H: LD HL,00000H + 00450H: LD HL,00000H + 0055cH: LD HL,00000H + +Direct address 0000dH. 1 references: +------------------------------------ + + 005ffH: LD DE,0000DH + +Direct address 00010H. 1 references: +------------------------------------ + + 00469H: LD DE,00010H + +Direct address 00080H. 1 references: +------------------------------------ + + 000f2H: LD BC,00080H + +Direct address 00082H. 1 references: +------------------------------------ + + 00606H: LD DE,00082H + +Direct address 000e9H. 1 references: +------------------------------------ + + 00245H: LD BC,000E9H + +Direct address 00100H. 1 references: +------------------------------------ + + 00373H: LD HL,00100H + +Direct address 00289H. 1 references: +------------------------------------ + + 00257H: LD HL,00289H + +Direct address 00297H. 1 references: +------------------------------------ + + 0020eH: LD HL,00297H + +Direct address 002b3H. 1 references: +------------------------------------ + + 001d0H: LD HL,002B3H + +Direct address 002c1H. 1 references: +------------------------------------ + + 00266H: LD HL,002C1H + +Direct address 002ceH. 1 references: +------------------------------------ + + 003b4H: LD HL,002CEH + +Direct address 002dbH. 1 references: +------------------------------------ + + 0058cH: LD HL,002DBH + +Direct address 00307H. 1 references: +------------------------------------ + + 005b2H: LD HL,00307H + +Direct address 00316H. 1 references: +------------------------------------ + + 00572H: LD HL,00316H + +Direct address 00331H. 1 references: +------------------------------------ + + 005d3H: LD HL,00331H + +Direct address 0034eH. 1 references: +------------------------------------ + + 000d9H: LD HL,0034EH + +Direct address 0035dH. 1 references: +------------------------------------ + + 00382H: LD DE,0035DH + +Direct address 0051fH. 1 references: +------------------------------------ + + 004edH: LD HL,0051FH + +Direct address 0060fH. 1 references: +------------------------------------ + + 0024bH: LD BC,0060FH + +Direct address 00620H. 1 references: +------------------------------------ + + 0061aH: LD IX,00620H + +Direct address 0062dH. 1 references: +------------------------------------ + + 00627H: LD IX,0062DH + +Direct address 00800H. 1 references: +------------------------------------ + + 00174H: LD HL,00800H + +Direct address 01414H. 1 references: +------------------------------------ + + 00194H: LD HL,01414H + +Direct address 01a2cH. 1 references: +------------------------------------ + + 0060dH: LD DE,01A2CH + +Direct address 03c19H. 1 references: +------------------------------------ + + 003faH: LD HL,03C19H + +Direct address 03e7fH. 1 references: +------------------------------------ + + 0007fH: LD BC,03E7FH + +Direct address 08000H. 3 references: +------------------------------------ + + 00117H: LD HL,08000H + 0039eH: LD IX,08000H + 00617H: LD HL,08000H + +Direct address 0c000H. 1 references: +------------------------------------ + + 0006eH: LD HL,0C000H + +Direct address 0c001H. 1 references: +------------------------------------ + + 0007aH: LD DE,0C001H + +Direct address 0cf00H. 3 references: +------------------------------------ + + 000f5H: LD HL,0CF00H + 00364H: LD IX,0CF00H + 0037fH: LD HL,0CF00H + +Direct address 0cf01H. 1 references: +------------------------------------ + + 000baH: LD HL,0CF01H + +Direct address 0cf07H. 1 references: +------------------------------------ + + 00394H: LD HL,0CF07H + +Direct address 0cf12H. 1 references: +------------------------------------ + + 00113H: LD BC,(0CF12H) + +Direct address 0d000H. 2 references: +------------------------------------ + + 00031H: LD HL,0D000H + 00272H: LD HL,0D000H + +Direct address 0ffe0H. 3 references: +------------------------------------ + + 0000eH: LD SP,0FFE0H + 0036fH: LD IY,0FFE0H + 00584H: LD SP,0FFE0H + +Direct address 0ffe7H. 1 references: +------------------------------------ + + 003e5H: LD HL,0FFE7H + + +Indirect address Reference (27 entries) +--------------------------------------- + +Indirect address 0cf00H. 1 references: +-------------------------------------- + + 000c4H: LD A,(0CF00H) + +Indirect address 0cf14H. 1 references: +-------------------------------------- + + 003a2H: LD HL,(0CF14H) + +Indirect address 0cf1eH. 2 references: +-------------------------------------- + + 00369H: LD (0CF1EH),A + 0046cH: LD HL,(0CF1EH) + +Indirect address 0cf1fH. 1 references: +-------------------------------------- + + 0036cH: LD (0CF1FH),A + +Indirect address 0ffe0H. 4 references: +-------------------------------------- + + 0012cH: LD (0FFE0H),HL + 0013fH: LD HL,(0FFE0H) + 0017fH: LD HL,(0FFE0H) + 00183H: LD (0FFE0H),HL + +Indirect address 0ffe2H. 2 references: +-------------------------------------- + + 0019cH: LD (0FFE2H),HL + 0019fH: LD HL,(0FFE2H) + +Indirect address 0ffe6H. 4 references: +-------------------------------------- + + 0005dH: LD (0FFE6H),A + 003c1H: LD A,(0FFE6H) + 00406H: LD (0FFE6H),A + 0042dH: LD (0FFE6H),A + +Indirect address 0ffe7H. 1 references: +-------------------------------------- + + 00421H: LD (0FFE7H),A + +Indirect address 0ffe8H. 1 references: +-------------------------------------- + + 00424H: LD (0FFE8H),A + +Indirect address 0ffe9H. 1 references: +-------------------------------------- + + 00427H: LD (0FFE9H),A + +Indirect address 0ffeaH. 1 references: +-------------------------------------- + + 0042aH: LD (0FFEAH),A + +Indirect address 0ffebH. 3 references: +-------------------------------------- + + 004a8H: LD (0FFEBH),A + 00546H: LD A,(0FFEBH) + 0054aH: LD (0FFEBH),A + +Indirect address 0ffecH. 5 references: +-------------------------------------- + + 0005aH: LD (0FFECH),A + 003c8H: LD A,(0FFECH) + 003e1H: LD A,(0FFECH) + 00480H: LD A,(0FFECH) + 005cdH: LD (0FFECH),A + + +End of reference file for "mz2000_ipl.rom" + diff --git a/software/dis/MZ2000_IPL/mz2000_ipl.rom b/software/dis/MZ2000_IPL/mz2000_ipl.rom new file mode 100644 index 0000000..90e05c2 Binary files /dev/null and b/software/dis/MZ2000_IPL/mz2000_ipl.rom differ diff --git a/software/dis/SA-5510/SA-5510.asm b/software/dis/SA-5510/SA-5510.asm new file mode 100644 index 0000000..bd04394 --- /dev/null +++ b/software/dis/SA-5510/SA-5510.asm @@ -0,0 +1,7511 @@ +; Disassembly of the file "SA-5510.bin" +; +; CPU Type: Z80 +; +; Created with dZ80 2.1 +; +; on Saturday, 03 of April 2021 at 12:48 AM +; +PRTC EQU 0FEH +PRTD EQU 0FFH +GETL EQU 00003H +LETNL EQU 00006H +NL EQU 00009H +PRNTS EQU 0000CH +PRNTT EQU 0000FH +PRNT EQU 00012H +MSG EQU 00015H +MSGX EQU 00018H +GETKY EQU 0001BH +BRKEY EQU 0001EH +?WRI EQU 00021H +?WRD EQU 00024H +?RDI EQU 00027H +?RDD EQU 0002AH +?VRFY EQU 0002DH +MELDY EQU 00030H +?TMST EQU 00033H +TIMRD EQU 0003BH +BELL EQU 0003EH +XTEMP EQU 00041H +MSTA EQU 00044H +MSTP EQU 00047H +MONIT EQU 00000H +SS EQU 00089H +ST1 EQU 00095H +HLHEX EQU 00410H +_2HEX EQU 0041FH +?MODE EQU 0074DH +?KEY EQU 008CAH +PRNT3 EQU 0096CH +?ADCN EQU 00BB9H +?DACN EQU 00BCEH +?DSP EQU 00DB5H +?BLNK EQU 00DA6H +?DPCT EQU 00DDCH +PRTHL EQU 003BAH +PRTHX EQU 003C3H +ASC EQU 003DAH +HEX EQU 003F9H +DPCT EQU 00DDCH +DLY12 EQU 00DA7H +DLY12A EQU 00DAAH +?RSTR1 EQU 00EE6H +MOTOR EQU 006A3H +CKSUM EQU 0071AH +GAP EQU 0077AH +WTAPE EQU 00485H +MSTOP EQU 00700H +LINEBUFR EQU 0490DH +ATRB EQU 010F0H +NAME EQU 010F1H +SIZE EQU 01102H +DTADR EQU 01104H +EXADR EQU 01106H +COMNT EQU 01108H +SWPW EQU 01164H +KDATW EQU 0116EH +KANAF EQU 01170H +DSPXY EQU 01171H +MANG EQU 01173H +MANGE EQU 01179H +PBIAS EQU 0117AH +ROLTOP EQU 0117BH +MGPNT EQU 0117CH +PAGETP EQU 0117DH +ROLEND EQU 0117FH +FLASH EQU 0118EH +SFTLK EQU 0118FH +REVFLG EQU 01190H +SPAGE EQU 01191H +FLSDT EQU 01192H +STRGF EQU 01193H +DPRNT EQU 01194H +TMCNT EQU 01195H +SUMDT EQU 01197H +CSMDT EQU 01199H +AMPM EQU 0119BH +TIMFG EQU 0119CH +SWRK EQU 0119DH +TEMPW EQU 0119EH +ONTYO EQU 0119FH +OCTV EQU 011A0H +RATIO EQU 011A1H +BUFER EQU 011A3H +PRGSTART EQU 011FDH + + ORG PRGSTART + +TAPECOPY: JP L41EC + +COLDSTRT: LD HL,048FFH + LD D,0D0H +L1205: INC HL + LD A,H + CP D + JR Z,L1214 ; (+00aH) + LD A,PRTD + LD (HL),A + SUB (HL) + JR NZ,L1214 ; (+004H) + LD (HL),A + CP (HL) + JR Z,L1205 ; (-00fH) +L1214: LD (04908H),HL + LD (0490AH),HL + LD SP,HL + CALL BELL + XOR A + LD D,A + LD E,A + CALL ?TMST + CALL L132C + CALL L1313 + LD DE,TITLEMSG + CALL L1329 + LD DE,COPYRMSG + CALL L1329 + CALL L131E + CALL L1944 + LD BC,0000AH + CALL L184D + CALL L1841 + CALL MSGNL + LD DE,BYTESMSG + CALL MSGX +WARMSTRT: NOP + NOP +WARMSTRTMON:NOP ; Sharp defined BASIC restart location from Monitor. + NOP + NOP + NOP + NOP + NOP + NOP + NOP + LD SP,(0490AH) + LD DE,READYMSG + CALL MSGNL +L1262: LD HL,L12B8 + PUSH HL +L1266: LD HL,0504DH + CALL L19BA + CALL L19BA + CALL NL + LD DE,LINEBUFR + LD A,(L2A83) + OR A + JR Z,L1299 ; (+01eH) + LD HL,(L2A84) + PUSH HL + LD BC,(02A86H) + ADD HL,BC + JR C,L12A6 ; (+020H) + LD (L2A84),HL + POP HL + PUSH DE + CALL STRTONUM + EX DE,HL + LD (HL),020H + INC HL + LD (HL),00DH + EX DE,HL + POP DE + CALL MSGX +L1299: CALL L1338 + LD A,(DE) + CP 01BH + RET NZ + XOR A + LD (L2A83),A + JR L1299 ; (-00dH) + +L12A6: XOR A + LD (L2A83),A + JP SYNTAXERR + + CALL L1266 + LD A,(DE) + CP 00DH + RET Z + LD HL,(0490AH) + LD SP,HL +L12B8: CALL L146A + CALL L14F8 + LD HL,(04A10H) + LD A,L + OR H + JR NZ,L12D4 ; (+00fH) + LD HL,04A12H + LD (05051H),HL + CALL EXECNOTCHR + DB 00DH + DW L1B5F + JP L1262 + +L12D4: CALL L12DA + JP L1262 + +L12DA: CALL L145E + CALL L1459 + CALL L18B0 + RET PE + LD (DE),A + CALL Z,L1302 + LD A,(04A12H) + CP 00DH + RET Z + CALL L18B3 + DI + LD (DE),A + LD (04A0EH),HL + EX DE,HL + LD HL,04A0EH + CALL L18F2 + CALL L18A2 + JR L130C ; (+00aH) + +L1302: CALL L18F2 + EX DE,HL + CALL L1873 + CALL L1762 +L130C: CALL L19C3 + EX DE,HL + JP L18EA + +L1313: LD B,021H +L1315: LD A,0CFH + CALL PRNT + DJNZ L1315 ; (-007H) + JR L132C ; (+00eH) + +L131E: LD B,021H +L1320: LD A,0D7H + CALL PRNT + DJNZ L1320 ; (-007H) + JR L132C ; (+003H) + +L1329: CALL MSGX +L132C: CALL LETNL + JP LETNL + +MSGNL: CALL NL + JP MSGX + +L1338: CALL GETL + LD A,0C9H + CALL ?DPCT + LD A,000H + LD HL,SFTLK + LD (HL),A + RET + +TITLEMSG: DB " BASIC ",0A6H,0B0H,096H,092H,09DH,09EH,09DH,092H,096H,092H,09DH," SA-5510" + DB 00DH +COPYRMSG: DB " C",0B7H,09EH,0BDH,09DH,0A6H,097H,098H,096H," 1981 ",09AH,0BDH," SHARP C",0B7H,09DH,09EH,"." + DB 00DH +READYMSG: DB "R",092H,0A1H,09CH,0BDH + DB 00DH +ERRORMSG: DB "*E",09DH,09DH,0B7H,09DH + DB 00DH +INMSG: DB " ",0A6H,0B0H + DB 00DH +BREAKMSG: DB "*B",09DH,092H,0A1H,0A9H + DB 00DH +BYTESMSG: DB " B",0BDH,096H,092H,0A4H + DB 00DH +ERRCODE: DB 012H + DB 000H +L13A5: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +SYNTAXERR: DB 03EH + DB 001H + DB 001H +OVFLERR: DB 03EH + DB 002H + DB 001H +ILDATERR: DB 03EH + DB 003H + DB 001H +DATMISERR: DB 03EH + DB 004H + DB 001H +STRLENERR: DB 03EH + DB 005H + DB 001H +MEMERR: DB 03EH + DB 006H + DB 001H + DB 03EH + DB 007H + DB 001H +LINELENERR: DB 03EH + DB 008H + DB 001H +GOSUBERR: DB 03EH + DB 00AH + DB 001H +FORNEXTERR: DB 03EH + DB 00BH + DB 001H +FUNCERR: DB 03EH + DB 00CH + DB 001H +NEXTFORERR: DB 03EH + DB 00DH + DB 001H +RETGOSBERR: DB 03EH + DB 00EH + DB 001H +UNDEFFNERR: DB 03EH + DB 00FH + DB 001H +LINEERR: DB 03EH + DB 010H + DB 001H +CONTERR: DB 03EH + DB 011H + DB 001H +BADWRERR: DB 03EH + DB 012H + DB 001H +CMDSTMTERR: DB 03EH + DB 013H + DB 001H +READDATAERR:DB 03EH + DB 018H + DB 001H +OPENERR: DB 03EH + DB 02BH + DB 001H +UNKNWNERR: DB 03EH + DB 03CH + DB 001H +OUTFILEERR: DB 03EH + DB 03FH + DB 001H +PRTNRDYERR: DB 03EH + DB 041H + DB 001H +PRTHWERR: DB 03EH + DB 042H + DB 001H +PRTPAPERERR:DB 03EH + DB 043H + DB 001H +CHKSUMERR: DB 03EH + DB 046H + JR L1403 ; (+009H) + +L13FA: LD IY,L1400 + RET + + NOP +L1400: LD A,(013FFH) +L1403: LD (ERRCODE),A + CALL L1ABF + CALL L1AB8 + JR Z,L142A ; (+01cH) + LD HL,05056H + LD A,(HL) + CP 001H + JR NZ,L1421 ; (+00bH) + INC (HL) + LD HL,(0490AH) + LD SP,HL + LD HL,(05057H) + JP L1EAA + +L1421: CALL L1991 + CALL L1978 + CALL L199E +L142A: LD DE,ERRORMSG + CALL MSGNL + LD HL,(ERRCODE) + CALL L1453 + JR L143E ; (+006H) + +L1438: LD DE,BREAKMSG + CALL MSGNL +L143E: LD BC,WARMSTRT + PUSH BC + XOR A + LD (L2A83),A + CALL BELL + CALL L1AB8 + RET Z + LD DE,INMSG + CALL MSGX +L1453: CALL L1841 + JP MSGX + +L1459: XOR A + LD (L1463),A + RET + +L145E: XOR A + LD (05059H),A + RET + +L1463: NOP +L1464: SBC A,C + LD H,D + RET Z + RRCA + SUB B + LD H,D +L146A: LD HL,LINEBUFR + CALL L17F6 + LD (04A10H),DE + LD DE,04A12H + LD C,000H +L1479: CALL L1561 + RET Z + OR A + JP M,SYNTAXERR + DEC DE + PUSH HL + LD HL,L1479 + EX (SP),HL + CP 03FH + LD B,088H + JR Z,L1498 ; (+00bH) + DEC HL + PUSH DE + LD DE,CMDWORDTBL + CALL L14C7 + JR NZ,L14A8 ; (+011H) + POP DE +L1498: LD A,080H + CALL L14B3 + CP 084H + RET NC +L14A0: CALL L1595 + CP 03AH + RET Z + POP AF + RET + +L14A8: LD DE,UNUSEDTBL1 + CALL L14C7 + JR NZ,L14B9 ; (+009H) + POP DE + LD A,081H +L14B3: LD (DE),A + INC DE +L14B5: LD A,B + LD (DE),A + INC DE + RET + +L14B9: LD DE,OPERATORTBL + LD B,083H + CALL L14C9 + POP DE + JR Z,L14B5 ; (-00fH) + INC HL + INC DE + RET + +L14C7: LD B,080H +L14C9: PUSH HL +L14CA: CALL SKIPSPACE + OR A + JP M,L14F1 + EX DE,HL + CALL SKIPSPACE + EX DE,HL + SUB (HL) + INC HL + INC DE + JR Z,L14CA ; (-011H) + ADD A,080H + JR NZ,L14E2 ; (+003H) + INC SP + INC SP + RET + +L14E2: POP HL + DEC DE +L14E4: LD A,(DE) + INC DE + OR A + JR Z,L14EF ; (+006H) + JP P,L14E4 + INC B + JR L14C9 ; (-026H) + +L14EF: DEC A + RET + +L14F1: POP HL + CALL SKIPSPACE + DEC A + LD A,(HL) + RET + +L14F8: LD HL,(04A10H) + LD DE,LINEBUFR + LD C,0B2H + CALL L17FE + LD A,020H + LD (DE),A + INC DE + LD HL,04A12H +L150A: CALL L1561 + RET Z + SUB 080H + JR C,L150A ; (-008H) + DEC DE + DEC C + CP 003H + JR C,L1525 ; (+00dH) + SUB 002H + LD B,A + PUSH HL + LD HL,OPERATORTBL +L151F: CALL L1554 + POP HL + JR L150A ; (-01bH) + +L1525: EX AF,AF' + LD A,(HL) + INC HL + SUB 07FH + LD B,A + PUSH HL + EX AF,AF' + OR A + JR Z,L153D ; (+00dH) + LD HL,L151F + PUSH HL + LD HL,UNUSEDTBL1 + DEC A + RET Z + LD HL,UNUSEDTBL2 + RET + +L153D: PUSH BC + LD HL,CMDWORDTBL + CALL L1554 + POP AF + LD HL,L150A + EX (SP),HL + CP 004H + RET NC + JP L14A0 + +L154F: BIT 7,(HL) + INC HL + JR Z,L154F ; (-005H) +L1554: DJNZ L154F ; (-007H) +L1556: CALL L158A + ADD A,080H + JR NC,L1556 ; (-007H) + DEC DE + LD (DE),A + INC DE + RET + +L1561: CALL L158A + RET Z + CALL L1575 + JR Z,L1561 ; (-009H) + CP 022H + RET NZ + CALL L1581 + CP 00DH + JR NZ,L1561 ; (-013H) + RET + +L1575: CP 020H + RET Z + CP PRTD + RET Z + CP 028H + RET Z + CP 029H + RET + +L1581: CALL L158A + RET Z + CP 022H + JR NZ,L1581 ; (-008H) + RET + +L158A: LD A,(HL) + LD (DE),A + INC HL + INC DE + INC C + JP Z,LINELENERR + CP 00DH + RET + +L1595: CALL L158A + RET Z + CP 03AH + RET Z + CP 022H + JR NZ,L1595 ; (-00bH) + CALL L1581 + CP 00DH + JR NZ,L1595 ; (-012H) + RET + +CMDWORDTBL: DB "RE" + DB 0CDH + DB "DAT" + DB 0C1H + DB 0FFH + DB 0FFH + DB "REA" + DB 0C4H + DB "LIS" + DB 0D4H + DB "RU" + DB 0CEH + DB "NE" + DB 0D7H + DB "PRIN" + DB 0D4H + DB "LE" + DB 0D4H + DB "FO" + DB 0D2H + DB "I" + DB 0C6H + DB "THE" + DB 0CEH + DB "GOT" + DB 0CFH + DB "GOSU" + DB 0C2H + DB "RETUR" + DB 0CEH + DB "NEX" + DB 0D4H + DB "STO" + DB 0D0H + DB "EN" + DB 0C4H + DB 0FFH + DB "O" + DB 0CEH + DB "LOA" + DB 0C4H + DB "SAV" + DB 0C5H + DB "VERIF" + DB 0D9H + DB "POK" + DB 0C5H + DB "DI" + DB 0CDH + DB "DEF F" + DB 0CEH + DB "INPU" + DB 0D4H + DB "RESTOR" + DB 0C5H + DB "CL" + DB 0D2H + DB "MUSI" + DB 0C3H + DB "TEMP" + DB 0CFH + DB "USR" + DB 0A8H + DB "WOPE" + DB 0CEH + DB "ROPE" + DB 0CEH + DB "CLOS" + DB 0C5H + DB "MO" + DB 0CEH + DB "LIMI" + DB 0D4H + DB "CON" + DB 0D4H + DB "GE" + DB 0D4H + DB "INP" + DB 0C0H + DB "OUT" + DB 0C0H + DB "CURSO" + DB 0D2H + DB "SE" + DB 0D4H + DB "RESE" + DB 0D4H + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB "AUT" + DB 0CFH + DB 0FFH + DB 0FFH + DB "COPY/" + DB 0D0H + DB "PAGE/" + DB 0D0H + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 000H +UNUSEDTBL1: DB 0FFH + DB 000H +UNUSEDTBL2: DB 0FFH + DB 000H +OPERATORTBL:DB ">" + DB 0BCH + DB "<" + DB 0BEH + DB "=" + DB 0BCH + DB "<" + DB 0BDH + DB "=" + DB 0BEH + DB ">" + DB 0BDH + DB 0FFH + DB 0BEH + DB 0BCH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB 0FFH + DB "T" + DB 0CFH + DB "STE" + DB 0D0H + DB "LEFT$" + DB 0A8H + DB "RIGHT$" + DB 0A8H + DB "MID$" + DB 0A8H + DB "LEN" + DB 0A8H + DB "CHR$" + DB 0A8H + DB "STR$" + DB 0A8H + DB "ASC" + DB 0A8H + DB "VAL" + DB 0A8H + DB "PEEK" + DB 0A8H + DB "TAB" + DB 0A8H + DB "SPACE$" + DB 0A8H + DB "SIZ" + DB 0C5H + DB 0FFH,0FFH + DB 0FFH + DB "STRING" + DB 024H + DB 0A8H + DB 0FFH + DB "CHARACTER$" + DB 0A8H + DB "CS" + DB 0D2H + DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH + DB 0FFH + DB "RND" + DB 0A8H + DB "SIN" + DB 0A8H + DB "COS" + DB 0A8H + DB "TAN" + DB 0A8H + DB "ATN" + DB 0A8H + DB "EXP" + DB 0A8H + DB "INT" + DB 0A8H + DB "LOG" + DB 0A8H + DB "LN" + DB 0A8H + DB "ABS" + DB 0A8H + DB "SGN" + DB 0A8H + DB "SQR" + DB 0A8H + DB 0FFH,000H +L173A: LD HL,(05051H) + DEC HL +INCSKIPSPCE:INC HL +SKIPSPACE: LD A,(HL) + CP 020H + RET NZ + JR INCSKIPSPCE ; (-007H) + +L1745: PUSH AF + LD A,00DH +L1748: CP (HL) + INC HL + JR NZ,L1748 ; (-004H) + POP AF + RET + +L174E: INC HL +L174F: CALL L193B + RET Z + CP 022H + JR NZ,L174E ; (-009H) +L1757: INC HL + LD A,(HL) + CP 00DH + RET Z + CP 022H + JR NZ,L1757 ; (-009H) + JR L174E ; (-014H) + +L1762: LD A,C + CPL + LD C,A + LD A,B + CPL + LD B,A + INC BC + RET + +L176A: CALL SKIPSPACE + SUB 030H + CP 00AH + LD A,(HL) + RET + +L1773: LD A,H + SUB D + RET NZ + LD A,L + SUB E + RET + +L1779: POP HL ; Get address after call and jump to it via a RET command. +L177A: EX (SP),HL +EXECHL: PUSH AF + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + POP AF + EX (SP),HL + RET + +L1783: POP HL +L1784: EX (SP),HL + INC HL + INC HL + EX (SP),HL + RET + +L1789: LD HL,(04E94H) + INC HL + INC HL + INC HL + INC HL + INC HL + RET + +L1792: LD HL,(05051H) +EXECNOTCHR: CALL SKIPSPACE ; Scan for character after command + EX (SP),HL + CP (HL) + INC HL + JR NZ,EXECHL ; (-022H) + INC HL + JR L17AB ; (+00bH) + +L17A0: LD HL,(05051H) +MATCHCHR: CALL SKIPSPACE + EX (SP),HL + CP (HL) + JP NZ,SYNTAXERR +L17AB: INC HL + EX (SP),HL + JR INCSKIPSPCE ; (-071H) + +L17AF: XOR A + CP H + JR Z,L17B7 ; (+004H) + EX DE,HL + CP H + JR NZ,L177A ; (-03dH) +L17B7: LD A,L + LD L,H +L17B9: OR A + JR Z,L17CC ; (+010H) + RRA + JR NC,L17C2 ; (+003H) + ADD HL,DE + JR C,L177A ; (-048H) +L17C2: OR A + JR Z,L17CC ; (+007H) + EX DE,HL + ADD HL,HL + EX DE,HL + JR NC,L17B9 ; (-011H) + JR L177A ; (-052H) + +L17CC: EX DE,HL + JR L1784 ; (-04bH) + +L17CF: CALL L17AF + OR C + INC DE + RET + +L17D5: LD DE,MONIT + LD B,D +L17D9: CALL L176A + JR NC,L1784 ; (-05aH) + AND 00FH + LD C,A + XOR A + PUSH HL + LD L,E + LD H,D + ADD HL,HL + RRA + ADD HL,HL + RRA + ADD HL,DE + RRA + ADD HL,HL + RRA + ADD HL,BC + EX DE,HL + POP HL + INC HL + ADC A,A + JR NC,L17D9 ; (-01bH) + JR L177A ; (-07cH) + +L17F6: CALL L17D5 + XOR E + INC DE + RET + +STRTONUM: LD C,000H +L17FE: LD A,020H + LD (DE),A + INC DE + PUSH DE + LD B,000H + LD DE,L2710 + CALL L1827 + LD DE,003E8H + CALL L1827 + LD DE,00064H + CALL L1827 + LD DE,0000AH + CALL L1827 + LD A,L + POP HL + OR 030H + LD (HL),A + INC HL + LD (HL),00DH + EX DE,HL + RET + +L1827: LD A,PRTD +L1829: INC A + OR A + SBC HL,DE + JR NC,L1829 ; (-006H) + ADD HL,DE + OR A + JR NZ,L1836 ; (+003H) + OR B + RET Z + XOR A +L1836: INC B + OR 030H + POP DE + EX (SP),HL + LD (HL),A + INC HL + EX (SP),HL + PUSH DE + INC C + RET + +L1841: LD DE,04AB3H + PUSH DE + CALL STRTONUM + POP DE + RET + +L184A: LD BC,MONIT +L184D: LD HL,(04E94H) + ADD HL,BC + JR C,L185C ; (+009H) + EX DE,HL + LD HL,0FF9CH + ADD HL,SP + XOR A + SBC HL,DE + RET NC +L185C: JP MEMERR + +L185F: PUSH HL + PUSH DE + CALL L184D + POP DE + POP HL + RET + +L1867: LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + EX DE,HL + LD A,L + OR H + RET + +L1873: PUSH BC + PUSH HL + PUSH DE + EX DE,HL + ADD HL,BC + EX DE,HL + CALL L1789 + LD A,L + SUB E + LD C,A + LD A,H + SBC A,D + LD B,A + INC BC + POP HL + PUSH HL + EX DE,HL + JR L18A8 ; (+020H) + +L1888: CALL L185F + PUSH BC + PUSH HL + PUSH DE + CALL L1789 + PUSH HL + ADD HL,BC + EX (SP),HL + LD A,L + SUB E + LD C,A + LD A,H + SBC A,D + LD B,A + INC BC + POP DE + LDDR +L189E: POP DE + POP HL + POP BC + RET + +L18A2: CALL L1888 +L18A5: PUSH BC + PUSH HL + PUSH DE +L18A8: LD A,C + OR B + JR Z,L189E ; (-00eH) + LDIR + JR L189E ; (-012H) + +L18B0: LD (L18BF),HL +L18B3: LD HL,0505CH +L18B6: PUSH HL + CALL L1867 + JP Z,L1779 + PUSH HL + DB 021H +L18BF: DB 0AAH + DB 00FH + CALL L1773 + POP HL + JP Z,L1783 + JP C,L1783 + POP AF + JR L18B6 ; (-018H) + +L18CE: PUSH HL + LD E,(HL) + INC HL + LD D,(HL) + LD A,E + OR D + JP Z,L1779 + DB 021H +L18D8: DB 042H + DB 04CH + CALL L1773 + POP HL + INC HL + INC HL + JP L1784 + +L18E3: ADD HL,BC + EX DE,HL + POP HL + LD (HL),E + INC HL + LD (HL),D + EX DE,HL +L18EA: PUSH HL + CALL L1867 + JR NZ,L18E3 ; (-00dH) + POP HL + RET + +L18F2: PUSH HL + LD BC,00004H + ADD HL,BC + CALL L1900 + INC BC + POP HL + RET + +L18FD: LD BC,MONIT +L1900: PUSH HL + LD A,00DH +L1903: CP (HL) + INC HL + INC BC + JR NZ,L1903 ; (-005H) + DEC BC + POP HL + RET + +L190B: CALL L1921 +L190E: LD A,E + EX DE,HL + LD BC,MONIT + LD HL,(04E92H) + DEC HL +L1917: INC HL + ADD HL,BC + CP (HL) + INC HL + LD C,(HL) + INC HL + JR NZ,L1917 ; (-008H) + EX DE,HL + RET + +L1921: LD A,D + OR A + RET NZ + JR L1929 ; (+003H) + +L1926: LD A,D + OR A + RET Z +L1929: JP DATMISERR + +L192C: LD HL,(04E94H) + EX DE,HL +L1930: LD BC,00005H + LDIR + RET + +L1936: LD HL,(04E94H) + JR L1930 ; (-00bH) + +L193B: CALL SKIPSPACE + CP 00DH + RET Z + CP 03AH + RET + +L1944: LD HL,MONIT + LD (04E4CH),HL + CALL L1957 + CALL L199E + CALL L1978 + CALL L1459 + RET + +L1957: LD HL,0505CH + CALL L19BA + LD DE,04E4EH +L1960: PUSH HL + LD HL,04E96H + XOR A + SBC HL,DE + LD B,L + SRL B + POP HL + EX DE,HL +L196C: XOR A + LD (HL),E + INC HL + LD (HL),D + INC HL + LD (DE),A + INC DE + LD (DE),A + INC DE + DJNZ L196C ; (-00bH) + RET + +L1978: LD HL,05040H + LD (04E9AH),HL + LD HL,04FD7H + LD (04E98H),HL + LD HL,04EBAH + LD (04E96H),HL + LD HL,05053H + CALL L19BA + LD (HL),A +L1991: XOR A + LD (05056H),A + RET + +L1996: LD HL,(04E84H) + LD DE,04E84H + JR L1960 ; (-03eH) + +L199E: LD HL,04DF2H + LD B,05AH +L19A3: LD (HL),000H + INC HL + DJNZ L19A3 ; (-005H) + LD B,01AH + LD HL,04E50H +L19AD: LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + EX DE,HL + CALL L2E09 + POP HL + DJNZ L19AD ; (-00cH) + RET + +L19BA: XOR A +L19BB: LD (HL),A + INC HL + LD (HL),A + INC HL + RET + +L19C0: CALL L1888 +L19C3: PUSH HL + LD A,E + EX AF,AF' + LD A,D + LD HL,04E94H +L19CA: LD E,(HL) + INC HL + LD D,(HL) + CP D + JR C,L19D7 ; (+007H) + JR NZ,L19E2 ; (+010H) + EX AF,AF' + CP E + JR NC,L19E1 ; (+00bH) + EX AF,AF' +L19D7: EX DE,HL + ADD HL,BC + EX DE,HL + LD (HL),D + DEC HL + LD (HL),E + DEC HL + DEC HL + JR L19CA ; (-017H) + +L19E1: EX AF,AF' +L19E2: LD D,A + EX AF,AF' + LD E,A + POP HL + RET + +L19E7: CALL L1873 + PUSH BC + CALL L1762 + CALL L19C3 + POP BC + RET + +L19F3: CALL SKIPSPACE + LD DE,00D2CH + LD BC,MONIT + CP 022H + JR NZ,L1A02 ; (+002H) + LD E,A + INC HL +L1A02: PUSH HL +L1A03: LD A,(HL) + CP D + JR Z,L1A0F ; (+008H) + CP E + INC HL + JR Z,L1A0F ; (+004H) + INC BC + JR L1A03 ; (-00bH) + +L1A0E: PUSH HL +L1A0F: EX (SP),HL + PUSH HL + CALL L1A1E + EX DE,HL + EX (SP),HL + CALL L18A5 + POP DE + POP HL + JP SKIPSPACE + +L1A1E: PUSH BC + XOR A + LD E,A + LD HL,(04E92H) + JR L1A2B ; (+005H) + +L1A26: INC HL + LD C,(HL) + INC HL + INC HL + ADD HL,BC +L1A2B: INC E + CP (HL) + JR NZ,L1A26 ; (-009H) + POP BC + PUSH BC + INC BC + INC BC + INC BC + EX DE,HL + CALL L1888 + EX DE,HL + PUSH HL + ADD HL,BC + DEC HL + LD (HL),00DH + LD HL,(04E94H) + ADD HL,BC + LD (04E94H),HL + POP HL + POP BC + LD (HL),E + INC HL + LD (HL),C + INC HL + LD D,001H + RET + +L1A4E: PUSH HL + LD HL,(04E94H) + LD DE,MONIT + LD A,(HL) + OR A + JP P,L1779 + CP 0C1H + JR C,L1A72 ; (+014H) + SUB 0D1H + JP NC,L1779 + LD E,003H + ADD HL,DE + LD E,(HL) + INC HL + LD D,(HL) + JR L1A6F ; (+004H) + +L1A6B: SRL D + RR E +L1A6F: INC A + JR NZ,L1A6B ; (-007H) +L1A72: JP L1783 + +L1A75: CALL EXECNOTCHR + DB 00DH + DW L1A7E + JP L177A + +L1A7E: PUSH HL + DEC HL +L1A80: CALL L1A91 + JR Z,L1A80 ; (-005H) + CP 00DH + JP NZ,L1779 + POP HL + CALL L2333 + JP L1784 + +L1A91: CALL INCSKIPSPCE + CP 045H + RET Z +L1A97: CALL L176A + JR NC,L1A9E ; (+002H) + CP (HL) + RET + +L1A9E: CP 02EH + RET Z + CP 02BH + RET Z + CP 02DH + RET + +L1AA7: PUSH HL + CALL L1AB8 + POP HL + RET Z + JR L1AB5 ; (+006H) + +L1AAF: PUSH HL + CALL L1AB8 + POP HL + RET NZ +L1AB5: JP CMDSTMTERR + +L1AB8: LD HL,(0504FH) + LD A,H + OR L + RET + +L1ABE: NOP +L1ABF: LD HL,L1ABE + XOR A + CP (HL) + LD (HL),A + JR NZ,L1AEE ; (+027H) +L1AC7: LD HL,0505CH +L1ACA: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + LD A,E + OR D + RET Z + CALL L1773 + RET C + EX DE,HL + ADD HL,DE + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + EX DE,HL + JR L1ACA ; (-014H) + +L1ADE: LD HL,(04E4EH) + LD DE,0505CH + DEC HL + DEC HL + XOR A + SBC HL,DE + LD B,H + LD C,L + JP L19E7 + +L1AEE: CALL L1ADE +L1AF1: CALL L1996 + CALL L199E + CALL L1978 + RET + + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + PUSH BC + CALL L1AEE + POP BC + LD A,B + OR A + JR NZ,L1B10 ; (+004H) + LD A,C + CP 003H + RET C +L1B10: PUSH BC + DEC BC + DEC BC + LD DE,0505CH + CALL L19C0 + POP BC + RET + +L1B1B: LD HL,0505CH +L1B1E: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + LD A,D + OR E + RET Z + CALL L1773 + RET NC + PUSH DE + EX DE,HL + XOR A + SBC HL,DE + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + POP HL + JR L1B1E ; (-017H) + +L1B35: LD HL,(05051H) +L1B38: CALL SKIPSPACE +L1B3B: CP 00DH + JR Z,L1B45 ; (+006H) + CALL MATCHCHR + DB 03AH + JR L1B5C ; (+017H) + +L1B45: LD HL,(0504DH) + LD A,H + OR L + JP Z,WARMSTRT +L1B4D: LD A,(HL) + INC HL + OR (HL) + DEC HL + JP Z,L1D17 + LD DE,0504DH + LD BC,00004H + LDIR +L1B5C: LD (05051H),HL +L1B5F: LD A,(05056H) + DEC A + CALL Z,L1B9F + CALL BRKEY + JR NZ,L1B73 ; (+008H) + LD A,002H + CALL L29EB + JP L1438 + +L1B73: LD HL,(04E92H) + CALL L19BA + LD (04E94H),HL + CALL L173A +L1B7F: SUB 080H + JP C,CMDLET + INC HL + LD C,(HL) + INC HL + PUSH HL + LD HL,CMDJMPTBL + JP NZ,SYNTAXERR + LD A,C + ADD A,080H + JP NC,SYNTAXERR + LD C,A +L1B95: LD B,000H + ADD HL,BC + ADD HL,BC + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + EX (SP),HL + RET + +L1B9F: CALL L1AB8 + RET Z + LD DE,L13A5 + LD HL,0504DH + JR NZ,L1BAC ; (+001H) + EX DE,HL +L1BAC: LD BC,LETNL + LDIR + RET + +CMDJMPTBL: DW CMDREMDATA + DW CMDREMDATA + DW SYNTAXERR + DW SYNTAXERR + DW CMDREAD + DW CMDLIST + DW CMDRUN + DW CMDNEW + DW CMDPRINT + DW CMDLET + DW CMDFOR + DW CMDIF + DW SYNTAXERR + DW CMDGOTO + DW CMDGOSUB + DW CMDRETURN + DW CMDNEXT + DW CMDSTOP + DW CMDEND + DW SYNTAXERR + DW CMDON + DW CMDLOAD + DW CMDSAVE + DW CMDVERIFY + DW CMDPOKE + DW CMDDIM + DW CMDDEFFN + DW CMDINPUT + DW CMDRESTORE + DW CMDCLS + DW CMDMUSIC + DW CMDTEMPO + DW CMDUSRN + DW CMDWOPEN + DW CMDROPEN + DW CMDCLOSE + DW CMDMON + DW CMDLIMIT + DW CMDCONT + DW CMDGET + DW CMDINP + DW CMDOUT + DW CMDCURSOR + DW CMDSET + DW CMDRESET + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW CMDAUTO + DW SYNTAXERR + DW SYNTAXERR + DW CMDCOPY + DW CMDPAGE + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR +L1C32: CALL L193B + JP NZ,SYNTAXERR + LD (05051H),HL + RET + +CMDREMDATA: CALL L174F + JP L1B38 + +CMDNEW: XOR A + LD (L1463),A + CALL L1944 +L1C49: JP WARMSTRT + +L1C4C: DB 006H +CMDLIST: XOR A + LD (L1CAB),A + CALL EXECNOTCHR + DB 02FH + DW L1C60 + CALL MATCHCHR + DB 050H + LD A,001H + LD (L1CAB),A +L1C60: CALL L1AA7 + DB 03EH + LD A,(BC) + LD (L1C4C),A + PUSH HL + LD HL,04AB3H + CALL L19BA + DEC A + CALL L19BB + POP HL + CALL L193B + CALL NZ,L1CF3 + LD (05051H),HL + LD HL,0505CH +L1C80: PUSH HL + CALL L1867 + POP HL +L1C85: JR Z,L1C49 ; (-03eH) + CALL L18F2 + LD DE,04A0EH + LDIR + LD HL,(04AB3H) + EX DE,HL + LD HL,(04A10H) + CALL L1773 + JR C,L1CDF ; (+044H) + EX DE,HL + LD HL,(04AB5H) + CALL L1773 + JR C,L1CDF ; (+03bH) + CALL L14F8 + LD DE,LINEBUFR + DB 03EH +L1CAB: DB 000H + OR A + JR Z,L1CBA ; (+00bH) + CALL L31A2 + CALL L3246 + CALL L31A7 + JR L1CC7 ; (+00dH) + +L1CBA: CALL MSGNL + LD A,(L1C4C) + DEC A + LD (L1C4C),A + CALL Z,L1CE4 +L1CC7: CALL BRKEY + JR Z,L1C85 ; (-047H) +L1CCC: CALL GETKY + CP 020H + JR Z,L1CCC ; (-007H) + CP 03FH + JR NZ,L1CDF ; (+008H) + LD BC,L2000 +L1CDA: DEC BC + LD A,B + OR C + JR NZ,L1CDA ; (-005H) +L1CDF: LD HL,(04A0EH) + JR L1C80 ; (-064H) + +L1CE4: INC A + LD (L1C4C),A + PUSH BC + LD BC,00001H +L1CEC: DEC BC + LD A,B + OR C + JR NZ,L1CEC ; (-005H) + POP BC + RET + +L1CF3: CALL L17F6 + LD (04AB3H),DE + CALL L193B + JR Z,L1D0A ; (+00bH) + CALL MATCHCHR + DB 02DH + CALL L193B + RET Z + CALL L17F6 +L1D0A: LD (04AB5H),DE + CALL L193B + RET Z + JP SYNTAXERR + +CMDEND: DB 0AFH + DB 001H +L1D17: LD A,001H + EX AF,AF' + CALL L1AAF + EX AF,AF' + OR A + CALL Z,L1D24 + JR L1D41 ; (+01dH) + +L1D24: CALL L1C32 + LD A,001H + JP L29EB + +CMDSTOP: CALL L1AAF + CALL L1D24 + LD HL,(0504FH) + LD DE,L1D44 + CALL MSGX + CALL L1841 + CALL MSGX +L1D41: JP WARMSTRT + +L1D44: DB "*S",096H,0B7H,09EH," ",0A6H,0B0H,00DH +CMDRESTORE: CALL L17F6 + CALL L1C32 + LD BC,L1B35 + PUSH BC + LD A,D + OR E + JP Z,L145E + LD BC,L2D46 + PUSH BC +L1D60: EX DE,HL +L1D61: CALL L18B0 + PUSH DE + INC DE + RET Z + JP LINEERR + +CMDLET: PUSH HL +L1D6B: CALL L193B + JP Z,SYNTAXERR + CP 03DH + INC HL + JR NZ,L1D6B ; (-00bH) + CALL L2293 + LD (05051H),HL + CALL L1D95 + POP HL + CALL L267F + CALL L24B2 + CALL MATCHCHR + DB 03DH + CALL L1D9A + CALL L1DA5 + DW DATMISERR + JP L1B35 + +L1D95: LD HL,04900H + JR L1D9D ; (+003H) + +L1D9A: LD HL,04904H +L1D9D: LD (HL),C + INC HL + LD (HL),B + INC HL + LD (HL),E + INC HL + LD (HL),D + RET + +L1DA5: LD HL,04903H + LD B,(HL) + INC HL + LD C,(HL) + INC HL + LD A,(HL) + LD DE,(04906H) + OR A + JR NZ,L1DBD ; (+009H) + OR B + JP NZ,L177A + CALL L1936 + JR L1DF2 ; (+035H) + +L1DBD: XOR A + OR B + JP Z,L177A + LD HL,L1DF5 + XOR A + LD B,A + SBC HL,DE + JR Z,L1DFE ; (+033H) + LD HL,(04900H) + XOR A + SBC HL,BC + LD B,H + LD C,L + JR C,L1DDA ; (+005H) + CALL L1888 + JR L1DE2 ; (+008H) + +L1DDA: PUSH BC + CALL L1762 + CALL L1873 + POP BC +L1DE2: CALL L19C3 + LD HL,(04902H) + EX DE,HL + CALL L190E + EX DE,HL + DEC DE + DEC HL + INC BC + LDIR +L1DF2: JP L1784 + +L1DF5: JR NC,L1E27 ; (+030H) + DEC C + JR NC,L1E2A ; (+030H) + DEC C + JR NC,L1E2D ; (+030H) + DEC C +L1DFE: LD HL,(04902H) + EX DE,HL + CALL L190B + EX DE,HL + LD DE,L1DF5 + PUSH DE + LD B,003H +L1E0C: LD C,002H +L1E0E: CALL L176A + JR NC,L1E5D ; (+04aH) + LD (DE),A + INC DE + INC HL + DEC C + JR NZ,L1E0E ; (-00bH) + LD A,00DH + LD (DE),A + INC DE + DEC B + JR NZ,L1E0C ; (-014H) + CALL EXECNOTCHR + DB 00DH + DW ILDATERR + POP HL +L1E27: CALL L1E69 +L1E2A: LD B,000H + LD A,E +L1E2D: CP 018H + JR NC,L1E5D ; (+02cH) + SUB 00CH + JR C,L1E37 ; (+002H) + LD E,A + INC B +L1E37: LD A,B + PUSH AF + PUSH HL + LD HL,00E10H + CALL L17CF + POP HL + PUSH DE + INC HL + CALL L1E69 + LD A,E + CP 03CH + JR NC,L1E5D ; (+012H) + PUSH HL + LD HL,0003CH + CALL L17CF + POP HL + EX (SP),HL + ADD HL,DE + EX (SP),HL + INC HL + CALL L1E69 + LD A,E + CP 03CH +L1E5D: JR NC,L1E8E ; (+02fH) + POP HL + ADD HL,DE + EX DE,HL + POP AF + CALL ?TMST + JP L1784 + +L1E69: EXX + LD BC,00005H + CALL L1E7F + CALL L2333 + CALL L1926 + CALL L1A4E + OR C + INC DE + EXX + LD BC,0FFFBH +L1E7F: LD HL,(04E94H) + ADD HL,BC + LD (04E94H),HL + EXX + RET + +GETNUM: CALL L1E69 + LD A,D + OR A + RET Z +L1E8E: JP ILDATERR + +CMDRUN: XOR A + LD (L2A83),A + LD (L30E2),A + CALL L2E94 + CALL L145E + CALL L1459 + CALL L176A + JR NC,L1EAF ; (+009H) +CMDGOTO: CALL L17F6 +L1EA9: EX DE,HL +L1EAA: CALL L1D61 + JR L1EC4 ; (+015H) + +L1EAF: CALL L193B + JP NZ,SYNTAXERR + CALL L1991 + CALL L1978 + CALL L1996 + CALL L199E + LD HL,0505CH +L1EC4: JP L1B4D + +CMDGOSUB: CALL L1AAF + CALL L17F6 +L1ECD: CALL L1C32 + CALL L1D60 + EXX + LD HL,05055H + LD A,(HL) + CP 00FH + JP Z,GOSUBERR + INC (HL) + DEC HL + DEC HL + LD DE,(04E9AH) + DEC DE + LD BC,00007H + LDDR + INC DE + LD (04E9AH),DE + LD C,007H + ADD HL,BC + LD (HL),000H + EXX + JP L1B4D + +CMDRETURN: CALL L1AAF + LD HL,05055H + XOR A + CP (HL) + JP Z,RETGOSBERR + DEC (HL) +L1F04: LD HL,05053H + LD A,(HL) + OR A + JR Z,L1F1A ; (+00fH) + DEC (HL) + INC HL + DEC (HL) + LD HL,(04E98H) + LD BC,00013H + ADD HL,BC + LD (04E98H),HL + JR L1F04 ; (-016H) + +L1F1A: LD HL,(04E9AH) + LD DE,0504DH + LD BC,00007H + LDIR + LD (04E9AH),HL + JP L1B35 + +CMDFOR: CALL L267F + CALL MATCHCHR + DB 03DH + PUSH DE + CALL L1FB7 + POP HL + LD (05040H),HL + EX DE,HL + CALL L24BD + CALL L1936 + CALL L17A0 + SBC A,(HL) + CALL L1FB7 + LD DE,05048H + CALL L1936 + CALL L1792 + SBC A,A + LD E,H + RRA + CALL L1FB7 + LD HL,(04E94H) + JR L1F5F ; (+003H) + + LD HL,L2A88 +L1F5F: LD DE,05042H + LD A,(HL) + LD (05047H),A + LD BC,00005H + LDIR + LD HL,(04E98H) + LD DE,(05040H) + LD A,(05053H) + INC A +L1F76: DEC A + JR Z,L1F98 ; (+01fH) + EX AF,AF' + LD A,(HL) + SUB E + LD B,A + INC HL + LD A,(HL) + SUB D + OR B + LD BC,PRNT + ADD HL,BC + JR Z,L1F8A ; (+003H) + EX AF,AF' + JR L1F76 ; (-014H) + +L1F8A: LD (04E98H),HL + EX AF,AF' + DEC A + LD HL,05053H + LD B,(HL) + LD (HL),A + SUB B + INC HL + ADD A,(HL) + LD (HL),A +L1F98: LD HL,05054H + LD A,(HL) + CP 00FH + JP Z,FORNEXTERR + INC (HL) + DEC HL + INC (HL) + DEC HL + LD DE,(04E98H) + LD BC,00013H + DEC DE + LDDR + INC DE + EX DE,HL + LD (04E98H),HL + JP L1B35 + +L1FB7: CALL L2333 + LD (05051H),HL + JP L1926 + +CMDNEXT: LD A,(05053H) + OR A +L1FC4: JP Z,NEXTFORERR + CALL L2640 + LD (05051H),HL + LD HL,(04E98H) + CALL NC,L2039 +L1FD3: LD A,E + SUB (HL) + INC HL + LD B,A + LD A,D + SUB (HL) + OR B + JR Z,L1FF1 ; (+015H) + EXX + LD HL,05053H + LD A,(HL) + DEC A + JR Z,L1FC4 ; (-020H) + LD (HL),A + INC HL + DEC (HL) + EXX + LD BC,PRNT + ADD HL,BC + LD (04E98H),HL + JR L1FD3 ; (-01eH) + +L1FF1: INC HL + CALL L24BD + PUSH DE + PUSH HL + CALL L3405 + POP HL + POP DE + LD BC,00005H + ADD HL,BC +L2000: LD A,(HL) + INC HL + PUSH HL + OR A + JP P,L201B + EX DE,HL + CALL L3A66 + POP HL + LD BC,00005H + JR C,L2025 ; (+014H) +L2011: ADD HL,BC + LD DE,0504DH + INC C + LDIR + JP L1B35 + +L201B: CALL L3A66 + POP HL + LD BC,00005H + CCF + JR C,L2011 ; (-014H) +L2025: LD C,00BH + ADD HL,BC + LD (04E98H),HL + LD HL,05053H + DEC (HL) + INC HL + DEC (HL) + CALL L1792 + INC L + DEC (HL) + DEC DE + JR CMDNEXT ; (-079H) + +L2039: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + RET + +CMDON: CALL L1AAF + CALL L2333 + CALL L1926 + CALL L1A4E + DB 04CH + DB 020H + CALL MATCHCHR + DB 080H + SUB 08DH + CP 002H + JP NC,SYNTAXERR + EX AF,AF' + INC HL + LD A,E + OR A + JR Z,L2061 ; (+004H) + LD A,D + OR A + JR Z,L206F ; (+00eH) +L2061: JP CMDREMDATA + +L2064: CALL L193B + JP Z,L1B3B + CP 02CH + INC HL + JR NZ,L2064 ; (-00bH) +L206F: DEC E + JR NZ,L2064 ; (-00eH) + CALL L17F6 + CALL L174F + EX AF,AF' + OR A + JP NZ,L1ECD + JP L1EA9 + +CMDDIM: CALL L267F + LD BC,MONIT + CP 024H + JR NZ,L208C ; (+002H) + INC HL + INC B +L208C: CALL MATCHCHR + DB 028H + CALL L2107 + JR NZ,L20E5 ; (+050H) + PUSH HL + LD HL,(L2105) + LD E,H + LD D,A + LD H,A + INC HL + INC DE + CALL L17AF + CP D + INC DE + LD A,(L2104) + OR A + POP HL + PUSH DE + PUSH HL + LD HL,00002H + JR NZ,L20B1 ; (+002H) + LD L,005H +L20B1: CALL L17AF + CP D + INC DE + LD HL,00004H + ADD HL,DE + JP C,MEMERR + LD B,H + LD C,L + POP DE + CALL L19C0 + LD HL,(L18D8) + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + INC HL + LD DE,(02105H) + LD (HL),E + INC HL + LD (HL),D + INC HL + POP BC + LD A,(L2104) + OR A + JR Z,L20F0 ; (+016H) +L20DA: LD (HL),000H + INC HL + LD (HL),00DH + INC HL + DEC BC + LD A,B + OR C + JR NZ,L20DA ; (-00bH) +L20E5: LD HL,(L2102) + CALL EXECNOTCHR + DB 02CH + DW L1B38 + JR CMDDIM ; (-070H) + +L20F0: EX DE,HL +L20F1: PUSH BC + LD HL,L2A8D + LD BC,00005H + LDIR + POP BC + DEC BC + LD A,B + OR C + JR NZ,L20F1 ; (-00fH) + JR L20E5 ; (-01dH) + +L2102: XOR (HL) + LD H,C +L2104: DB 001H +L2105: DB 00BH + DB 001H +L2107: PUSH DE + PUSH BC + CALL GETNUM + POP BC + LD A,(HL) + CP 02CH + CALL Z,L2185 + CALL MATCHCHR + DB 029H + LD (L2102),HL + POP HL + LD (L18D8),HL + EX DE,HL + LD (L2105),HL + LD A,B + LD (L2104),A + LD HL,04E86H + LD DE,LETNL + OR A + JR Z,L2130 ; (+001H) + ADD HL,DE +L2130: LD A,C + LD E,002H + OR A + JR NZ,L2137 ; (+001H) + ADD HL,DE +L2137: LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL +L213B: CALL L18CE + LD L,(HL) + LD HL,L2E28 + LD E,(HL) + INC HL + PUSH HL + LD L,(HL) + LD D,000H + LD H,D + INC HL + INC DE + CALL L17CF + LD A,(L2104) + OR A + JR NZ,L215F ; (+00bH) + LD HL,00005H + CALL L17CF + POP HL + ADD HL,DE + INC HL + JR L213B ; (-024H) + +L215F: POP HL + INC HL + LD B,000H +L2163: LD C,(HL) + INC HL + INC HL + ADD HL,BC + DEC DE + LD A,D + OR E + JR NZ,L2163 ; (-009H) + JR L213B ; (-033H) + + XOR A + RET + + LD C,(HL) + INC HL + LD B,(HL) + INC HL + LD DE,(02105H) + LD A,B + CP D + JR C,L217E ; (+002H) + LD A,C + CP E +L217E: JP C,ILDATERR + LD A,001H + OR A + RET + +L2185: INC C + PUSH BC + PUSH DE + INC HL + CALL GETNUM + LD A,E + POP DE + LD D,A + POP BC + RET + +CMDPOKE: CALL L299F + CALL L2E94 + PUSH DE + CALL L299F + LD A,D + OR A + JP NZ,ILDATERR + EX (SP),HL + LD (HL),E + POP HL +L21A3: JP L1B38 + +CMDCLS: PUSH HL + CALL L1AF1 + POP HL + JR L21A3 ; (-00aH) + +CMDIF: CALL L1AAF + CALL EXECNOTCHR + DB 0AEH + DW L21D3 + CALL L2DBA + JP Z,SYNTAXERR + LD B,A + CALL L2712 + PUSH HL + LD A,B + CALL L2DC1 + RST 038H + RST 038H + LD BC,00008H + ADD HL,BC + LD A,(HL) + POP HL + OR A + JR NZ,L21E3 ; (+013H) +L21D0: JP L1B45 + +L21D3: CALL L2293 + CALL L1926 + LD IX,(04E94H) + BIT 7,(IX+004H) + JR Z,L21D0 ; (-013H) +L21E3: CALL MATCHCHR + ADD A,B + SUB 08CH + INC HL + CP 002H + JP Z,CMDGOSUB +L21EF: JP NC,SYNTAXERR + OR A + CALL Z,L21F9 + JP CMDGOTO + +L21F9: CALL L176A + RET C + POP BC + JP L1B7F + +CMDDEFFN: CALL SKIPSPACE + SUB 041H + CP 01AH + JR NC,L21EF ; (-01bH) + LD E,(HL) + INC HL + CALL MATCHCHR + DB 028H + SUB 041H + CP 01AH + JR NC,L21EF ; (-027H) + LD D,(HL) + INC HL + CALL MATCHCHR + DB 029H + CALL MATCHCHR + DB 03DH + PUSH HL + CALL L174F + POP BC + PUSH HL + XOR A + SBC HL,BC + PUSH BC + PUSH HL + LD HL,(04E84H) +L222E: LD A,(HL) + CP E + JR Z,L224D ; (+01bH) + OR A + JR Z,L223C ; (+007H) + INC HL + INC HL + CALL L1745 + JR L222E ; (-00eH) + +L223C: EX DE,HL + LD BC,GETL + CALL L19C0 + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + INC HL + LD (HL),00DH + EX DE,HL + JR L225D ; (+010H) + +L224D: INC HL + LD (HL),D + INC HL + PUSH HL + CALL L174F + POP DE + XOR A + SBC HL,DE + LD B,H + LD C,L + CALL L19E7 +L225D: POP BC + POP HL + CALL L18A2 + CALL L19C3 + POP HL +L2266: JP L1B38 + +CMDMUSIC: CALL L193B + JR Z,L2266 ; (-008H) + CALL L2333 + CALL L193B + JR Z,L2277 ; (+001H) + INC HL +L2277: CALL L190B + CALL MELDY + JP C,L1438 + JR CMDMUSIC ; (-019H) + +CMDTEMPO: CALL GETNUM + LD A,E + DEC A + CP 007H + JP NC,ILDATERR + INC A + CALL XTEMP + JR L2266 ; (-02cH) + +L2292: INC HL +L2293: CALL L2333 +L2296: CP 03DH + JR NZ,L229C ; (+002H) + LD A,089H +L229C: CP 083H + RET C + CP 090H + RET NC + SUB 083H + EX AF,AF' + LD A,D + OR A + JR NZ,L22B4 ; (+00bH) + EX AF,AF' + EXX + LD BC,L2296 + LD DE,L2332 + JP L23BB + +L22B4: EX AF,AF' + PUSH DE + PUSH AF + CALL L2332 + POP AF + EX AF,AF' + EX (SP),HL + CALL L190B + LD A,C + PUSH AF + EX DE,HL + CALL L190B + POP AF + LD B,A + CALL L2305 + LD HL,L22F3 + PUSH HL + LD HL,L22E1 + EX AF,AF' + LD C,A + LD B,000H + ADD HL,BC + ADD HL,BC + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + EX AF,AF' + OR A + LD A,001H + JP (HL) + +L22E1: DW L231B + DW L231B + DW L231E + DW L231E + DW L2322 + DW L2322 + DW L2325 + DW L2328 + DW L232F +L22F3: LD DE,L2A92 + OR A + JR NZ,L22FC ; (+003H) + LD DE,L2A8D +L22FC: CALL L192C + POP HL + CALL L23FA + JR L2296 ; (-06fH) + +L2305: LD A,B + OR C + RET Z + LD A,C + CP B + JR NZ,L2315 ; (+009H) +L230C: LD A,(DE) + SUB (HL) + JR NZ,L2315 ; (+005H) + INC HL + INC DE + DJNZ L230C ; (-008H) + RET + +L2315: LD A,001H + DB 0D0H + LD A,080H + RET + +L231B: RET NZ + XOR A + RET + +L231E: RET Z + RET M + XOR A + RET + +L2322: RET P + XOR A + RET + +L2325: RET Z + XOR A + RET + +L2328: LD A,000H + RET Z + RET M + LD A,001H + RET + +L232F: RET M + XOR A + RET + +L2332: INC HL +L2333: LD A,(HL) + CP 020H + JR Z,L2332 ; (-006H) + CP 02BH + JR Z,L2348 ; (+00cH) + CP 02DH + JR NZ,L2349 ; (+009H) + CALL L2392 + CALL L2410 + JR L234C ; (+004H) + +L2348: INC HL +L2349: CALL L2393 +L234C: CP 02BH + JR Z,L2356 ; (+006H) + CP 02DH + RET NZ + LD A,00DH + DB 001H +L2356: LD A,00CH + EX AF,AF' + LD A,D + OR A + JR NZ,L2367 ; (+00aH) + EX AF,AF' + EXX + LD BC,L234C + LD DE,L2392 + JR L23BB ; (+054H) + +L2367: EX AF,AF' + CP 00CH + JP NZ,SYNTAXERR + PUSH DE + CALL L2392 + EX (SP),HL + PUSH DE + CALL L190B + LD A,C + PUSH AF + EX DE,HL + CALL L190B + POP AF + ADD A,C + JP C,STRLENERR + PUSH AF + EX DE,HL + CALL L18A2 + CALL L19C3 + POP AF + LD C,A + DEC DE + LD (DE),A + POP DE + POP HL + LD A,(HL) + JR L234C ; (-046H) + +L2392: INC HL +L2393: CALL L23AC +L2396: CP 02FH + JR Z,L23A0 ; (+006H) + CP 02AH + RET NZ + LD A,00EH + DB 001H +L23A0: LD A,00FH + EXX + LD BC,L2396 + LD DE,L23AB + JR L23BB ; (+010H) + +L23AB: INC HL +L23AC: CALL L2402 +L23AF: CP 05EH + RET NZ + LD A,010H + EXX + LD BC,L23AF + LD DE,L2401 +L23BB: PUSH BC + LD HL,(04E94H) + LD BC,00005H + ADD HL,BC + LD (04E94H),HL + LD HL,L2691 + LD C,A + ADD HL,BC + ADD HL,BC + LD C,(HL) + INC HL + LD B,(HL) + PUSH BC + LD HL,L23DC + PUSH HL + PUSH DE + EXX + LD A,D + OR A + RET Z +L23D9: JP DATMISERR + +L23DC: LD A,D + OR A + JR NZ,L23D9 ; (-007H) + POP IY + PUSH HL + LD HL,(04E94H) + LD BC,0FFFBH + LD E,L + LD D,H + ADD HL,BC + LD (04E94H),HL + EX DE,HL + LD BC,L23F9 + PUSH BC + JP (IY) + +L23F6: CALL L192C +L23F9: POP HL +L23FA: LD BC,00005H + LD D,B + LD E,B + LD A,(HL) + RET + +L2401: INC HL +L2402: CALL SKIPSPACE + CP 02BH + JR Z,L2425 ; (+01cH) + CP 02DH + JR NZ,L2426 ; (+019H) + CALL L2425 +L2410: EXX + LD HL,(04E94H) + PUSH HL + LD BC,00004H + ADD HL,BC + LD A,(HL) + POP HL + OR A + JR Z,L2422 ; (+004H) + LD A,(HL) + ADD A,080H + LD (HL),A +L2422: EXX + LD A,(HL) + RET + +L2425: INC HL +L2426: CALL L2640 + JR NC,L2447 ; (+01cH) + LD A,046H + CP E + JR NZ,L2436 ; (+006H) + LD A,04EH + CP D + JP Z,L24F0 +L2436: CALL L24B2 + PUSH HL + LD A,B + OR A + JR Z,L23F6 ; (-048H) + EX DE,HL + LD B,000H + CALL L1A0E + POP HL + LD A,(HL) + RET + +L2447: CP 080H + JR C,L2481 ; (+036H) + CP PRTD + JR Z,L24A8 ; (+059H) + CP 0C0H + JR C,L2472 ; (+01fH) + SUB 0C0H + PUSH AF + CALL L2332 + CALL L1926 + CALL MATCHCHR + DB 029H + POP AF + PUSH HL + LD HL,L23F9 + PUSH HL + LD HL,(04E94H) + EX DE,HL + LD HL,L26DB + PUSH HL + LD C,A + JP L1B95 + +L2472: SUB 0A0H + JR C,L248F ; (+019H) + LD C,A + CALL INCSKIPSPCE + PUSH HL + LD HL,L26B3 + JP L1B95 + +L2481: CP 028H + JR Z,L2492 ; (+00dH) + CP 022H + JP Z,L19F3 + CALL L1A97 + JR Z,L249E ; (+00fH) +L248F: JP SYNTAXERR + +L2492: LD BC,MONIT + CALL L185F + CALL L2292 + JP L2712 + +L249E: LD DE,(04E94H) + CALL L3670 + JP L23FA + +L24A8: CALL INCSKIPSPCE + PUSH HL + LD DE,L2A97 + JP L23F6 + +L24B2: LD A,(HL) + CP 024H + JP Z,L256F + CP 028H + JP Z,L25FE +L24BD: PUSH HL + LD HL,(04E8AH) + LD BC,00005H +L24C4: LD A,(HL) + CP E + INC HL + JR NZ,L24CD ; (+004H) + LD A,(HL) + CP D + JR Z,L24EB ; (+01eH) +L24CD: OR A + JR Z,L24D4 ; (+004H) + INC HL + ADD HL,BC + JR L24C4 ; (-010H) + +L24D4: LD C,007H + DEC HL + PUSH DE + EX DE,HL + LD HL,L2A8D + DEC HL + DEC HL + CALL L18A2 + CALL L19C3 + EX DE,HL + POP DE + LD (HL),E + INC HL + LD (HL),D + LD C,005H +L24EB: INC HL + EX DE,HL + POP HL + LD A,(HL) + RET + +L24F0: LD A,(HL) + SUB 041H + CP 01AH + JP NC,SYNTAXERR + LD E,(HL) + INC HL + CALL MATCHCHR + DB 028H + PUSH DE + CALL L2333 + CALL L1926 + CALL L2712 + POP DE + PUSH HL + LD HL,(04E84H) +L250D: LD A,(HL) + OR A + JP Z,UNDEFFNERR + CP E + JR Z,L251C ; (+007H) + INC HL + INC HL + CALL L1745 + JR L250D ; (-00fH) + +L251C: INC HL + LD E,(HL) + INC HL + PUSH HL + PUSH DE + LD D,020H + CALL L24BD + POP HL + PUSH DE + PUSH HL + LD HL,(04E96H) + LD DE,04E9CH + CALL L1773 + JP Z,FUNCERR + LD BC,0FFFAH + ADD HL,BC + LD (04E96H),HL + POP DE + LD (HL),E + INC HL + POP DE + LD BC,00005H + EX DE,HL + CALL L18A5 + EX DE,HL + LD HL,(04E94H) + CALL L18A5 + POP HL + CALL L2333 + CALL L1926 + CALL L193B + JP NZ,SYNTAXERR + LD HL,(04E96H) + LD E,(HL) + INC HL + LD D,020H + CALL L24BD + CALL L18A5 + ADD HL,BC + LD (04E96H),HL + JP L23F9 + +L256F: CALL INCSKIPSPCE + CP 028H + JP Z,L25F9 + PUSH HL + LD HL,04954H + XOR A + SBC HL,DE + JR Z,L25B2 ; (+032H) + EX DE,HL + LD (L18D8),HL + LD HL,(04E90H) +L2587: CALL L18CE + SUB (HL) + DEC H + JR Z,L25AA ; (+01cH) + LD B,000H + LD C,(HL) + ADD HL,BC + INC HL + INC HL + JR L2587 ; (-00fH) + + LD BC,00004H + EX DE,HL + LD HL,L18D8 + CALL L18A2 + CALL L19C3 + EX DE,HL + ADD HL,BC + DEC HL + LD (HL),00DH + DEC HL + LD (HL),B +L25AA: LD C,(HL) + INC HL + LD B,001H + EX DE,HL + POP HL + LD A,(HL) + RET + +L25B2: CALL TIMRD + EX DE,HL + OR A + JR Z,L25BB ; (+002H) + LD A,00CH +L25BB: EXX + LD HL,L1DF5 + PUSH HL + EXX + LD DE,0F1F0H + CALL L25D9 + LD DE,0FFC4H + CALL L25D8 + LD A,L + CALL L25E2 + POP DE + LD BC,00106H + POP HL + LD A,(HL) + RET + +L25D8: XOR A +L25D9: ADD HL,DE + JR NC,L25DF ; (+003H) + INC A + JR L25D9 ; (-006H) + +L25DF: OR A + SBC HL,DE +L25E2: LD BC,L30F6 +L25E5: ADD A,C + JR NC,L25EB ; (+003H) + INC B + JR L25E5 ; (-006H) + +L25EB: ADD A,03AH + EX AF,AF' + LD A,B + EXX + LD (HL),A + INC HL + EX AF,AF' + LD (HL),A + INC HL + LD (HL),00DH + EXX + RET + +L25F9: LD BC,00100H + JR L2601 ; (+003H) + +L25FE: LD BC,MONIT +L2601: INC HL + CALL L2107 + JP Z,ILDATERR + PUSH HL + LD L,C + LD H,000H + LD C,E + LD E,D + LD B,H + LD D,H + PUSH BC + INC HL + CALL L17CF + POP HL + ADD HL,DE + EX DE,HL + LD A,(L2104) + OR A + JR NZ,L262B ; (+00dH) + LD HL,00005H + CALL L17CF + POP HL + ADD HL,DE + LD BC,00005H + JR L263A ; (+00fH) + +L262B: POP HL + LD B,000H +L262E: LD C,(HL) + INC HL + LD A,D + OR E + JR Z,L2639 ; (+005H) + ADD HL,BC + INC HL + DEC DE + JR L262E ; (-00bH) + +L2639: INC B +L263A: EX DE,HL + LD HL,(L2102) + LD A,(HL) + RET + +L2640: CALL SKIPSPACE + LD BC,L411A + SUB B + CP C + LD A,(HL) + RET NC + LD E,A + LD D,020H +L264D: INC HL + LD A,(HL) + CP D + JR Z,L264D ; (-005H) + SUB B + CP C + JR C,L265A ; (+004H) + SUB 0EFH + CP 00AH +L265A: LD A,(HL) + CCF + RET C + LD D,A + CP 04EH + JR NZ,L2667 ; (+005H) + LD A,046H + CP E + JR Z,L267A ; (+013H) +L2667: INC HL + LD A,(HL) + CP 020H + JR Z,L2667 ; (-006H) + SUB B + CP C + JR C,L2667 ; (-00aH) + SUB 0EFH + CP 00AH + JR C,L2667 ; (-010H) +L2677: LD A,(HL) + SCF + RET + +L267A: CALL INCSKIPSPCE + SCF + RET + +L267F: CALL L2640 + JR NC,L268E ; (+00aH) + LD A,046H + CP E + JR NZ,L268C ; (+003H) + LD A,04EH + CP D +L268C: JR NZ,L2677 ; (-017H) +L268E: JP SYNTAXERR + +L2691: DW L3B62 + DW L3B62 + DW L3B87 + DW L3B87 + DW L3B8B + DW L3B8B + DW L3B7F + DW L3B73 + DW L3B77 + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW L3405 + DW L3403 + DW L3500 + DW L35D0 + DW L4159 +L26B3: DW L26F3 + DW L270F + DW L273E + DW L2765 + DW L2772 + DW L277F + DW L27B4 + DW L279A + DW L27F9 + DW L2801 + DW L2804 + DW L2895 + DW SYNTAXERR + DW SYNTAXERR + DW SYNTAXERR + DW L2824 + DW SYNTAXERR + DW L2841 + DW L287C + DW SYNTAXERR +L26DB: DW L3B98 + DW L3C16 + DW L3D05 + DW L3D14 + DW L4076 + DW L3E03 + DW L3A86 + DW L4064 + DW L3F35 + DW L289D + DW L28A2 + DW L3D3F +L26F3: DB 0CDH + DB 033H + DB 023H + DB 0CDH + DB 094H + DB 02EH +L26F9: PUSH DE + CALL GETNUM + CALL L2712 + EX (SP),HL + PUSH HL + EX DE,HL + CALL L190B + LD A,C + SUB L + JR C,L273A ; (+030H) + PUSH HL + LD C,A + ADD HL,DE + JR L2732 ; (+023H) + +L270F: DB 0CDH +L2710: DB 017H + DB 027H +L2712: CALL MATCHCHR + DB 029H + RET + + CALL L2333 + CALL L2E94 + PUSH DE + CALL GETNUM + JR L2724 ; (+001H) + +L2723: PUSH BC +L2724: EX (SP),HL + PUSH HL + EX DE,HL + CALL L190B + LD A,C + SUB L + JR C,L273A ; (+00cH) + PUSH HL + LD C,A + LD L,E + LD H,D +L2732: EX DE,HL + CALL L19E7 + POP BC + DEC HL + LD (HL),C + INC HL +L273A: POP DE + POP HL + LD A,(HL) + RET + +L273E: CALL L2333 + CALL L2E94 + PUSH DE + PUSH BC + CALL GETNUM + POP BC + LD A,E + OR A + JP Z,ILDATERR + LD A,C + SUB E + JR NC,L2755 ; (+002H) + LD A,PRTD +L2755: INC A + LD E,A + POP BC + CALL L2723 + CALL L2E94 + CP 02DH + JR NZ,L26F9 ; (-069H) + INC HL + JR L2712 ; (-053H) + +L2765: CALL L2333 + CALL L190B + CALL L2712 + PUSH HL + LD A,C + JR L27C4 ; (+052H) + +L2772: CALL L299F + CALL L2712 + LD A,E + LD BC,00001H + JP L280F + +L277F: CALL L2333 + CALL L1926 + CALL L2712 + PUSH HL + LD HL,(04E94H) + LD DE,04AB3H + PUSH DE + CALL L38BB + POP HL + CALL L19F3 + POP HL + LD A,(HL) + RET + +L279A: CALL L2333 + CALL L190B + CALL L2712 + PUSH HL + EX DE,HL + JR L27AA ; (+003H) + + LD HL,L27B2 +L27AA: CALL L1A75 + AND A + DAA + POP HL + LD A,(HL) + RET + +L27B2: DB 030H + DB 00DH +L27B4: CALL L2333 + CALL L190B + CALL L2712 + LD A,C + OR A + JP Z,ILDATERR +L27C2: LD A,(DE) + PUSH HL +L27C4: LD E,A + LD D,000H +L27C7: CALL L27CD + POP HL + LD A,(HL) + RET + +L27CD: LD B,080H + LD A,D + OR E + JR Z,L27E7 ; (+014H) + LD B,0D0H + LD A,D + OR A + JR NZ,L27DE ; (+005H) + LD B,0C8H + LD D,E + LD E,000H +L27DE: EX DE,HL +L27DF: BIT 7,H + JR NZ,L27E6 ; (+003H) + ADD HL,HL + DJNZ L27DF ; (-007H) +L27E6: EX DE,HL +L27E7: LD HL,(04E94H) + LD (HL),B + INC HL + CALL L19BA + LD (HL),E + INC HL + LD (HL),D + LD BC,00005H + LD DE,MONIT + RET + +L27F9: CALL L299F + CALL L2712 + JR L27C2 ; (-03fH) + +L2801: JP SYNTAXERR + +L2804: CALL GETNUM + CALL L2712 + LD A,020H + LD C,E + LD B,000H +L280F: PUSH HL + PUSH AF + CALL L1A1E + POP AF + PUSH DE + PUSH BC + LD B,C + INC B + JR L281D ; (+002H) + +L281B: LD (HL),A + INC HL +L281D: DJNZ L281B ; (-004H) + POP BC + POP DE + POP HL + LD A,(HL) + RET + +L2824: CALL L2333 + CALL L2E94 + PUSH DE + CALL GETNUM + CALL L2712 + EX (SP),HL + PUSH DE + EX DE,HL + CALL L190B + LD A,C + OR A + JP Z,ILDATERR + LD A,(DE) + POP BC + POP HL + JR L280F ; (-032H) + +L2841: CALL L1E69 + LD A,E + CP 028H +L2847: JP NC,ILDATERR + PUSH AF + CALL MATCHCHR + DB 02CH + CALL GETNUM + CALL MATCHCHR + DB 029H + LD A,E + CP 019H + JR NC,L2847 ; (-014H) + POP AF + LD C,A + LD B,E + INC B + PUSH HL + LD HL,(PAGETP) + LD D,000H + LD E,028H + XOR A + SBC HL,DE +L286A: ADD HL,DE + DJNZ L286A ; (-003H) + ADD HL,BC + CALL L2878 + POP HL + LD BC,00001H + JP L280F + +L2878: LD A,(HL) + JP ?DACN + +L287C: CALL EXECNOTCHR + DB 056H + DW L288C + LD A,(01172H) +L2885: LD D,000H + LD E,A + PUSH HL + JP L27C7 + +L288C: CALL MATCHCHR + DB 048H + LD A,(DSPXY) + JR L2885 ; (-010H) + +L2895: PUSH HL + CALL L184A + EX DE,HL + JP L27C7 + +L289D: LD A,(DE) + OR 080H + LD (DE),A + RET + +L28A2: LD A,(DE) + LD DE,L192C + PUSH DE + LD DE,L2A92 + OR A + RET P + LD DE,L2A88 + CP 080H + RET NZ + LD DE,L2A8D + RET + +CMDMON: JP MONIT + +CMDCURSOR: CALL GETNUM + LD A,E + CP 028H +L28BF: JP NC,ILDATERR + PUSH AF + CALL MATCHCHR + DB 02CH + CALL GETNUM + LD A,E + CP 019H + JR NC,L28BF ; (-010H) + PUSH HL + LD HL,(DSPXY) + LD A,E + SUB H + LD H,A + LD A,(MGPNT) + JP M,L28F8 + ADD A,H + SUB 032H + JR NC,L28E3 ; (+002H) + ADD A,032H +L28E3: LD (MGPNT),A + EX DE,HL + LD H,L + POP DE + POP AF + LD L,A + LD (DSPXY),HL + NOP + NOP + NOP + LD (DPRNT),A + EX DE,HL + JP L1B38 + +L28F8: ADD A,H + JP P,L28E3 + ADD A,032H + JR L28E3 ; (-01dH) + + NOP + NOP +CMDGET: CALL L267F + CALL L24B2 + LD (05051H),HL + CALL L1D9A + CALL GETKY + PUSH AF + LD A,(04905H) + OR A + JR Z,L292D ; (+015H) + POP AF + LD BC,MONIT + OR A + JR Z,L2920 ; (+001H) + INC BC +L2920: CALL L280F +L2923: CALL L1D95 + CALL L1DA5 + DW DATMISERR + JR L2998 ; (+06bH) + +L292D: POP AF + LD DE,MONIT + CALL L2939 +L2934: CALL L27CD + JR L2923 ; (-016H) + +L2939: OR A + RET Z + SUB 030H + CP 00AH + RET NC + LD E,A + RET + +CMDUSRN: CALL L299F + PUSH DE + CALL EXECNOTCHR + DB 02CH + DW L2959 + CALL L267F + CALL L24B2 + LD A,B + OR A + JP Z,DATMISERR + LD B,000H +L2959: CALL L2712 + LD (05051H),HL + CALL L13FA + LD HL,L1B35 + EX (SP),HL + JP (HL) + +CMDLIMIT: LD DE,L299B + CALL L14C7 + JR NZ,L2977 ; (+008H) + LD (05051H),HL + LD HL,(04908H) + JR L2994 ; (+01dH) + +L2977: CALL L299F + LD (05051H),HL + LD HL,(04908H) + CALL L1773 + JP C,ILDATERR + LD HL,(04E94H) + LD BC,000C8H + ADD HL,BC + CALL L1773 + JP NC,BADWRERR + EX DE,HL +L2994: LD (0490AH),HL + LD SP,HL +L2998: JP L1B35 + +L299B: LD C,L + LD B,C + RET C + NOP +L299F: CALL EXECNOTCHR + DB 024H + DW L29CB + LD DE,MONIT +L29A8: CALL L176A + JR NC,L29C2 ; (+015H) +L29AD: AND 00FH + LD C,A + LD B,000H + LD A,D + AND 0F0H + JP NZ,ILDATERR + EX DE,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,HL + ADD HL,BC + EX DE,HL + INC HL + JR L29A8 ; (-01aH) + +L29C2: SUB 041H + CP 006H + RET NC + ADD A,00AH + JR L29AD ; (-01eH) + +L29CB: JP L1E69 + +CMDCONT: CALL L1AA7 + LD A,(L1463) + OR A + JP Z,CONTERR + PUSH AF + XOR A + CALL L29EB + POP AF + LD HL,(05051H) + OR A + JP M,L2C56 + DEC A + JR Z,L2998 ; (-050H) + JP L1B5F + +L29EB: LD (L1463),A + LD DE,L1464 + LD BC,LETNL + LD HL,0504DH + OR A + JR NZ,L29FB ; (+001H) + EX DE,HL +L29FB: LDIR + RET + +CMDINP: CALL GETNUM + CALL L2E94 + LD A,E + LD (L2A15),A + CALL L267F + CALL L24B2 + LD (05051H),HL + CALL L1D9A + DB 0DBH +L2A15: DB 0FFH + LD E,A + LD D,000H + JP L2934 + +CMDOUT: CALL GETNUM + CALL L2E94 + LD A,E + LD (L2A2B),A + CALL GETNUM + LD A,E + DB 0D3H +L2A2B: DB 0FFH +L2A2C: JP L1B38 + +CMDAUTO: CALL L1AA7 + CALL L193B + JR Z,L2A5F ; (+028H) + CALL EXECNOTCHR + DB 02CH + DW L2A3F + JR L2A71 ; (+032H) + +L2A3F: CALL L2A7A + LD (02A84H),DE + CALL L193B + JR Z,L2A6C ; (+021H) + CALL EXECNOTCHR + DB 02CH + DW SYNTAXERR +L2A51: CALL L2A7A + LD (02A86H),DE +L2A58: LD A,001H + LD (L2A83),A + JR L2A2C ; (-033H) + +L2A5F: LD DE,0000AH + LD (02A84H),DE +L2A66: LD (02A86H),DE + JR L2A58 ; (-014H) + +L2A6C: LD DE,0000AH + JR L2A66 ; (-00bH) + +L2A71: LD DE,0000AH + LD (02A84H),DE + JR L2A51 ; (-029H) + +L2A7A: CALL L1E69 + LD A,D + OR E + RET NZ + JP SYNTAXERR + +L2A83: DB 000H +L2A84: DB 00AH + DB 000H + DB 00AH + DB 000H +L2A88: DB 0C1H + DB 000H + DB 000H + DB 000H + DB 080H +L2A8D: DB 080H + DB 000H + DB 000H + DB 000H + DB 000H +L2A92: DB 041H + DB 000H + DB 000H + DB 000H + DB 080H +L2A97: DB 0C2H + DB 0A1H + DB 0DAH + DB 00FH + DB 0C9H + AND 00FH + ADD A,030H + CP 03AH + RET C + ADD A,007H + RET + +CMDSET: LD A,001H + JR L2AAB ; (+001H) + +CMDRESET: XOR A +L2AAB: PUSH AF + CALL GETNUM + PUSH DE + CALL MATCHCHR + DB 02CH + CALL GETNUM + LD (05051H),HL + LD A,E +L2ABB: SUB 032H + JR NC,L2ABB ; (-004H) + ADD A,032H + LD E,A + POP BC + LD A,C +L2AC4: SUB 050H + JR NC,L2AC4 ; (-004H) + ADD A,050H + LD C,A + XOR A + SRL C + JR NC,L2ADE ; (+00eH) + SRL E + JR NC,L2AD8 ; (+004H) + ADD A,004H +L2AD6: ADD A,002H +L2AD8: ADD A,001H +L2ADA: ADD A,001H + JR L2AE4 ; (+006H) + +L2ADE: SRL E + JR NC,L2ADA ; (-008H) + JR L2AD6 ; (-00eH) + +L2AE4: PUSH AF + LD HL,(PAGETP) + LD A,028H +L2AEA: ADD HL,DE + DEC A + JR NZ,L2AEA ; (-004H) + ADD HL,BC + RES 3,H + LD A,(HL) + CP 0F0H + JR NC,L2AF8 ; (+002H) + LD A,0F0H +L2AF8: POP BC + LD C,A + POP AF + OR A + LD A,B + JR Z,L2B02 ; (+003H) + OR C + JR L2B04 ; (+002H) + +L2B02: CPL + AND C +L2B04: CP 0F0H + JR NZ,L2B09 ; (+001H) + XOR A +L2B09: LD (HL),A + JP L1B35 + +CMDPRINT: CALL EXECNOTCHR ; Check to see if a stream, ie. /T = Tape is given. The 02FH below is / and the function after is called if it doesnt match /. + DB 02FH + DW L2B18 + CALL L2E9B + JR L2B1E ; (+006H) + +L2B18: CALL L2DBA + CALL L2E94 +L2B1E: CALL L193B + JR NZ,L2B2F ; (+00cH) + LD (05051H),HL +L2B26: LD HL,L2BEF + CALL L2BE3 + JP L1B35 + +L2B2F: CALL EXECNOTCHR + DB 03BH + DW L2B35 +L2B35: LD BC,L2B4D + PUSH BC + CP 02CH + RET NZ + INC HL + LD A,(04DD4H) + OR A + RET P + AND 07FH + JP Z,PRNTT + CP 002H + RET NZ + JP L326E + +L2B4D: CALL L193B + LD (05051H),HL + JP NZ,L2B60 + LD A,(04DD4H) + OR A + JP M,L1B35 + JP L2B26 + +L2B60: CP 03BH + JR Z,L2B66 ; (+002H) + CP 02CH +L2B66: JP Z,L2B2F + CALL EXECNOTCHR + DB 0A9H + DW L2B9A + CALL GETNUM + CALL MATCHCHR + DB 029H + LD D,013H + LD A,(DPRNT) + LD B,A + LD A,(04DD4H) + CP 080H + JR Z,L2B8D ; (+00aH) + LD D,020H + CP 082H + JR NZ,L2BBD ; (+034H) + LD A,(L32D3) + LD B,A +L2B8D: LD A,E + SUB B + JR C,L2B2F ; (-062H) + LD C,A + LD B,000H + LD A,D + CALL L280F + JR L2B9D ; (+003H) + +L2B9A: CALL L2293 +L2B9D: PUSH HL + LD HL,LINEBUFR + LD A,D + OR A + CALL Z,L2BC0 + CALL NZ,L2BD0 + LD HL,L2BF7 + CALL L2BE3 + LD HL,L2B1E + EX (SP),HL + CALL L193B + RET Z + CP 03BH + RET Z + CP 02CH + RET Z +L2BBD: JP SYNTAXERR + +L2BC0: PUSH AF + PUSH HL + EX DE,HL + LD HL,(04E94H) + CALL L38BB + POP HL + CALL L18FD + JP L2BD9 + +L2BD0: PUSH AF + CALL L190B + EX DE,HL + CALL L18A5 + EX DE,HL +L2BD9: DEC HL + LD (HL),C + INC HL + PUSH HL + ADD HL,BC + LD (HL),00DH + POP DE + POP AF +L2BE2: RET + +L2BE3: LD A,(04DD4H) + ADD A,080H + CALL L13FA + CALL L2E12 + JP (HL) + +L2BEF: LD B,000H + XOR E + INC DE + AND A + LD SP,L2BE2 +L2BF7: DEC D + NOP + XOR E + INC DE + OR H + LD SP,L3064 +CMDINPUT: CALL L1AAF + CALL EXECNOTCHR + DB 02FH + DW L2C0E + CALL L2E9B + JP L2C62 + +L2C0E: CALL L2DBA + CALL SKIPSPACE + CP 022H + LD DE,L2C5F + JR NZ,L2C25 ; (+00aH) + CALL L2333 + CALL MATCHCHR + DB 03BH + CALL L190B +L2C25: LD (05051H),HL +L2C28: CALL MSG + LD A,(DPRNT) + LD B,A + LD L,A + LD H,000H + LD DE,LINEBUFR + ADD HL,DE + LD (L2C8C),HL + CALL GETL + EX DE,HL + LD A,(HL) + CP 01BH + JR NZ,L2C4A ; (+008H) + LD A,080H + CALL L29EB + JP L1438 + +L2C4A: INC B + LD A,00DH +L2C4D: CP (HL) + JR Z,L2C56 ; (+006H) + INC HL + DJNZ L2C4D ; (-006H) + JP L2C8E + +L2C56: CALL NL + LD DE,L2C5F + JP L2C28 + +L2C5F: CCF + JR NZ,L2C6F ; (+00dH) +L2C62: CALL L2E94 + LD (05051H),HL +L2C68: LD DE,LINEBUFR + PUSH DE + LD HL,L2C84 +L2C6F: CALL L2BE3 + POP HL + DEC HL + LD (HL),C + INC HL + LD A,B + OR A + JP NZ,STRLENERR + CALL L1A0E + LD HL,L2C68 + JP L2CC8 + +L2C84: XOR E + INC DE + XOR E + INC DE + XOR E + INC DE + ADC A,A + DB 030H +L2C8C: DB 00FH + DB 049H +L2C8E: LD A,(04DD4H) + CP 081H + JP Z,L2D1D + LD HL,(L2C8C) + CALL L18FD + LD DE,LINEBUFR + PUSH DE + INC BC + LDIR + POP HL + LD (L2C8C),HL + CALL SKIPSPACE + CP 00DH + JP Z,L2C56 + CALL EXECNOTCHR + DB 02CH + DW L2CBF + PUSH HL + LD DE,L2D11 + CALL L19F3 + POP HL + JR L2CC2 ; (+003H) + +L2CBF: CALL L19F3 +L2CC2: LD (L2C8C),HL + LD HL,L2C8E +L2CC8: PUSH HL + CALL L1D95 + LD HL,(05051H) + CALL L267F + CALL L24B2 + LD (05051H),HL + CALL L1D9A +L2CDB: CALL L1DA5 + DW L2CF4 + LD HL,(05051H) + CALL L193B + JR NZ,L2CEC ; (+004H) + POP AF + JP L1B35 + +L2CEC: CALL MATCHCHR + DB 02CH + LD (05051H),HL + RET + +L2CF4: LD DE,(04902H) + CALL L190B + EX DE,HL + CALL EXECNOTCHR + DB 00DH + DW L2D05 + LD HL,L2D10 +L2D05: CALL L1A75 + OR H + INC DE + CALL L1D95 + JP L2CDB + +L2D10: DB 030H +L2D11: DB 00DH +CMDREAD: LD (05051H),HL + LD A,081H + LD (04DD4H),A + CALL L1AAF +L2D1D: LD A,(05059H) + OR A + CALL Z,L2D43 + LD HL,(0505AH) + CALL L193B + JR NZ,L2D32 ; (+006H) + CALL L2D6B + JP L2D1D + +L2D32: CALL L19F3 + CALL L2E94 + LD (0505AH),HL + LD HL,LINEBUFR + LD (HL),00DH + JP L2CC2 + +L2D43: LD HL,0505CH +L2D46: XOR A + LD (05059H),A +L2D4A: LD A,(HL) + INC HL + OR (HL) + INC HL + JP Z,READDATAERR + INC HL + INC HL +L2D53: CALL EXECNOTCHR + DB 080H + DW L2D68 + CALL EXECNOTCHR + DB 081H + DW L2D68 + LD (0505AH),HL + LD A,001H + LD (05059H),A + RET + +L2D68: CALL L174F +L2D6B: INC HL + CP 03AH + JP Z,L2D53 + JP L2D4A + +L2D74: DB 001H +CMDLOAD: CALL EXECNOTCHR + DB 02FH + DW L2EDA + CALL MATCHCHR + DB 054H + JP L2EDA + +CMDSAVE: CALL L1AA7 + CALL EXECNOTCHR + DB 02FH + DW L2FE0 + CALL MATCHCHR + DB 054H + JP L2FE0 + +CMDROPEN: CALL EXECNOTCHR + DB 02FH + DW L311E + CALL MATCHCHR + DB 054H + JP L311E + +CMDWOPEN: CALL EXECNOTCHR + DB 02FH + DW L30E5 + CALL MATCHCHR + DB 054H + JP L30E5 + + NOP +CMDCLOSE: CALL EXECNOTCHR + DB 02FH + DW L3171 + CALL MATCHCHR + DB 054H + JP L3171 + +L2DBA: LD A,080H + LD (04DD4H),A + OR A + RET + +L2DC1: LD HL,04DF2H + LD DE,NL + LD B,00AH +L2DC9: CP (HL) + JR Z,L2DD2 ; (+006H) + ADD HL,DE + DJNZ L2DC9 ; (-006H) + JP L177A + +L2DD2: LD A,00AH + SUB B + JP L1784 + +L2DD8: LD A,B + OR C + JR Z,L2DDE ; (+002H) + INC BC + INC BC +L2DDE: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + PUSH HL + LD H,B + LD L,C + CALL L1773 + POP HL + JR Z,L2DF7 ; (+00cH) + EX DE,HL + PUSH BC + LD C,L + LD B,H + CALL L19E7 + POP BC + CALL L19C0 + EX DE,HL +L2DF7: LD D,H + LD E,L + LD A,C + OR B + RET Z + LD (HL),C + INC HL + LD (HL),B + DEC HL + DEC BC + DEC BC + RET + + CALL L2DD8 + INC HL + INC HL + RET + +L2E09: PUSH BC + LD BC,MONIT + CALL L2DD8 + POP BC + RET + +L2E12: ADD A,A + ADD A,L + LD L,A + JR NC,L2E18 ; (+001H) + INC H +L2E18: LD A,(HL) + INC HL + LD H,(HL) + LD L,A + RET + +L2E1D: LD DE,CMTFNAME ; Compare loaded filename against name given by user. + PUSH HL + INC HL + LD B,010H +L2E24: LD A,(DE) + CP (HL) + JR NZ,L2E31 ; (+009H) +L2E28: INC HL + INC DE + CP 00DH + JR Z,L2E31 ; (+003H) + DEC B + JR NZ,L2E24 ; (-00dH) +L2E31: POP HL + RET + +CMTBUF: DB 002H +CMTFNAME: DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + PUSH HL + LD HL,GETL + LD (04DD6H),HL + LD HL,04DD8H + LD B,005H +L2E5F: LD (HL),000H + INC HL + DJNZ L2E5F ; (-005H) + LD HL,CMTFNAME + LD B,011H +L2E69: LD (HL),00DH + INC HL + DJNZ L2E69 ; (-005H) + LD B,00EH +L2E70: LD (HL),000H + INC HL + DJNZ L2E70 ; (-005H) + POP HL + CALL L2E94 + CALL L2333 + LD A,D + OR A + JP Z,UNKNWNERR + LD A,C + DEC A + CP 010H + JP NC,UNKNWNERR + PUSH HL + CALL L190B + LD HL,CMTFNAME + EX DE,HL + LDIR + POP HL + RET + +L2E94: CALL EXECNOTCHR + DB 02CH + DW L2E9A +L2E9A: RET + +L2E9B: LD B,000H + LD DE,L2EB0 + CALL L14C9 + JP NZ,SYNTAXERR + CALL L2E94 + LD A,B + ADD A,082H + LD (04DD4H),A + RET + +L2EB0: DB 0D0H + DB 0D4H + DB 000H +CMDVERIFY: CALL L1AA7 + XOR A + JR L2EDC ; (+023H) + +L2EB9: LD A,(ATRB) + CP 002H + JR NZ,L2EE6 ; (+026H) + CALL L2F62 + CALL L1B1B + CALL ?VRFY + PUSH AF + CALL L1AC7 + POP AF + JP C,L30B3 + LD DE,L2FDD + CALL MSGNL + JP L1B35 + +L2EDA: LD A,001H +L2EDC: LD (L2D74),A + LD BC,L2EE6 + PUSH BC + JP L2FE4 + +L2EE6: CALL ?RDI + JP C,L30B3 + CALL L2F67 + LD HL,ATRB + LD A,(HL) + OR A + JR Z,L2EE6 ; (-010H) + CP 004H + JR NC,L2EE6 ; (-014H) + LD DE,CMTFNAME + LD A,(DE) + CP 00DH + JR Z,L2F07 ; (+005H) + CALL L2E1D + JR NZ,L2EE6 ; (-021H) +L2F07: LD A,(L2D74) + OR A + JR Z,L2EB9 ; (-054H) + LD A,(ATRB) + CP 001H + JP Z,L2F8E + CP 002H + JR NZ,L2EE6 ; (-033H) + CALL L1944 + LD HL,(SIZE) + DEC HL + DEC HL + LD C,L + LD B,H + LD DE,0505CH + CALL L1888 + CALL L19C3 + LD (DTADR),DE + CALL L2F6C + CALL ?RDD + JR C,L2F3E ; (+006H) + CALL L1ABF + JP L1B35 + +L2F3E: PUSH AF + CALL L2F4B + POP AF + PUSH AF + CALL L1944 + POP AF + JP L30B3 + +L2F4B: LD DE,0505EH + LD HL,04E4EH + XOR A + SBC HL,DE + RET Z + LD C,L + LD B,H + DEC DE + DEC DE + CALL L1873 + CALL L1762 + JP L19C3 + +L2F62: LD DE,L2FD2 + JR L2F6F ; (+008H) + +L2F67: LD DE,L2FC2 + JR L2F6F ; (+003H) + +L2F6C: LD DE,L2FC9 +L2F6F: CALL MSGNL + LD DE,NAME + LD A,(DE) + CP 00DH + RET Z + PUSH DE + CALL L2F86 + POP DE + LD A,00DH + LD (01101H),A + CALL MSGX +L2F86: LD DE,L2F8C + JP MSGX + +L2F8C: DB 022H + DB 00DH +L2F8E: LD HL,(DTADR) + EX DE,HL + LD HL,(0490AH) + DEC HL + CALL L1773 + JR NC,L2FB6 ; (+01bH) + LD HL,(SIZE) + ADD HL,DE + JR C,L2FBC ; (+01bH) + EX DE,HL + LD HL,(04908H) + CALL L1773 + JR C,L2FBC ; (+012H) + CALL L2F6C + CALL ?RDD + JP C,L30B3 + JP L1B35 + +L2FB6: CALL MSTOP + JP BADWRERR + +L2FBC: CALL MSTOP + JP MEMERR + +L2FC2: DB "F",0B7H,0A5H,0B0H,09CH," " + DB 00DH +L2FC9: DB "L",0B7H,0A1H,09CH,0A6H,0B0H,097H," " + DB 00DH +L2FD2: DB "V",092H,09DH,0A6H,0AAH,0BDH,0A6H,0B0H,097H," " + DB 00DH +L2FDD: DB "OK" + DB 00DH +L2FE0: LD BC,L3038 + PUSH BC +L2FE4: CALL EXECNOTCHR + DB 02CH + DW L2FEA +L2FEA: PUSH HL + LD HL,CMTBUF + LD (HL),002H +L2FF0: LD B,011H +L2FF2: INC HL + LD (HL),00DH + DJNZ L2FF2 ; (-005H) + CALL L1459 + POP HL + CALL L193B + LD (05051H),HL + RET Z + CALL L2333 + CALL L193B + JP NZ,SYNTAXERR + LD (05051H),HL + LD A,D + OR A + JP Z,UNKNWNERR + CALL L190B + LD A,C + OR A + RET Z + CP 011H + JP NC,UNKNWNERR + EX DE,HL + LD DE,CMTFNAME + LDIR + RET + +L3025: LD DE,ATRB + LD HL,CMTBUF + LD BC,PRNT + LDIR + LD B,06EH +L3032: XOR A + LD (DE),A + INC DE + DJNZ L3032 ; (-005H) + RET + +L3038: CALL L3025 + LD HL,0505CH + LD (DTADR),HL + LD DE,0505CH + LD HL,(04E4EH) + XOR A + SBC HL,DE + LD (SIZE),HL + CALL ?WRI + JP C,L30B8 + CALL L1B1B + CALL ?WRD + PUSH AF + CALL L1ABF + POP AF + JP C,L30B8 + JP WARMSTRT + +L3064: CALL L1459 + LD A,(L30E2) + CP 001H + JR NZ,L309A ; (+02cH) + LD HL,(L30E3) +L3071: PUSH DE + LD DE,04DD3H + CALL L1773 + JR C,L3082 ; (+008H) + CALL ?WRD + JR C,L30B8 ; (+039H) + LD HL,04CD3H +L3082: POP DE + LD A,(DE) + LD (HL),A + INC HL + INC DE + CP 00DH + JR NZ,L3071 ; (-01aH) + LD (L30E3),HL + RET + + CALL L1459 + LD A,(L30E2) + PUSH DE + LD C,000H + CP 002H +L309A: JP NZ,OUTFILEERR + LD (L2D74),A + LD HL,(L30E3) +L30A3: PUSH DE + LD DE,04DD3H + CALL L1773 + JR C,L30BE ; (+012H) + PUSH BC + CALL ?RDD + POP BC + JR NC,L30BB ; (+008H) +L30B3: CP 002H + JP NZ,CHKSUMERR +L30B8: JP L1438 + +L30BB: LD HL,04CD3H +L30BE: LD A,(HL) + LD B,A + CP PRTD + JR NZ,L30CC ; (+008H) + LD A,(L2D74) + CP 002H + JP Z,OUTFILEERR +L30CC: XOR A + LD (L2D74),A + LD A,B + POP DE + LD (DE),A + INC HL + INC DE + INC C + CP 00DH + JR NZ,L30A3 ; (-037H) + DEC C + POP DE + LD (L30E3),HL + LD B,000H + RET + +L30E2: NOP +L30E3: NOP + NOP +L30E5: CALL L1AAF + LD A,(L30E2) + OR A + JP NZ,OPENERR + LD BC,L30FC + PUSH BC + PUSH HL + DB 021H + DB 033H +L30F6: DB 02EH + LD (HL),003H + JP L2FF0 + +L30FC: CALL L3025 + LD HL,00100H + LD (SIZE),HL + LD HL,04CD3H + LD (L30E3),HL + LD (DTADR),HL + CALL ?WRI +L3111: JR C,L30B8 ; (-05bH) + CALL MSTOP + LD A,001H + LD (L30E2),A +L311B: JP L1B35 + +L311E: CALL L1AAF + LD A,(L30E2) + OR A + JP NZ,OPENERR + LD BC,L313A + PUSH BC + LD A,002H + LD (L2D74),A + PUSH HL + LD HL,CMTBUF + LD (HL),004H + JP L2FF0 + +L313A: CALL ?RDI + JP C,L30B3 + LD HL,ATRB + LD A,(HL) + CP 003H + JR NZ,L313A ; (-00eH) + LD DE,CMTFNAME + LD A,(DE) + CP 00DH + JR Z,L3155 ; (+005H) + CALL L2E1D + JR NZ,L313A ; (-01bH) +L3155: LD A,002H + LD (L30E2),A + CALL MSTOP + LD HL,04CD3H + LD (DTADR),HL + LD HL,00100H + LD (SIZE),HL + LD HL,04DD3H + LD (L30E3),HL + JR L311B ; (-056H) + +L3171: CALL L1459 + LD A,(L30E2) + OR A + JR Z,L3195 ; (+01bH) + PUSH HL + DEC A + JR NZ,L3190 ; (+012H) + LD HL,(L30E3) + LD DE,04DD3H + CALL L1773 + JR NC,L3198 ; (+00fH) +L3189: LD (HL),PRTD + CALL ?WRD +L318E: JR C,L3111 ; (-07fH) +L3190: XOR A + LD (L30E2),A + POP HL +L3195: JP CMDREMDATA + +L3198: CALL ?WRD + JR C,L318E ; (-00fH) + LD HL,04CD3H + JR L3189 ; (-019H) + +L31A2: LD A,(L32D3) + OR A + RET Z +L31A7: CALL L32C2 + LD A,00DH + CALL L3291 + XOR A + LD (L32D3),A + RET + + PUSH BC + PUSH DE + LD A,(L32D3) + LD B,A +L31BA: LD A,(DE) + CP 00DH + JP Z,L3258 + CP 020H + CALL C,L31CC + CALL L3291 + INC B + INC DE + JR L31BA ; (-012H) + +L31CC: CP 005H + JR Z,L31F0 ; (+020H) + CP 006H + JR Z,L3200 ; (+02cH) + CP 010H + JR Z,L3221 ; (+049H) + CP 011H + JR Z,L31F9 ; (+01dH) + CP 012H + JR Z,L31F5 ; (+015H) + CP 013H + JR Z,L3226 ; (+042H) + CP 014H + JR Z,L322A ; (+042H) + CP 015H + JR Z,L3238 ; (+04cH) + POP AF + INC DE + JR L31BA ; (-036H) + +L31F0: LD A,00FH +L31F2: LD B,PRTD + RET + +L31F5: LD A,00BH + JR L31F2 ; (-007H) + +L31F9: LD A,009H + LD (L326D),A + JR L31F2 ; (-00eH) + +L3200: LD A,00CH + CALL L3291 + LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,00BH + CALL L3291 + LD A,00AH + CALL L3291 + CALL L3267 + CALL L3291 + JR L31F0 ; (-031H) + +L3221: CALL L3267 + JR L31F2 ; (-034H) + +L3226: LD A,00CH + JR L31F2 ; (-038H) + +L322A: LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,009H + JR L31F2 ; (-046H) + +L3238: LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,00BH + JR L31F2 ; (-054H) + +L3246: PUSH BC + PUSH DE + LD A,(L32D3) + LD B,A +L324C: LD A,(DE) + CP 00DH + JR Z,L3258 ; (+007H) + CALL L3291 + INC DE + INC B + JR L324C ; (-00cH) + +L3258: LD A,B + CP 0A0H + JR C,L325F ; (+002H) + SUB 0A0H +L325F: LD (L32D3),A + POP DE + POP BC + JP L32C2 + +L3267: LD A,00AH + LD (L326D),A + RET + +L326D: LD A,(BC) +L326E: PUSH BC + PUSH DE + LD A,(L32D3) + LD B,A +L3274: LD A,020H + CALL L3291 + INC B + LD A,B +L327B: SUB 00AH + JR C,L3274 ; (-00bH) + JR NZ,L327B ; (-006H) + JP L3258 + +L3284: CALL L3291 + CALL L32A5 + IN A,(PRTC) + RRCA + RRCA + RET + +L328F: LD A,01BH +L3291: PUSH AF + CALL L32A5 + POP AF + OUT (PRTD),A + LD A,080H + OUT (PRTC),A + LD A,001H + CALL L32A6 + XOR A + OUT (PRTC),A + RET + +L32A5: XOR A +L32A6: PUSH BC + PUSH DE + LD C,A + LD B,00FH + LD DE,MONIT +L32AE: IN A,(PRTC) + AND 00DH + CP C + JR Z,L32BF ; (+00aH) + DEC DE + LD A,D + OR E + JR NZ,L32AE ; (-00cH) + DJNZ L32AE ; (-00eH) + JP PRTNRDYERR + +L32BF: POP DE + POP BC + RET + +L32C2: LD A,007H + CALL L3284 + JP NC,PRTPAPERERR + LD A,008H + CALL L3284 + RET C + JP PRTHWERR + +L32D3: NOP +CMDPAGE: CALL GETNUM + LD A,E + OR A + JP Z,ILDATERR + LD A,009H + CALL L3291 + LD A,009H + CALL L3291 + LD A,E + PUSH AF + RRCA + RRCA + RRCA + RRCA + CALL ASC + CALL L3291 + POP AF + CALL ASC + CALL L3291 + JP L1B38 + +L32FC: CALL L31A7 + JP L1B35 + + CALL L193B + LD (05051H),HL + JR Z,L32FC ; (-00eH) + PUSH HL + CALL L338A + LD BC,00500H + CALL L2DD8 + POP HL +L3315: CALL L193B + LD (05051H),HL + JR Z,L3373 ; (+056H) + CALL L2E94 + CALL EXECNOTCHR + DB 03BH + DW L3326 +L3326: CALL L2293 + PUSH HL + LD HL,(04E80H) + PUSH BC + LD BC,003F0H + ADD HL,BC + POP BC + LD A,D + OR A + CALL Z,L2BC0 + CALL NZ,L2BD0 + LD A,B + OR C + JR Z,L3362 ; (+023H) + PUSH DE + LD HL,(04E80H) + INC HL + INC HL + LD E,(HL) + INC HL + LD D,(HL) + DEC HL + PUSH DE + PUSH HL + EX DE,HL + ADD HL,BC + XOR A + EX DE,HL + LD HL,003E8H + SBC HL,DE + JP C,ILDATERR + POP HL + LD (HL),E + INC HL + LD (HL),D + INC HL + POP DE + ADD HL,DE + POP DE + EX DE,HL + LDIR +L3362: LD HL,L3315 + EX (SP),HL + CALL L193B + RET Z + CP 03BH + RET Z + CP 02CH + RET Z + JP SYNTAXERR + +L3373: LD HL,(04E80H) + INC HL + INC HL + LD E,(HL) + INC HL + LD D,(HL) + LD A,D + OR E + JR Z,L3387 ; (+008H) + INC HL + EX DE,HL + CALL L3390 + CALL L338A +L3387: JP L1B35 + +L338A: LD HL,(04E80H) + JP L2E09 + +L3390: CALL L328F + LD A,018H + CALL L3291 + LD A,L + CALL L3291 + LD A,H + CALL L3291 +L33A0: LD A,(DE) + CALL L3291 + INC DE + DEC HL + LD A,H + OR L + JR NZ,L33A0 ; (-00aH) + RET + +CMDCOPY: CALL L193B + JP Z,SYNTAXERR + INC HL + LD (05051H),HL + SUB 034H + JP Z,SYNTAXERR + INC A + JP Z,SYNTAXERR + INC A + JP Z,SYNTAXERR + INC A + JP NZ,SYNTAXERR + LD HL,(PAGETP) + LD C,019H +L33CB: CALL L31A7 + LD A,028H + LD B,A +L33D1: CALL L2878 + OR A + JR Z,L33DB ; (+004H) + CP 00DH + JR NZ,L33DD ; (+002H) +L33DB: LD A,020H +L33DD: CALL L3291 + CALL BRKEY + JR Z,L33FD ; (+018H) + INC HL + DJNZ L33D1 ; (-017H) + DEC C + JR NZ,L33CB ; (-020H) + CALL L31A7 + JP L1B35 + +L33F1: CALL L328F + LD A,(L326D) + JP L3291 + + CALL L33F1 +L33FD: JP L1438 + +L3400: DB 000H +L3401: DB 080H +L3402: DB 086H +L3403: XOR A + DB 001H +L3405: LD A,080H + PUSH DE + XOR (HL) + CPL + LD C,A + LD A,(DE) + AND 080H + LD B,A + XOR C + CPL + AND 080H + LD C,A +L3414: PUSH BC + LD B,(HL) + RES 7,B + LD A,(DE) + AND 07FH + CP B + JR NC,L3428 ; (+00aH) + POP BC + EX DE,HL + LD A,B + XOR C + CPL + AND 080H + LD B,A + JR L3414 ; (-014H) + +L3428: LD C,A + ADD A,040H + LD (L3402),A + LD A,C + SUB B + POP BC + LD (03400H),BC + PUSH DE + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + POP HL + INC HL + JR Z,L345C ; (+01aH) +L3442: CP 008H + JR NC,L3453 ; (+00dH) +L3446: SRL B + RR C + RR D + RR E + DEC A + JR NZ,L3446 ; (-00bH) + JR L345C ; (+009H) + +L3453: LD E,D + LD D,C + LD C,B + LD B,000H + SUB 008H + JR NZ,L3442 ; (-01aH) +L345C: LD A,(L3400) + OR A + JR Z,L349C ; (+03aH) + LD A,(HL) + INC HL + ADD A,E + LD E,A + LD A,(HL) + INC HL + ADC A,D + LD D,A + LD A,(HL) + INC HL + ADC A,C + LD C,A + LD A,(HL) + ADC A,B + LD B,A + JR NC,L347F ; (+00cH) + RR B + RR C + RR D + RR E + LD HL,L3402 + INC (HL) +L347F: LD HL,L3402 + LD A,(HL) + SUB 040H + JR C,L348E ; (+007H) + JP M,OVFLERR + DEC HL + OR (HL) + JR L3491 ; (+003H) + +L348E: CALL L3CDE +L3491: POP HL +L3492: LD (HL),A + INC HL + LD (HL),E + INC HL + LD (HL),D + INC HL + LD (HL),C + INC HL + LD (HL),B + RET + +L349C: LD A,(HL) + INC HL + SUB E + LD E,A + LD A,(HL) + INC HL + SBC A,D + LD D,A + LD A,(HL) + INC HL + SBC A,C + LD C,A + LD A,(HL) + SBC A,B + LD B,A + CALL C,L34E4 + OR C + OR D + JR NZ,L34B7 ; (+005H) + LD A,E + CP 03FH + JR C,L348E ; (-029H) +L34B7: LD HL,L3402 +L34BA: LD A,B + OR A + JP M,L347F + JR NZ,L34D4 ; (+013H) + LD A,(HL) + SUB 008H + JR C,L348E ; (-038H) + LD (HL),A + LD A,C + OR D + OR E + JR Z,L348E ; (-03eH) + LD B,C + LD C,D + LD D,E + LD E,000H + JP L34BA + +L34D4: DEC (HL) + JR C,L348E ; (-049H) + SLA E + RL D + RL C + RL B + JP P,L34D4 + JR L347F ; (-065H) + +L34E4: LD HL,L3401 + LD A,(HL) + ADD A,080H + LD (HL),A + LD A,E + CPL + ADD A,001H + LD E,A + LD A,D + CPL + ADC A,000H + LD D,A + LD A,C + CPL + ADC A,000H + LD C,A + LD A,B + CPL + ADC A,000H + LD B,A + RET + +L3500: PUSH DE + LD A,(DE) + XOR (HL) + CPL + AND 080H + LD (L3401),A + LD B,(HL) + RES 7,B + LD A,(DE) + AND 07FH + ADD A,B + JP Z,L348E + DEC A +L3514: CP 030H + JP C,L348E + CP 0E0H + JP NC,OVFLERR + LD (L3402),A + XOR A + LD (L3400),A + LD BC,00004H + ADD HL,BC + LD A,(HL) + OR A + JP P,L348E + PUSH HL + POP IY + LD C,B + EX DE,HL + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + LD H,B + LD L,B + EXX + POP HL + LD E,(HL) + INC HL + LD D,(HL) + LD HL,MONIT + LD A,D + OR A + JP P,L348E + LD C,004H +L354A: LD A,(IY+000H) + LD B,008H + OR A + JR Z,L35C5 ; (+073H) +L3552: RLA + JR NC,L3569 ; (+014H) + EX AF,AF' + EXX + LD A,B + ADD A,C + LD C,A + ADC HL,DE + EXX + ADC HL,DE + JR NC,L3568 ; (+007H) + LD A,(L3400) + INC A + LD (L3400),A +L3568: EX AF,AF' +L3569: SRL D + RR E + EXX + RR D + RR E + RR B + EXX + DJNZ L3552 ; (-025H) +L3577: DEC IY + DEC C + JR NZ,L354A ; (-032H) + LD A,(L3400) + OR A + JR Z,L3599 ; (+017H) + LD B,A + LD A,(L3402) + ADD A,B + LD (L3402),A +L358A: SCF + RR H + RR L + EXX + RR H + RR L + RR C + EXX + DJNZ L358A ; (-00fH) +L3599: EXX + LD A,C + OR A + JP P,L35BD + LD DE,00001H + ADD HL,DE + EXX + LD DE,MONIT + ADC HL,DE + JR NC,L35BC ; (+011H) + RR H + RR L + EXX + RR H + RR L + EXX + LD A,(L3402) + INC A + LD (L3402),A +L35BC: EXX +L35BD: PUSH HL + EXX + LD B,H + LD C,L + POP DE + JP L34B7 + +L35C5: LD A,E + LD E,D + LD D,000H + EXX + LD B,E + LD E,D + LD D,A + EXX + JR L3577 ; (-059H) + +L35D0: PUSH DE + LD A,(DE) + XOR (HL) + CPL + AND 080H + LD (L3401),A + LD B,(HL) + RES 7,B + LD A,(DE) + AND 07FH + SUB B + ADD A,081H +L35E2: CP 030H + JP C,L348E + CP 0E0H + JP NC,OVFLERR + LD (L3402),A + INC HL + INC DE + EX DE,HL + LD C,(HL) + INC HL + LD B,(HL) + INC HL + PUSH HL + EX DE,HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD A,L + EX AF,AF' + LD A,H + LD H,B + LD L,C + EXX + POP HL + LD C,(HL) + INC HL + LD B,(HL) + LD H,A + EX AF,AF' + LD L,A + LD E,(HL) + INC HL + LD D,(HL) + LD H,B + LD L,C + LD A,D + OR A + JP P,OVFLERR + LD C,004H +L3615: LD B,008H +L3617: BIT 7,H + JR NZ,L3633 ; (+018H) + OR A +L361C: RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + DJNZ L3617 ; (-00dH) + PUSH AF + DEC C + JR NZ,L3615 ; (-013H) +L3628: POP AF + LD E,A + POP AF + LD D,A + POP AF + LD C,A + POP AF + LD B,A + JP L34B7 + +L3633: EXX + OR A + SBC HL,DE + EXX + SBC HL,DE + CCF + JR C,L361C ; (-021H) + EXX + ADD HL,DE + EXX + ADC HL,DE + OR A + RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + DEC B + JR NZ,L3652 ; (+006H) + PUSH AF + LD B,008H + DEC C + JR Z,L3628 ; (-02aH) +L3652: EXX + OR A + SBC HL,DE + EXX + SBC HL,DE + SCF + RLA + DEC B + JR NZ,L3664 ; (+006H) + PUSH AF + LD B,008H + DEC C + JR Z,L3628 ; (-03cH) +L3664: EXX + ADD HL,HL + EXX + ADC HL,HL + JR NC,L3617 ; (-054H) + JR L3652 ; (-01bH) + +L366D: DEC E +L366E: XOR C + LD D,B +L3670: LD A,(HL) + PUSH HL + POP IX + EX DE,HL + LD (L366E),HL + EX AF,AF' + XOR A + LD (L366D),A + LD H,A + LD L,A + EXX + LD H,A + LD L,A + LD B,A + LD C,A + EX AF,AF' + CP 02EH + JR Z,L369D ; (+014H) + SUB 030H +L368B: CALL L3772 + CALL L3768 + SUB 030H + CP 00AH + JR C,L368B ; (-00cH) + ADD A,030H + CP 02EH + JR NZ,L36AD ; (+010H) +L369D: CALL L3768 + SUB 030H + CP 00AH + JR NC,L36AB ; (+005H) + CALL L3780 + JR L369D ; (-00eH) + +L36AB: ADD A,030H +L36AD: CP 045H + JR NZ,L36F5 ; (+044H) + EXX + CALL L3768 + LD B,001H + CP 02BH + JR Z,L36C1 ; (+006H) + CP 02DH + JP NZ,SYNTAXERR + DEC B +L36C1: LD A,B + OR A + EX AF,AF' + CALL L3768 + SUB 030H + NOP + NOP + CP 00AH + JR NC,L36EB ; (+01cH) + LD B,A + CALL L3768 + SUB 030H + CP 00AH + JR NC,L36EB ; (+012H) + LD C,A + CALL L3768 + SUB 030H + CP 00AH + JP C,OVFLERR + LD A,B + ADD A,A + ADD A,A + ADD A,B + ADD A,A + ADD A,C + LD B,A +L36EB: EX AF,AF' + LD A,B + JR NZ,L36F1 ; (+002H) + CPL + INC A +L36F1: LD (L366D),A + EXX +L36F5: PUSH IX + LD A,(L366D) + ADD A,01DH + ADD A,C + LD (L366D),A + CP 030H + JR C,L370B ; (+007H) + CP 080H + JP C,OVFLERR + JR L375D ; (+052H) + +L370B: LD A,080H + LD (L3401),A + LD A,0A0H + LD (L3402),A + PUSH HL + EXX + POP BC + LD D,H + LD E,L + LD HL,L3725 + PUSH HL + LD HL,(L366E) + PUSH HL + JP L34B7 + +L3725: LD A,(L366D) + LD L,A + LD C,A + LD H,000H + LD B,H + ADD HL,HL + ADD HL,HL + ADD HL,BC + LD BC,L37AE + ADD HL,BC + LD DE,(0366EH) + LD A,080H + LD (L3401),A + LD A,020H + ADD A,(HL) + LD B,A + LD A,(DE) + AND 07FH + ADD A,B + JP C,OVFLERR + SUB 021H + JR NC,L374D ; (+001H) + XOR A +L374D: LD BC,L3755 + PUSH BC + PUSH DE + JP L3514 + +L3755: POP HL + LD BC,00005H + LD D,B + LD E,B + LD A,(HL) + RET + +L375D: LD HL,L3755 + PUSH HL + LD HL,(L366E) + PUSH HL + JP L348E + +L3768: INC IX + LD A,(IX+000H) + CP 020H + RET NZ + JR L3768 ; (-00aH) + +L3772: OR A + JR NZ,L3778 ; (+003H) + OR B + RET Z + XOR A +L3778: EX AF,AF' + LD A,B + CP 009H + JR NZ,L378E ; (+010H) + INC C + RET + +L3780: OR A + JR NZ,L3788 ; (+005H) + DEC C + OR B + RET Z + INC C + XOR A +L3788: EX AF,AF' + LD A,B + CP 009H + RET Z + DEC C +L378E: INC B + LD D,H + LD E,L + EXX + LD D,H + LD E,L + XOR A + ADD HL,HL + RLA + ADD HL,HL + RLA + ADD HL,DE + LD D,000H + ADC A,D + ADD HL,HL + RLA + EX AF,AF' + LD E,A + EX AF,AF' + ADD HL,DE + ADC A,D + EXX + ADD HL,HL + ADD HL,HL + ADD HL,DE + ADD HL,HL + LD D,000H + LD E,A + ADD HL,DE + RET + +L37AE: DB 0E0H + DB 0F5H + DB 0F7H + DB 0D2H + DB 0CAH + DB 0E3H + DB 0F3H + DB 0B5H + DB 087H + DB 0FDH + DB 0E7H + DB 0B8H + DB 0D1H + DB 074H + DB 09EH + DB 0EAH + DB 025H + DB 006H + DB 012H + DB 0C6H + DB 0EDH + DB 0AFH + DB 087H + DB 096H + DB 0F7H + DB 0F1H + DB 0CDH + DB 014H + DB 0BEH + DB 09AH + DB 0F4H + DB 001H + DB 09AH + DB 06DH + DB 0C1H + DB 0F7H + DB 081H + DB 000H + DB 0C9H + DB 0F1H + DB 0FBH + DB 050H + DB 0A0H + DB 01DH + DB 097H +L37DB: DB 0FEH + DB 065H + DB 008H + DB 0E5H + DB 0BCH + DB 001H + DB 07EH + DB 04AH + DB 01EH + DB 0ECH + DB 005H + DB 08FH + DB 0EEH + DB 092H + DB 093H + DB 008H + DB 032H + DB 0AAH + DB 077H + DB 0B8H + DB 00BH + DB 0BFH + DB 094H + DB 095H + DB 0E6H + DB 00FH + DB 0F7H + DB 07CH + DB 01DH + DB 090H + DB 012H + DB 035H + DB 0DCH + DB 024H + DB 0B4H + DB 015H + DB 042H + DB 013H + DB 02EH + DB 0E1H + DB 019H + DB 009H + DB 0CCH + DB 0BCH + DB 08CH + DB 01CH + DB 00CH + DB 0FFH + DB 0EBH + DB 0AFH + DB 01FH + DB 0CFH + DB 0FEH + DB 0E6H + DB 0DBH + DB 023H + DB 041H + DB 05FH + DB 070H + DB 089H + DB 026H + DB 012H + DB 077H + DB 0CCH + DB 0ABH + DB 029H + DB 0D6H + DB 094H + DB 0BFH + DB 0D6H + DB 02DH + DB 006H + DB 0BDH + DB 037H + DB 086H + DB 030H + DB 047H + DB 0ACH + DB 0C5H + DB 0A7H + DB 033H + DB 059H + DB 017H + DB 0B7H + DB 0D1H + DB 037H + DB 098H + DB 06EH + DB 012H + DB 083H + DB 03AH + DB 03DH + DB 00AH + DB 0D7H + DB 0A3H + DB 03DH + DB 0CDH + DB 0CCH + DB 0CCH + DB 0CCH + DB 041H + DB 000H + DB 000H + DB 000H + DB 080H + DB 044H + DB 000H + DB 000H + DB 000H + DB 0A0H + DB 047H + DB 000H + DB 000H + DB 000H + DB 0C8H + DB 04AH + DB 000H + DB 000H + DB 000H + DB 0FAH + DB 04EH + DB 000H + DB 000H + DB 040H + DB 09CH + DB 051H + DB 000H + DB 000H + DB 050H + DB 0C3H + DB 054H + DB 000H + DB 000H + DB 024H + DB 0F4H + DB 058H + DB 000H + DB 080H + DB 096H + DB 098H + DB 05BH + DB 000H + DB 020H + DB 0BCH + DB 0BEH + DB 05EH + DB 000H + DB 028H + DB 06BH + DB 0EEH + DB 062H + DB 000H + DB 0F9H + DB 002H + DB 095H + DB 065H + DB 040H + DB 0B7H + DB 043H + DB 0BAH + DB 068H + DB 010H + DB 0A5H + DB 0D4H + DB 0E8H + DB 06CH + DB 02AH + DB 0E7H + DB 084H + DB 091H + DB 06FH + DB 0F5H + DB 020H + DB 0E6H + DB 0B5H + DB 072H + DB 032H + DB 0A9H + DB 05FH + DB 0E3H + DB 076H + DB 0BFH + DB 0C9H + DB 01BH + DB 08EH + DB 079H + DB 02FH + DB 0BCH + DB 0A2H + DB 0B1H + DB 07CH + DB 03AH + DB 06BH + DB 00BH + DB 0DEH + DB 080H + DB 005H + DB 023H + DB 0C7H + DB 08AH +L38A3: DB 08DH + DB 06CH +L38A5: DB 001H +L38A6: DB 020H +L38A7: DB 031H +L38A8: DB 02EH + DB 035H + DB 00DH + DB 00DH + DB 00DH + DB 00DH + DB 00DH +L38AF: DB 00DH +L38B0: DB 00DH +L38B1: DB 000H +L38B2: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L38BB: PUSH DE + CALL L3997 + LD A,(L38A5) + OR A + JP Z,L3960 + JP M,L38CF + CP 009H + JR C,L392B ; (+05eH) + JR L38D4 ; (+005H) + +L38CF: CP PRTD + JP NC,L395B +L38D4: LD A,02EH + LD (L38A7),A + LD HL,L38B0 + XOR A +L38DD: DEC HL + CP (HL) + JR Z,L38DD ; (-004H) + LD A,(HL) + CP 02EH + JP Z,L398A + INC HL + LD (HL),045H + INC HL + LD A,(L38A5) + LD B,02BH + OR A + JP P,L38FD + CP 0EDH + JP C,L398A + LD B,02DH + CPL + INC A +L38FD: LD (HL),B + INC HL + LD BC,0FF0AH +L3902: INC B + SUB C + JR NC,L3902 ; (-004H) + ADD A,C + LD (HL),B + INC HL + LD (HL),A + INC HL + LD (HL),00DH +L390D: LD HL,L38A6 +L3910: INC HL + LD A,(HL) + CP 00DH + JR Z,L391D ; (+007H) + JR NC,L3910 ; (-008H) + OR 030H + LD (HL),A + JR L3910 ; (-00dH) + +L391D: LD DE,L38A6 + XOR A + SBC HL,DE + LD B,H + LD C,L + POP HL + EX DE,HL + INC BC + LDIR + RET + +L392B: LD HL,L38A8 + LD DE,L38A7 + LD B,A + INC B +L3933: DEC B + JR Z,L393C ; (+006H) + LD A,(HL) + LD (DE),A + INC HL + INC DE + JR L3933 ; (-009H) + +L393C: LD A,02EH + LD (DE),A + LD HL,L38B0 +L3942: LD (HL),00DH + DEC HL + LD A,(HL) + OR A + JR Z,L3942 ; (-007H) + CP 02EH + JR NZ,L394F ; (+002H) + LD (HL),00DH +L394F: LD HL,L38A7 + LD A,(HL) + CP 00DH + JR NZ,L390D ; (-04aH) + LD (HL),000H + JR L390D ; (-04eH) + +L395B: LD DE,L38B2 + JR L3963 ; (+003H) + +L3960: LD DE,L38B1 +L3963: LD HL,L38AF + LD A,00DH + LD (DE),A + PUSH DE + DEC DE + LD BC,00008H + LDDR + EX DE,HL + LD A,(L38A5) + OR A + JR Z,L397A ; (+003H) + LD (HL),000H + DEC HL +L397A: LD (HL),02EH + DEC HL + LD (HL),000H + POP HL +L3980: DEC HL + LD A,(HL) + CP 000H + JR NZ,L390D ; (-079H) + LD (HL),00DH + JR L3980 ; (-00aH) + +L398A: LD HL,L3994 + LD BC,GETL + POP DE + LDIR + RET + +L3994: JR NZ,L39C6 ; (+030H) + DEC C +L3997: LD (L38A3),HL + LD A,(HL) + LD B,020H + OR A + JP M,L39A3 + LD B,02DH +L39A3: AND 07FH + LD (HL),A + LD A,B + LD (L38A6),A + EX DE,HL + LD HL,L37DB + LD A,0ECH + EX AF,AF' +L39B1: EX AF,AF' + INC A + EX AF,AF' + LD BC,00005H + ADD HL,BC + PUSH HL + PUSH DE + LD A,(DE) + CALL L3A73 + POP DE + POP HL + JR NC,L39B1 ; (-011H) + EX AF,AF' + LD (L38A5),A +L39C6: PUSH DE + LD BC,L39D8 + PUSH BC + PUSH DE + LD A,080H + LD (L3401),A + LD A,(DE) + SUB (HL) + ADD A,081H + JP L35E2 + +L39D8: LD HL,L38A7 + LD (HL),000H + INC HL + EX (SP),HL + LD A,(HL) + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + EX DE,HL + EXX + POP HL + LD E,(HL) + INC HL + LD D,(HL) + EX DE,HL + SUB 0C0H + JR NC,L39FE ; (+00dH) +L39F1: SRL H + RR L + EXX + RR H + RR L + EXX + INC A + JR NZ,L39F1 ; (-00dH) +L39FE: POP BC + LD A,009H +L3A01: EX AF,AF' + XOR A + LD D,H + LD E,L + EXX + LD D,H + LD E,L + ADD HL,HL + EXX + ADC HL,HL + RLA + EXX + ADD HL,HL + EXX + ADC HL,HL + RLA + EXX + ADD HL,DE + EXX + ADC HL,DE + LD D,000H + ADC A,D + EXX + ADD HL,HL + EXX + ADC HL,HL + RLA + LD (BC),A + INC BC + EX AF,AF' + DEC A + JR NZ,L3A01 ; (-026H) +L3A27: LD HL,L38B0 + LD A,(HL) + LD (HL),000H + CP 005H + LD C,000H + JR C,L3A34 ; (+001H) + INC C +L3A34: LD B,00AH +L3A36: DEC B + JR Z,L3A47 ; (+00eH) + DEC HL + LD A,(HL) + ADD A,C + LD (HL),A + SUB 00AH + LD C,000H + JR C,L3A36 ; (-00dH) + INC C + LD (HL),A + JR L3A36 ; (-011H) + +L3A47: LD A,(L38A7) + OR A + RET Z + LD HL,L38AF + LD DE,L38B0 + LD BC,NL + LDDR + EX DE,HL + LD (HL),000H + LD A,(L38A5) + INC A + LD (L38A5),A + JR L3A27 ; (-03cH) + +L3A63: LD BC,00005H +L3A66: LD A,(DE) + OR A + JP M,L3A73 + BIT 7,(HL) + JR Z,L3A71 ; (+002H) + SCF + RET + +L3A71: EX DE,HL + LD A,(DE) +L3A73: CP (HL) + RET NZ + DEC C + ADD HL,BC + EX DE,HL + ADD HL,BC + EX DE,HL + LD B,003H +L3A7C: LD A,(DE) + CP (HL) + RET NZ + DEC HL + DEC DE + DJNZ L3A7C ; (-007H) + LD A,(DE) + CP (HL) + RET + +L3A86: EX DE,HL + CALL L3997 + LD A,(L38A6) + LD B,080H + CP 020H + JR Z,L3A95 ; (+002H) + LD B,000H +L3A95: LD A,B + LD (L3401),A + OR A + JR Z,L3B1A ; (+07eH) + LD A,(L38A5) + DEC A + JP M,L3B50 + LD HL,L38B0 + LD B,00DH + LD (HL),B + SUB 008H + JR NC,L3AB3 ; (+006H) +L3AAD: LD (HL),B + DEC HL + INC A + JR NZ,L3AAD ; (-005H) + DEC A +L3AB3: INC A + LD (L366D),A + LD IX,L38A7 + XOR A + LD H,A + LD L,A + EXX + LD B,A + LD C,A + LD H,A + LD L,A +L3AC3: LD A,(IX+000H) + CP 00DH + JR Z,L3AD1 ; (+007H) + CALL L3772 + INC IX + JR L3AC3 ; (-00eH) + +L3AD1: LD A,(L366D) + ADD A,01DH + ADD A,C + LD (L366D),A + LD A,0A0H + LD (L3402),A + PUSH HL + EXX + POP BC + LD D,H + LD E,L + LD HL,L3AEF + PUSH HL + LD HL,(L38A3) + PUSH HL + JP L34B7 + +L3AEF: LD A,(L366D) + LD C,A + LD L,A + LD H,000H + LD B,H + ADD HL,HL + ADD HL,HL + ADD HL,BC + LD BC,L37AE + ADD HL,BC + LD DE,(038A3H) + XOR A + LD (L3400),A + LD A,020H + ADD A,(HL) + LD B,A + LD A,(DE) + AND 07FH + ADD A,B + JP C,OVFLERR + SUB 021H + JR NC,L3B16 ; (+001H) + XOR A +L3B16: PUSH DE + JP L3514 + +L3B1A: LD A,(L38A5) + DEC A + JP M,L3B55 + LD HL,L38B0 + LD BC,00D00H + LD (HL),B + SUB 008H + JR NC,L3B3B ; (+00fH) + JR L3B36 ; (+008H) + +L3B2E: EX AF,AF' + LD A,(HL) + OR A + JR Z,L3B34 ; (+001H) + INC C +L3B34: LD (HL),B + EX AF,AF' +L3B36: DEC HL + INC A + JR NZ,L3B2E ; (-00cH) + DEC A +L3B3B: EX AF,AF' + LD A,C + OR A + JR Z,L3B4C ; (+00cH) +L3B40: LD A,(HL) + INC A + LD (HL),A + CP 00AH + JR NZ,L3B4C ; (+005H) + LD (HL),000H + DEC HL + JR L3B40 ; (-00cH) + +L3B4C: EX AF,AF' + JP L3AB3 + +L3B50: LD DE,L2A8D + JR L3B58 ; (+003H) + +L3B55: LD DE,L2A92 +L3B58: LD HL,(L38A3) + EX DE,HL +L3B5C: LD BC,00005H + LDIR + RET + +L3B62: PUSH DE + CALL L3A63 + JR Z,L3B6D ; (+005H) +L3B68: LD HL,L2A92 + JR L3B70 ; (+003H) + +L3B6D: LD HL,L2A8D +L3B70: POP DE + JR L3B5C ; (-017H) + +L3B73: PUSH DE + EX DE,HL + JR L3B78 ; (+001H) + +L3B77: PUSH DE +L3B78: CALL L3A63 + JR C,L3B68 ; (-015H) + JR L3B6D ; (-012H) + +L3B7F: PUSH DE + CALL L3A63 + JR Z,L3B68 ; (-01dH) + JR L3B6D ; (-01aH) + +L3B87: PUSH DE + EX DE,HL + JR L3B8C ; (+001H) + +L3B8B: PUSH DE +L3B8C: CALL L3A63 + JR C,L3B6D ; (-024H) + JR L3B68 ; (-02bH) + +L3B93: CP (HL) + DEC (HL) + JR Z,L3B73 ; (-024H) + RST 008H +L3B98: PUSH DE + EX DE,HL + LD A,(HL) + LD BC,00004H + ADD HL,BC + XOR (HL) + JP M,L3BC4 + LD DE,L3B93 + PUSH DE + LD HL,L3BE9 + CALL L3500 + POP HL + PUSH HL + LD A,(HL) + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + CP 0C1H + CALL NC,L3BD2 + POP HL + PUSH HL + CALL L3492 + JR L3BCE ; (+00aH) + +L3BC4: LD DE,L3B93 + LD HL,L3BE4 + PUSH DE + CALL L3B5C +L3BCE: POP HL + POP DE + JR L3B5C ; (-076H) + +L3BD2: SUB 0C0H +L3BD4: SLA E + RL D + RL C + RL B + DEC A + JR NZ,L3BD4 ; (-00bH) + LD A,0C0H + JP L3CC5 + +L3BE4: CP (HL) + DEC (HL) + JR Z,L3BC4 ; (-024H) + RST 008H +L3BE9: DB 0C5H + DB 000H + DB 000H + DB 000H + DB 0B8H +L3BEE: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3BF3: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3BF8: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3BFD: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L3C02: LD DE,L3BEE + JP L3405 + +L3C08: CALL L3C02 +L3C0B: LD HL,L3BF3 +L3C0E: LD DE,L3BEE + JP L3500 + +L3C14: NOP +L3C15: NOP +L3C16: PUSH DE + LD HL,L3CE7 + CALL L35D0 + POP HL + PUSH HL + LD A,(HL) + LD (L3C15),A + OR 080H + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + CP 0C3H + JR C,L3C43 ; (+012H) + SUB 0C2H +L3C33: SLA E + RL D + RL C + RL B + DEC A + JR NZ,L3C33 ; (-00bH) + LD A,0C2H + CALL L3CC5 +L3C43: LD HL,08000H + CP 0C2H + JR C,L3C50 ; (+006H) + LD H,L + RES 7,B + CALL L3CC5 +L3C50: CP 0C1H + JR C,L3C5A ; (+006H) + INC L + RES 7,B + CALL L3CC5 +L3C5A: EX AF,AF' + LD A,(L3C15) + XOR H + CPL + AND 080H + LD H,A + LD (L3C14),HL + EX AF,AF' + POP HL + PUSH HL + CALL L3492 + LD A,(L3C14) + OR A + JR Z,L3C7A ; (+008H) + POP DE + PUSH DE + LD HL,L2A88 + CALL L3403 +L3C7A: POP HL + PUSH HL + LD A,(HL) + AND 07FH + LD B,A + LD A,(L3C15) + OR B + LD (HL),A + LD DE,L3BEE + CALL L3B5C + LD DE,L3BF3 + LD HL,L3BEE + CALL L3B5C + CALL L3C0B + LD DE,L3BF3 + LD HL,L3BEE + CALL L3B5C + LD HL,L3CEC + CALL L3C0E + LD HL,L3CF1 + CALL L3C08 + LD HL,L3CF6 + CALL L3C08 + LD HL,L3CFB + CALL L3C08 + LD HL,L3D00 + CALL L3C02 + POP DE + LD HL,L3BEE + JP L3500 + +L3CC5: BIT 7,B + RET NZ + EX AF,AF' + LD A,B + OR C + OR E + OR D + JR Z,L3CDE ; (+00fH) + EX AF,AF' +L3CD0: BIT 7,B + RET NZ + SLA E + RL D + RL C + RL B + DEC A + JR NZ,L3CD0 ; (-00eH) +L3CDE: LD BC,MONIT + LD DE,MONIT + LD A,080H + RET + +L3CE7: DB 0C1H + DB 0A1H + DB 0DAH + DB 00FH + DB 0C9H +L3CEC: DB 0B4H + DB 0DCH + DB 00FH + DB 00AH + DB 09FH +L3CF1: DB 039H + DB 061H + DB 08FH + DB 029H + DB 099H +L3CF6: DB 0BDH + DB 0C8H + DB 077H + DB 034H + DB 0A3H +L3CFB: DB 040H + DB 085H + DB 0E1H + DB 05DH + DB 0A5H +L3D00: DB 0C1H + DB 094H + DB 0DAH + DB 00FH + DB 0C9H +L3D05: PUSH DE + LD HL,L3CE7 + CALL L3403 + POP HL + CALL L4193 + EX DE,HL + JP L3C16 + +L3D14: PUSH DE + EX DE,HL + LD DE,L3BFD + CALL L3B5C + POP DE + PUSH DE + CALL L3D05 + POP HL + PUSH HL + LD DE,L3BF8 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BFD + CALL L3B5C + POP DE + PUSH DE + CALL L3C16 + POP DE + LD HL,L3BF8 + JP L35D0 + +L3D3D: NOP +L3D3E: NOP +L3D3F: LD A,003H + LD (L3D3D),A + PUSH DE + EX DE,HL + LD A,(HL) + ADD A,080H + JP NC,ILDATERR + JR NZ,L3D5B ; (+00dH) + EX AF,AF' + LD BC,00004H + ADD HL,BC + LD A,(HL) + SBC HL,BC + OR A + JP P,L3DBA + EX AF,AF' +L3D5B: BIT 0,A + JR NZ,L3DD5 ; (+076H) + LD (L3D3E),A + LD (HL),0C0H + LD DE,L3BEE + CALL L3B5C + LD HL,L3DED + CALL L3C0E + LD HL,L3DF2 +L3D73: CALL L3C02 +L3D76: LD DE,L3BF3 + POP HL + PUSH HL + CALL L3B5C + LD DE,L3BF3 + LD HL,L3BEE + CALL L35D0 + LD HL,L3BF3 + CALL L3C02 + LD HL,L3BEE + LD A,(HL) + AND 07FH + DEC A + JR C,L3DBA ; (+024H) + OR 080H + LD (HL),A + LD A,(L3D3D) + DEC A + LD (L3D3D),A + JR NZ,L3D76 ; (-02cH) + LD A,(L3D3E) + CP 040H + CALL NZ,L3DC1 + LD B,(HL) + RES 7,B + ADD A,B + SUB 040H + JR C,L3DBA ; (+008H) + JP M,OVFLERR + OR 080H + LD (HL),A + JR L3DBD ; (+003H) + +L3DBA: LD HL,L2A8D +L3DBD: POP DE + JP L3B5C + +L3DC1: JR C,L3DCA ; (+007H) + SUB 040H + SRL A + ADD A,040H + RET + +L3DCA: LD B,A + LD A,040H + SUB B + SRL A + LD B,A + LD A,040H + SUB B + RET + +L3DD5: INC A + LD (L3D3E),A + LD (HL),0BFH + LD DE,L3BEE + CALL L3B5C + LD HL,L3DF7 + CALL L3C0E + LD HL,L3DFC + JP L3D73 + +L3DED: DB 0C0H + DB 000H + DB 000H + DB 000H + DB 090H +L3DF2: DB 0BFH + DB 000H + DB 000H + DB 000H + DB 0E0H +L3DF7: DB 0C0H + DB 000H + DB 000H + DB 000H + DB 0E0H +L3DFC: DB 0BFH + DB 000H + DB 000H + DB 000H + DB 090H +L3E01: NOP +L3E02: NOP +L3E03: PUSH DE + LD A,(DE) + AND 080H + LD (L3E01),A + LD A,(DE) + OR 080H + LD (DE),A + LD HL,L3F2D + CALL L35D0 + POP HL + PUSH HL + LD A,040H + LD (L3E02),A + LD A,(HL) + SUB 0C1H + CALL NC,L3EBB + POP DE + PUSH DE + LD HL,L3F28 + CALL L3403 + POP HL + PUSH HL + LD DE,L3BEE + CALL L3B5C + LD HL,L3F05 + CALL L3C0E + LD HL,L3F0A + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F0F + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F14 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F19 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F1E + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD HL,L3F23 + CALL L3C02 + LD HL,L3BEE + LD B,(HL) + RES 7,B + LD A,(L3E02) + ADD A,B + JP C,L3EFC + SUB 03FH + JR C,L3EEC ; (+067H) + JP M,L3EFC + OR 080H + LD (HL),A + LD A,(L3E01) + OR A + JR Z,L3E98 ; (+007H) + LD HL,L3BEE + POP DE + JP L3B5C + +L3E98: POP DE + PUSH DE + LD HL,L2A88 + CALL L3B5C + POP DE + PUSH DE + LD A,(DE) + CP 0FCH + PUSH AF + JR C,L3EAA ; (+002H) + DEC A + LD (DE),A +L3EAA: LD HL,L3BEE + CALL L35D0 + POP AF + POP HL + RET C + LD A,(HL) + DEC A + LD (HL),A + RET M + PUSH HL + JP L348E + +L3EBB: INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + PUSH HL + INC A + LD H,A + XOR A +L3EC7: SLA E + RL D + RL C + RL B + RLA + JR C,L3EFA ; (+028H) + DEC H + JR NZ,L3EC7 ; (-00eH) + ADD A,040H + JR C,L3EFA ; (+021H) + LD (L3E02),A + LD A,0C0H + CALL L3CC5 + POP HL + LD (HL),B + DEC HL + LD (HL),C + DEC HL + LD (HL),D + DEC HL + LD (HL),E + DEC HL + LD (HL),A + RET + +L3EEC: LD A,(L3E01) + OR A + JP Z,OVFLERR +L3EF3: LD HL,L2A8D + POP DE + JP L3B5C + +L3EFA: POP AF + POP AF +L3EFC: LD A,(L3E01) + OR A + JP NZ,OVFLERR + JR L3EF3 ; (-012H) + +L3F05: DB 0B3H + DB 07CH + DB 08CH + DB 090H + DB 0E3H +L3F0A: DB 0B6H + DB 01FH + DB 0DFH + DB 062H + DB 0F8H +L3F0F: DB 0B9H + DB 0E2H + DB 06DH + DB 0DDH + DB 0DEH +L3F14: DB 0BCH + DB 08BH + DB 033H + DB 0C1H + DB 0A0H +L3F19: DB 0BEH + DB 089H + DB 04AH + DB 0F1H + DB 0ADH +L3F1E: DB 0BFH + DB 034H + DB 033H + DB 0F2H + DB 0FAH +L3F23: DB 0C0H + DB 036H + DB 0F3H + DB 004H + DB 0B5H +L3F28: DB 0C0H + DB 000H + DB 000H + DB 000H + DB 080H +L3F2D: DB 0C0H + DB 0F8H + DB 017H + DB 072H + DB 0B1H +L3F32: DB 000H +L3F33: DB 000H +L3F34: DB 000H +L3F35: PUSH DE + LD A,080H + LD (L3F33),A + LD (L3F32),A + EX DE,HL + LD A,(HL) + OR A + JP P,OVFLERR + CP 08AH + JR NC,L3F53 ; (+00bH) + XOR A + LD (L3F32),A + EX DE,HL + CALL L3D3F + POP HL + PUSH HL + LD A,(HL) +L3F53: CP 0C1H + CALL C,L4011 + LD B,000H + CP 0C1H + JR Z,L3F64 ; (+006H) + SUB 0C1H + LD B,A + LD A,0C1H + LD (HL),A +L3F64: LD A,B + LD (L3F34),A + LD DE,L3BEE + CALL L3B5C + POP DE + PUSH DE + LD HL,L4055 + CALL L3403 + LD HL,L4055 + CALL L3C02 + POP DE + PUSH DE + LD HL,L3BEE + CALL L35D0 + POP DE + PUSH DE + LD HL,L405A + CALL L3500 + POP HL + PUSH HL + LD DE,L3BF3 + CALL L3B5C + POP HL + PUSH HL + LD DE,L3BF3 + CALL L3500 + LD DE,L3BEE + LD HL,L3BF3 + CALL L3B5C + LD HL,L4041 + CALL L3C0E + LD HL,L4046 + CALL L3C08 + LD HL,L404B + CALL L3C08 + LD HL,L4050 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + LD DE,L3BF3 + LD HL,L3BEE + CALL L3B5C + LD A,(L3F34) + ADD A,A + INC A + LD B,A + LD A,008H +L3FD3: BIT 7,B + JR NZ,L3FDC ; (+005H) + SLA B + DEC A + JR NZ,L3FD3 ; (-009H) +L3FDC: ADD A,0C0H + LD HL,L3BEE + LD (HL),A + INC HL + XOR A + LD (HL),A + INC HL + LD (HL),A + INC HL + LD (HL),A + INC HL + LD (HL),B + LD HL,L405F + CALL L3C0E + LD HL,L3BF3 + CALL L3C02 + LD HL,L3BEE + LD A,(L3F33) + CALL L4191 + POP DE + PUSH DE + CALL L3B5C + POP DE + LD A,(L3F32) + OR A + RET NZ + LD HL,L3BEE + JP L3405 + +L4011: PUSH HL + LD DE,L3BEE + CALL L3B5C + POP DE + PUSH DE + LD HL,L2A88 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BEE + CALL L35D0 + POP HL + LD A,(HL) + CP 0C1H + JR NC,L4039 ; (+00bH) + PUSH HL + EX DE,HL + LD HL,L2A88 + CALL L3B5C + POP HL + LD A,0C1H +L4039: EX AF,AF' + LD A,000H + LD (L3F33),A + EX AF,AF' + RET + +L4041: DB 0ADH + DB 0A4H + DB 062H + DB 0CCH + DB 0AFH +L4046: DB 0B2H + DB 09FH + DB 0E9H + DB 047H + DB 0F9H +L404B: DB 0B8H + DB 0A4H + DB 082H + DB 0AAH + DB 0DCH +L4050: DB 0BFH + DB 0BFH + DB 0CCH + DB 0B0H + DB 0AFH +L4055: DB 0C1H + DB 033H + DB 0F3H + DB 004H + DB 0B5H +L405A: DB 0C3H + DB 099H + DB 079H + DB 082H + DB 0BAH +L405F: DB 0BFH + DB 0F8H + DB 017H + DB 072H + DB 0B1H +L4064: PUSH DE + CALL L3F35 + POP DE + LD HL,L406F + JP L3500 + +L406F: DB 0BFH + DB 0A9H + DB 0D8H + DB 05BH + DB 0DEH +L4074: DB 000H +L4075: DB 000H +L4076: PUSH DE + EX DE,HL + LD A,(HL) + AND 080H + LD (L4074),A + SET 7,(HL) + LD DE,L2A88 + CALL L3A63 + LD A,080H + JR NC,L40A3 ; (+019H) + LD DE,L3BEE + POP HL + PUSH HL + CALL L3B5C + POP DE + PUSH DE + LD HL,L2A88 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BEE + CALL L35D0 + XOR A +L40A3: LD (L4075),A + POP HL + PUSH HL + LD DE,L3BEE + CALL L3B5C + POP HL + PUSH HL + CALL L3C0E + LD HL,L3BEE + LD DE,L3BF3 + CALL L3B5C + LD HL,L4121 + CALL L3C0E + LD HL,L4126 + CALL L3C08 + LD HL,L412B + CALL L3C08 + LD HL,L4130 + CALL L3C08 + LD HL,L4135 + CALL L3C08 + LD HL,L413A + CALL L3C08 + LD HL,L413F + CALL L3C08 + LD HL,L4144 + CALL L3C08 + LD HL,L4149 + CALL L3C08 + LD HL,L2A88 + CALL L3C02 + POP HL + PUSH HL + CALL L3C0E + POP DE + PUSH DE + LD HL,L3BEE + CALL L3B5C + LD A,(L4075) + OR A + JR NZ,L411B ; (+010H) + POP DE + PUSH DE + LD HL,L3CE7 + CALL L3B5C + POP DE + PUSH DE + LD HL,L3BEE + DB 0CDH + DB 003H +L411A: DB 034H +L411B: POP HL + LD A,(L4074) + JR L4191 ; (+070H) + +L4121: DB 037H + DB 0CAH + DB 09AH + DB 056H + DB 0DFH +L4126: DB 0BAH + DB 012H + DB 077H + DB 0CCH + DB 0ABH +L412B: DB 03BH + DB 023H + DB 0B2H + DB 05EH + DB 0F8H +L4130: DB 0BCH + DB 020H + DB 063H + DB 090H + DB 0E9H +L4135: DB 03DH + DB 0EEH + DB 03DH + DB 0E0H + DB 0AAH +L413A: DB 0BDH + DB 04FH + DB 01AH + DB 0D5H + DB 0DFH +L413F: DB 03EH + DB 0E3H + DB 0AFH + DB 003H + DB 092H +L4144: DB 0BEH + DB 02AH + DB 07BH + DB 0C7H + DB 0CCH +L4149: DB 03FH + DB 017H + DB 096H + DB 0AAH + DB 0AAH +L414E: DB 000H + DB 000H + DB 000H + DB 000H +L4152: DB 000H +L4153: DB 000H +L4154: DB 000H + DB 000H + DB 000H + DB 000H + DB 000H +L4159: PUSH DE + LD DE,L4154 + CALL L3B5C + POP HL + PUSH HL + LD BC,00004H + ADD HL,BC + LD A,(HL) + OR A + POP HL + PUSH HL + JP P,L348E + LD A,(HL) + AND 080H + LD (L4153),A + SET 7,(HL) + EX DE,HL + CALL L3F35 + LD A,(L4153) + OR A + CALL Z,L41A4 + POP DE + PUSH DE + LD HL,L4154 + CALL L3500 + POP DE + PUSH DE + CALL L3E03 + POP HL + LD A,(L4153) +L4191: OR A + RET NZ +L4193: LD BC,00004H + ADD HL,BC + BIT 7,(HL) + PUSH AF + XOR A + SBC HL,BC + POP AF + RET Z + LD A,(HL) + ADD A,080H + LD (HL),A + RET + +L41A4: LD HL,L4154 + LD DE,L414E + CALL L3B5C + LD DE,L4154 + CALL L3A86 + LD DE,L414E + LD HL,L4154 + CALL L3403 + LD HL,L4152 + LD A,(HL) + OR A + JP M,ILDATERR + LD HL,L4154 + LD A,(HL) + INC HL + LD E,(HL) + INC HL + LD D,(HL) + INC HL + LD C,(HL) + INC HL + LD B,(HL) + AND 07FH + SUB 041H + JR C,L41E6 ; (+010H) + JR Z,L41E3 ; (+00bH) +L41D8: SLA E + RL D + RL C + RL B + DEC A + JR NZ,L41D8 ; (-00bH) +L41E3: RL B + RET C +L41E6: LD A,080H + LD (L4153),A + RET + +L41EC: NOP + LD DE,ATRB + LD HL,L4223 + LD BC,PRNT + LDIR + LD HL,TAPECOPY + LD (DTADR),HL + LD DE,L41EC + EX DE,HL + XOR A + SBC HL,DE + INC HL + LD (SIZE),HL + LD HL,COLDSTRT + LD (EXADR),HL + CALL ?WRI + RET C + LD HL,L41EC + LD A,0C9H + LD (HL),A + CALL ?WRD + PUSH AF + LD A,000H + LD (HL),A + POP AF + RET C + RET + +L4223: DB 001H,"BASIC SA-5510",00DH + NOP diff --git a/software/dis/SA-5510/SA-5510.ini b/software/dis/SA-5510/SA-5510.ini new file mode 100644 index 0000000..9c01a64 --- /dev/null +++ b/software/dis/SA-5510/SA-5510.ini @@ -0,0 +1,568 @@ +---------------------------------------- +-- dZ80 configuration file +---------------------------------------- + +---------------------------------------- +-- Disassembly control +---------------------------------------- + +cpu="z80" +inputfile="SA-5510.bin" +outputfile="SA-5510.asm" +--fileheadersize=27 +filebaseaddr=4605 +disstart=0 +disend=16946 +--disstart=0 +--disend=3584 +--quiet=0 +labelledoutput=1 + +---------------------------------------- +-- Layout +---------------------------------------- + +labelreference=1 +addresscolumn=1 +opcodecolumn=1 +relativejumpcomment=1 +uppercase=1 +autoblanklines=1 +db="db" +comment="; " +radix=16 +numprefix="0" +numsuffix="H" + +---------------------------------------- +-- Scripts +---------------------------------------- + +--script="scripts\\spectrum.lua" + +---------------------------------------- +-- References +---------------------------------------- + +referencefile="SA-5510.ref" +inportreference=1 +outportreference=1 +addressreference=1 +indirectaddressreference=1 +limitreferences=1 + +---------------------------------------- +-- Opcode mapfile and code/data areas +---------------------------------------- + +--opmapfile="mayhem.map" + +-- Code Region isnt required as v2.x sets the entire region to code unless a data region overrides it. +-- d_SetCodeRegion(4608, 2464) + +-- Set the known data regions, either as a data region (byte), word or string. The type affects the assembly output definitions and word +-- regions will attempt to map to an address, ie. jump tables will be setup with labels rather than constants. +d_SetDataRegion( hex("1347"), 100) -- 0x1347 +d_SetStringRegion(hex("1347"), 28) +d_SetStringRegion(hex("1364"), 31) +d_SetStringRegion(hex("1384"), 5) +d_SetStringRegion(hex("138A"), 6) +d_SetStringRegion(hex("1391"), 3) +d_SetStringRegion(hex("1395"), 6) +d_SetStringRegion(hex("139C"), 6) +d_SetDataRegion( hex("2FC2"), 30) +d_SetStringRegion(hex("2FC2"), 6) +d_SetStringRegion(hex("2FC9"), 8) +d_SetStringRegion(hex("2FD2"), 10) +d_SetStringRegion(hex("2FDD"), 2) +d_SetStringRegion(hex("1D44"), 9) + +-- Reserved key words. +d_SetDataRegion( hex("15A8"), 402) -- 0x15A8 Start of tokens. +d_SetStringRegion(hex("15A8"), 2) -- 0 - REM +d_SetStringRegion(hex("15AB"), 3) -- 1 - DATA +d_SetStringRegion(hex("15AF"), 0) -- 2 - undefined +d_SetStringRegion(hex("15B0"), 0) -- 3 - undefined +d_SetStringRegion(hex("15B1"), 3) -- 4 - READ +d_SetStringRegion(hex("15B5"), 3) -- 5 - LIST +d_SetStringRegion(hex("15B9"), 2) -- 6 - RUN +d_SetStringRegion(hex("15BC"), 2) -- 7 - NEW +d_SetStringRegion(hex("15BF"), 4) -- 8 - PRINT +d_SetStringRegion(hex("15C4"), 2) -- 9 - LET +d_SetStringRegion(hex("15C7"), 2) -- 10 - FOR +d_SetStringRegion(hex("15CA"), 1) -- 11 - IF +d_SetStringRegion(hex("15CC"), 3) -- 12 - THEN +d_SetStringRegion(hex("15D0"), 3) -- 13 - GOTO +d_SetStringRegion(hex("15D4"), 4) -- 14 - GOSUB +d_SetStringRegion(hex("15D9"), 5) -- 15 - RETURN +d_SetStringRegion(hex("15DF"), 3) -- 16 - NEXT +d_SetStringRegion(hex("15E3"), 3) -- 17 - STOP +d_SetStringRegion(hex("15E7"), 2) -- 18 - END +d_SetStringRegion(hex("15EA"), 0) -- 19 - undefined +d_SetStringRegion(hex("15EB"), 1) -- 20 - ON +d_SetStringRegion(hex("15ED"), 3) -- 21 - LOAD +d_SetStringRegion(hex("15F1"), 3) -- 22 - SAVE +d_SetStringRegion(hex("15F5"), 5) -- 23 - VERIFY +d_SetStringRegion(hex("15FB"), 3) -- 24 - POKE +d_SetStringRegion(hex("15FF"), 2) -- 25 - DIM +d_SetStringRegion(hex("1602"), 5) -- 26 - DEF FN +d_SetStringRegion(hex("1608"), 4) -- 27 - INPUT +d_SetStringRegion(hex("160D"), 6) -- 28 - RESTORE +d_SetStringRegion(hex("1614"), 2) -- 29 - CLS +d_SetStringRegion(hex("1617"), 4) -- 30 - MUSIC +d_SetStringRegion(hex("161C"), 4) -- 31 - TEMPO +d_SetStringRegion(hex("1621"), 3) -- 32 - USRN +d_SetStringRegion(hex("1625"), 4) -- 33 - WOPEN +d_SetStringRegion(hex("162A"), 4) -- 34 - ROPEN +d_SetStringRegion(hex("162F"), 4) -- 35 - CLOSE +d_SetStringRegion(hex("1634"), 2) -- 36 - MON +d_SetStringRegion(hex("1637"), 4) -- 37 - LIMIT +d_SetStringRegion(hex("163C"), 3) -- 38 - CONT +d_SetStringRegion(hex("1640"), 2) -- 39 - GET +d_SetStringRegion(hex("1643"), 3) -- 40 - INP@ +d_SetStringRegion(hex("1647"), 3) -- 41 - OUT@ +d_SetStringRegion(hex("164B"), 5) -- 42 - CURSOR +d_SetStringRegion(hex("1651"), 2) -- 43 - SET +d_SetStringRegion(hex("1654"), 4) -- 44 - RESET +d_SetStringRegion(hex("1659"), 0) -- 45 - undefined +d_SetStringRegion(hex("165A"), 0) -- 46 - undefined +d_SetStringRegion(hex("165B"), 0) -- 47 - undefined +d_SetStringRegion(hex("165C"), 0) -- 48 - undefined +d_SetStringRegion(hex("165D"), 0) -- 49 - undefined +d_SetStringRegion(hex("165E"), 0) -- 59 - undefined +d_SetStringRegion(hex("165F"), 3) -- 51 - AUTO +d_SetStringRegion(hex("1663"), 0) -- 52 - undefined +d_SetStringRegion(hex("1664"), 0) -- 53 - undefined +d_SetStringRegion(hex("1665"), 5) -- 54 - COPY/P +d_SetStringRegion(hex("166B"), 5) -- 55 - PAGE/P +d_SetStringRegion(hex("1671"), 0) -- 56 - undefined +d_SetStringRegion(hex("1672"), 0) -- 57 - undefined +d_SetStringRegion(hex("1673"), 0) -- 58 - undefined +d_SetStringRegion(hex("1674"), 0) -- 59 - undefined +d_SetStringRegion(hex("1675"), 0) -- 60 - undefined +d_SetStringRegion(hex("1676"), 0) -- 61 - undefined +d_SetStringRegion(hex("1677"), 0) -- 62 - undefined +d_SetStringRegion(hex("1678"), 0) -- 63 - undefined +d_SetStringRegion(hex("1679"), 0) -- 64 - undefined +d_SetStringRegion(hex("167A"), 0) -- 65 - undefined +d_SetStringRegion(hex("167B"), 1) -- 66 - undefined +d_SetStringRegion(hex("167D"), 1) -- 67 - undefined + +-- Functions +d_SetStringRegion(hex("167F"), 1) -- >= +d_SetStringRegion(hex("1681"), 1) -- <> +d_SetStringRegion(hex("1683"), 1) -- =< +d_SetStringRegion(hex("1685"), 1) -- <= +d_SetStringRegion(hex("1687"), 1) -- <= +d_SetStringRegion(hex("1689"), 1) -- <= +d_SetStringRegion(hex("168B"), 0) -- undefined +d_SetStringRegion(hex("168C"), 0) -- <= +d_SetStringRegion(hex("168D"), 0) -- <= +d_SetStringRegion(hex("168E"), 0) -- undefined +d_SetStringRegion(hex("168F"), 0) -- undefined +d_SetStringRegion(hex("1690"), 0) -- undefined +d_SetStringRegion(hex("1691"), 0) -- undefined +d_SetStringRegion(hex("1692"), 0) -- undefined +d_SetStringRegion(hex("1693"), 0) -- undefined +d_SetStringRegion(hex("1694"), 0) -- undefined +d_SetStringRegion(hex("1695"), 0) -- undefined +d_SetStringRegion(hex("1696"), 0) -- undefined +d_SetStringRegion(hex("1697"), 0) -- undefined +d_SetStringRegion(hex("1698"), 0) -- undefined +d_SetStringRegion(hex("1699"), 0) -- undefined +d_SetStringRegion(hex("169A"), 0) -- undefined +d_SetStringRegion(hex("169B"), 0) -- undefined +d_SetStringRegion(hex("169C"), 0) -- undefined +d_SetStringRegion(hex("169D"), 0) -- undefined +d_SetStringRegion(hex("168E"), 0) -- undefined +d_SetStringRegion(hex("168F"), 0) -- undefined +d_SetStringRegion(hex("16A0"), 1) -- TO +d_SetStringRegion(hex("16A2"), 3) -- STEP +d_SetStringRegion(hex("16A6"), 5) -- LEFT$( +d_SetStringRegion(hex("16AC"), 6) -- RIGHT$( +d_SetStringRegion(hex("16B3"), 4) -- MID$( +d_SetStringRegion(hex("16B8"), 3) -- LEN( +d_SetStringRegion(hex("16BC"), 4) -- CHR$( +d_SetStringRegion(hex("16C1"), 4) -- STR$( +d_SetStringRegion(hex("16C6"), 3) -- ASC( +d_SetStringRegion(hex("16CA"), 3) -- VAL( +d_SetStringRegion(hex("16CE"), 4) -- PEEK( +d_SetStringRegion(hex("16D3"), 3) -- TAB( +d_SetStringRegion(hex("16D7"), 6) -- SPACE$( +d_SetStringRegion(hex("16DE"), 3) -- SIZE +d_SetStringRegion(hex("16E2"), 2) -- undefined +d_SetStringRegion(hex("16E5"), 6) -- STRING$( +d_SetStringRegion(hex("16ED"), 0) -- undefined +d_SetStringRegion(hex("16EE"), 10) -- CHARACTER$( +d_SetStringRegion(hex("16F9"), 2) -- CSR +d_SetStringRegion(hex("16FC"), 12) -- undefined +d_SetStringRegion(hex("1709"), 3) -- RND( +d_SetStringRegion(hex("170D"), 3) -- SIN( +d_SetStringRegion(hex("1711"), 3) -- COS( +d_SetStringRegion(hex("1715"), 3) -- TAN( +d_SetStringRegion(hex("1719"), 3) -- ATN( +d_SetStringRegion(hex("171D"), 3) -- EXP( +d_SetStringRegion(hex("1721"), 3) -- INT( +d_SetStringRegion(hex("1725"), 3) -- LOG( +d_SetStringRegion(hex("1729"), 2) -- LN( +d_SetStringRegion(hex("172C"), 3) -- ABS( +d_SetStringRegion(hex("1730"), 3) -- SGN( +d_SetStringRegion(hex("1734"), 3) -- SQR( +d_SetStringRegion(hex("1738"), 2) -- End of Table + + +d_SetDataRegion( hex("13AB"), 77) -- 0x13AB +d_SetStringRegion(hex("4223"), 15) -- 0x4223 BASIC SA-5510 +d_SetDataRegion( hex("1D15"), 2) -- 0x1D15 Data +d_SetDataRegion( hex("1C4C"), 1) +d_SetDataRegion( hex("1C63"), 1) -- 0x1C63 Data +d_SetWordRegion( hex("1BB2"), 128) -- 0x1BB2 Data +d_SetDataRegion( hex("3400"), 3) -- 0x3400 Data +d_SetDataRegion( hex("3404"), 1) -- 0x3404 Data +d_SetDataRegion( hex("2355"), 1) -- 0x2355 Data +d_SetDataRegion( hex("239F"), 1) -- 0x239f Data +d_SetWordRegion( hex("2691"), 34) +d_SetWordRegion( hex("26B3"), 40) +d_SetWordRegion( hex("26DB"), 24) +d_SetDataRegion( hex("26F3"), 6) +d_SetDataRegion( hex("27B2"), 2) -- 0x27B2 Data +d_SetDataRegion( hex("2884"), 1) -- 0x2885 Data +d_SetDataRegion( hex("2A83"), 25) -- 0x2A83 Data +--d_SetDataRegion( hex("2B3D"), 2) -- 0x2B3D Data +--d_SetDataRegion( hex("2D1D"), 2) -- 0x2D1D Data + +-- Function table. +d_SetWordRegion( hex("22E1"), 18) + +-- Function calls, CALL +d_SetDataRegion( hex("204A"), 2) +d_SetDataRegion( hex("12CE"), 1) +d_SetWordRegion( hex("12CF"), 2) +d_SetDataRegion( hex("1A78"), 1) +d_SetWordRegion( hex("1A79"), 2) +d_SetDataRegion( hex("1C54"), 1) +d_SetWordRegion( hex("1C55"), 2) +d_SetDataRegion( hex("1E23"), 1) +d_SetWordRegion( hex("1E24"), 2) +d_SetDataRegion( hex("20EB"), 1) +d_SetWordRegion( hex("20EC"), 2) +d_SetDataRegion( hex("21B3"), 1) +d_SetWordRegion( hex("21B4"), 2) +d_SetDataRegion( hex("287F"), 1) +d_SetWordRegion( hex("2880"), 2) +d_SetDataRegion( hex("2949"), 1) +d_SetWordRegion( hex("294A"), 2) +d_SetDataRegion( hex("29A2"), 1) +d_SetWordRegion( hex("29A3"), 2) +d_SetDataRegion( hex("2A3A"), 1) +d_SetWordRegion( hex("2A3B"), 2) +d_SetDataRegion( hex("2A4E"), 1) +d_SetWordRegion( hex("2A4F"), 2) +d_SetDataRegion( hex("2B10"), 1) +d_SetWordRegion( hex("2B11"), 2) +d_SetDataRegion( hex("2B32"), 1) +d_SetWordRegion( hex("2B33"), 2) +d_SetDataRegion( hex("2B6C"), 1) +d_SetWordRegion( hex("2B6D"), 2) +d_SetDataRegion( hex("2C05"), 1) +d_SetWordRegion( hex("2C06"), 2) +d_SetDataRegion( hex("2CFF"), 1) +d_SetWordRegion( hex("2D00"), 2) +d_SetDataRegion( hex("2D56"), 1) +d_SetWordRegion( hex("2D57"), 2) +d_SetDataRegion( hex("2D5C"), 1) +d_SetWordRegion( hex("2D5D"), 2) +d_SetDataRegion( hex("2CB2"), 1) +d_SetWordRegion( hex("2CB3"), 2) +d_SetDataRegion( hex("2D78"), 1) +d_SetWordRegion( hex("2D79"), 2) +d_SetDataRegion( hex("2D88"), 1) +d_SetWordRegion( hex("2D89"), 2) +d_SetDataRegion( hex("2D95"), 1) +d_SetWordRegion( hex("2D96"), 2) +d_SetDataRegion( hex("2DA2"), 1) +d_SetWordRegion( hex("2DA3"), 2) +d_SetDataRegion( hex("2DB0"), 1) +d_SetWordRegion( hex("2DB1"), 2) +d_SetDataRegion( hex("2E97"), 1) +d_SetWordRegion( hex("2E98"), 2) +d_SetDataRegion( hex("2FE7"), 1) +d_SetWordRegion( hex("2FE8"), 2) +d_SetDataRegion( hex("3323"), 1) +d_SetWordRegion( hex("3324"), 2) + +d_SetDataRegion( hex("2D74"), 1) + +d_SetDataRegion( hex("2E33"), 32) +d_SetDataRegion( hex("2EB0"), 3) +d_SetDataRegion( hex("2F8C"), 2) +d_SetDataRegion( hex("2FE8"), 2) +d_SetDataRegion( hex("37AE"), 269) +d_SetDataRegion( hex("3CE7"), 30) +d_SetDataRegion( hex("3F05"), 48) +d_SetDataRegion( hex("4041"), 35) +d_SetDataRegion( hex("406F"), 7) +d_SetDataRegion( hex("4121"), 56) + + +d_SetDataRegion( hex("18BE"), 3) +d_SetDataRegion( hex("18D7"), 3) +d_SetDataRegion( hex("1CAA"), 2) +d_SetWordRegion( hex("1D90"), 2) +d_SetDataRegion( hex("2104"), 3) +--d_SetDataRegion( hex("2221"), 3) +d_SetDataRegion( hex("2317"), 1) +d_SetDataRegion( hex("270F"), 3) +d_SetWordRegion( hex("2929"), 2) +d_SetDataRegion( hex("2A14"), 2) +d_SetDataRegion( hex("2A2A"), 2) +d_SetDataRegion( hex("2C8B"), 3) +d_SetWordRegion( hex("2CDE"), 2) +d_SetDataRegion( hex("2D10"), 2) +d_SetWordRegion( hex("2D90"), 2) +d_SetDataRegion( hex("30F4"), 3) +d_SetDataRegion( hex("3BE9"), 25) +d_SetDataRegion( hex("4118"), 3) + +d_SetDataRegion( hex("3DED"), 5) +d_SetDataRegion( hex("3DF2"), 5) +d_SetDataRegion( hex("3DF7"), 5) +d_SetDataRegion( hex("3DFC"), 5) + +d_SetDataRegion( hex("1B42"), 1) +d_SetDataRegion( hex("1C5A"), 1) +d_SetDataRegion( hex("1D02"), 1) +d_SetDataRegion( hex("1D89"), 1) +d_SetDataRegion( hex("1F31"), 1) +d_SetDataRegion( hex("204F"), 1) +d_SetDataRegion( hex("208F"), 1) +d_SetDataRegion( hex("2116"), 1) +d_SetDataRegion( hex("220F"), 1) +d_SetDataRegion( hex("221B"), 1) +d_SetDataRegion( hex("221F"), 1) +d_SetDataRegion( hex("245F"), 1) +d_SetDataRegion( hex("24FD"), 1) +d_SetDataRegion( hex("2715"), 1) +d_SetDataRegion( hex("284E"), 1) +d_SetDataRegion( hex("2855"), 1) +d_SetDataRegion( hex("288F"), 1) +d_SetDataRegion( hex("28C6"), 1) +d_SetDataRegion( hex("2AB3"), 1) +d_SetDataRegion( hex("2B75"), 1) +d_SetDataRegion( hex("2C21"), 1) +d_SetDataRegion( hex("2CEF"), 1) +d_SetDataRegion( hex("2D7E"), 1) +d_SetDataRegion( hex("2D8E"), 1) +d_SetDataRegion( hex("2D9B"), 1) +d_SetDataRegion( hex("2DA8"), 1) +d_SetDataRegion( hex("2DB6"), 1) + + +-- Create a mapping table of known Sharp I/O ports and 8 bit constants. +-- +-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address. +d_SetByteEquate(hex("FE") , 1, "PRTC" ) +d_SetByteEquate(hex("FF") , 1, "PRTD" ) + +-- Create a mapping table of known Sharp MZ BIOS/Memory Mapped Hardware addresses which dz80 +-- can use to replace an address with the label. The EQU list will also be output at the start +-- of the disassembly file so it can compile. +-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address. +d_SetWordEquate(hex("0003"), 1, "GETL" ) +d_SetWordEquate(hex("0006"), 1, "LETNL" ) +d_SetWordEquate(hex("0009"), 1, "NL" ) +d_SetWordEquate(hex("000C"), 1, "PRNTS" ) +d_SetWordEquate(hex("000F"), 1, "PRNTT" ) +d_SetWordEquate(hex("0012"), 1, "PRNT" ) +d_SetWordEquate(hex("0015"), 1, "MSG" ) +d_SetWordEquate(hex("0018"), 1, "MSGX" ) +d_SetWordEquate(hex("001B"), 1, "GETKY" ) +d_SetWordEquate(hex("001E"), 1, "BRKEY" ) +d_SetWordEquate(hex("0021"), 1, "?WRI" ) +d_SetWordEquate(hex("0024"), 1, "?WRD" ) +d_SetWordEquate(hex("0027"), 1, "?RDI" ) +d_SetWordEquate(hex("002A"), 1, "?RDD" ) +d_SetWordEquate(hex("002D"), 1, "?VRFY" ) +d_SetWordEquate(hex("0030"), 1, "MELDY" ) +d_SetWordEquate(hex("0033"), 1, "?TMST" ) +d_SetWordEquate(hex("003B"), 1, "TIMRD" ) +d_SetWordEquate(hex("003E"), 1, "BELL" ) +d_SetWordEquate(hex("0041"), 1, "XTEMP" ) +d_SetWordEquate(hex("0044"), 1, "MSTA" ) +d_SetWordEquate(hex("0047"), 1, "MSTP" ) +d_SetWordEquate(hex("0000"), 1, "MONIT" ) +d_SetWordEquate(hex("0089"), 1, "SS" ) +d_SetWordEquate(hex("0095"), 1, "ST1" ) +d_SetWordEquate(hex("0410"), 1, "HLHEX" ) +d_SetWordEquate(hex("041F"), 1, "_2HEX" ) +d_SetWordEquate(hex("074D"), 1, "?MODE" ) +d_SetWordEquate(hex("08CA"), 1, "?KEY" ) +d_SetWordEquate(hex("096C"), 1, "PRNT3" ) +d_SetWordEquate(hex("0BB9"), 1, "?ADCN" ) +d_SetWordEquate(hex("0BCE"), 1, "?DACN" ) +d_SetWordEquate(hex("0DB5"), 1, "?DSP" ) +d_SetWordEquate(hex("0DA6"), 1, "?BLNK" ) +d_SetWordEquate(hex("0DDC"), 1, "?DPCT" ) +d_SetWordEquate(hex("03BA"), 1, "PRTHL" ) +d_SetWordEquate(hex("03C3"), 1, "PRTHX" ) +d_SetWordEquate(hex("03DA"), 1, "ASC" ) +d_SetWordEquate(hex("03F9"), 1, "HEX" ) +d_SetWordEquate(hex("0DDC"), 1, "DPCT" ) +d_SetWordEquate(hex("0DA7"), 1, "DLY12" ) +d_SetWordEquate(hex("0DAA"), 1, "DLY12A" ) +d_SetWordEquate(hex("0EE6"), 1, "?RSTR1" ) +d_SetWordEquate(hex("06A3"), 1, "MOTOR" ) +d_SetWordEquate(hex("071A"), 1, "CKSUM" ) +d_SetWordEquate(hex("077A"), 1, "GAP" ) +d_SetWordEquate(hex("0485"), 1, "WTAPE" ) +d_SetWordEquate(hex("0700"), 1, "MSTOP" ) +d_SetWordEquate(hex("11FD"), 1, "TAPECOPY" ) +d_SetWordEquate(hex("1200"), 1, "COLDSTRT" ) +d_SetWordEquate(hex("1250"), 1, "WARMSTRTMON") +d_SetWordEquate(hex("15A8"), 1, "CMDWORDTBL" ) +d_SetWordEquate(hex("1BB2"), 1, "CMDJMPTBL" ) +d_SetWordEquate(hex("2E33"), 1, "CMTBUF" ) +d_SetWordEquate(hex("2E34"), 1, "CMTFNAME" ) + +d_SetWordEquate(hex("1C3C"), 1, "CMDREMDATA" ) +d_SetWordEquate(hex("13AB"), 1, "SYNTAXERR" ) +d_SetWordEquate(hex("2D12"), 1, "CMDREAD" ) +d_SetWordEquate(hex("1C4D"), 1, "CMDLIST" ) +d_SetWordEquate(hex("1E91"), 1, "CMDRUN" ) +d_SetWordEquate(hex("1C42"), 1, "CMDNEW" ) +d_SetWordEquate(hex("2B0D"), 1, "CMDPRINT" ) +d_SetWordEquate(hex("1D6A"), 1, "CMDLET" ) +d_SetWordEquate(hex("1F2B"), 1, "CMDFOR" ) +d_SetWordEquate(hex("21AD"), 1, "CMDIF" ) +d_SetWordEquate(hex("13AB"), 1, "CMDTHEN" ) +d_SetWordEquate(hex("1EA6"), 1, "CMDGOTO" ) +d_SetWordEquate(hex("1EC7"), 1, "CMDGOSUB" ) +d_SetWordEquate(hex("1EF8"), 1, "CMDRETURN" ) +d_SetWordEquate(hex("1FC0"), 1, "CMDNEXT" ) +d_SetWordEquate(hex("1D2C"), 1, "CMDSTOP" ) +d_SetWordEquate(hex("1D15"), 1, "CMDEND" ) +d_SetWordEquate(hex("203E"), 1, "CMDON" ) +d_SetWordEquate(hex("2D75"), 1, "CMDLOAD" ) +d_SetWordEquate(hex("2D82"), 1, "CMDSAVE" ) +d_SetWordEquate(hex("2EB3"), 1, "CMDVERIFY" ) +d_SetWordEquate(hex("2191"), 1, "CMDPOKE" ) +d_SetWordEquate(hex("2080"), 1, "CMDDIM" ) +d_SetWordEquate(hex("2201"), 1, "CMDDEFFN" ) +d_SetWordEquate(hex("2BFF"), 1, "CMDINPUT" ) +d_SetWordEquate(hex("1D4D"), 1, "CMDRESTORE" ) +d_SetWordEquate(hex("21A6"), 1, "CMDCLS" ) +d_SetWordEquate(hex("2269"), 1, "CMDMUSIC" ) +d_SetWordEquate(hex("2282"), 1, "CMDTEMPO" ) +d_SetWordEquate(hex("2942"), 1, "CMDUSRN" ) +d_SetWordEquate(hex("2D9F"), 1, "CMDWOPEN" ) +d_SetWordEquate(hex("2D92"), 1, "CMDROPEN" ) +d_SetWordEquate(hex("2DAD"), 1, "CMDCLOSE" ) +d_SetWordEquate(hex("28B6"), 1, "CMDMON" ) +d_SetWordEquate(hex("2967"), 1, "CMDLIMIT" ) +d_SetWordEquate(hex("29CE"), 1, "CMDCONT" ) +d_SetWordEquate(hex("2902"), 1, "CMDGET" ) +d_SetWordEquate(hex("29FE"), 1, "CMDINP" ) +d_SetWordEquate(hex("2A1C"), 1, "CMDOUT" ) +d_SetWordEquate(hex("28B9"), 1, "CMDCURSOR" ) +d_SetWordEquate(hex("2AA6"), 1, "CMDSET" ) +d_SetWordEquate(hex("2AAA"), 1, "CMDRESET" ) +d_SetWordEquate(hex("2A2F"), 1, "CMDAUTO" ) +d_SetWordEquate(hex("33AB"), 1, "CMDCOPY" ) +d_SetWordEquate(hex("32D4"), 1, "CMDPAGE" ) + +d_SetWordEquate(hex("13AE"), 1, "OVFLERR" ) +d_SetWordEquate(hex("13B1"), 1, "ILDATERR" ) +d_SetWordEquate(hex("13B4"), 1, "DATMISERR" ) +d_SetWordEquate(hex("13B7"), 1, "STRLENERR" ) +d_SetWordEquate(hex("13BA"), 1, "MEMERR" ) +d_SetWordEquate(hex("13C0"), 1, "LINELENERR" ) +d_SetWordEquate(hex("13C3"), 1, "GOSUBERR" ) +d_SetWordEquate(hex("13C6"), 1, "FORNEXTERR" ) +d_SetWordEquate(hex("13C9"), 1, "FUNCERR" ) +d_SetWordEquate(hex("13CC"), 1, "NEXTFORERR" ) +d_SetWordEquate(hex("13CF"), 1, "RETGOSBERR" ) +d_SetWordEquate(hex("13D2"), 1, "UNDEFFNERR" ) +d_SetWordEquate(hex("13D5"), 1, "LINEERR" ) +d_SetWordEquate(hex("13D8"), 1, "CONTERR" ) +d_SetWordEquate(hex("13DB"), 1, "BADWRERR" ) +d_SetWordEquate(hex("13DE"), 1, "CMDSTMTERR" ) +d_SetWordEquate(hex("13E1"), 1, "READDATAERR") +d_SetWordEquate(hex("13E4"), 1, "OPENERR" ) +d_SetWordEquate(hex("13E7"), 1, "UNKNWNERR" ) +d_SetWordEquate(hex("13EA"), 1, "OUTFILEERR" ) +d_SetWordEquate(hex("13ED"), 1, "PRTNRDYERR" ) +d_SetWordEquate(hex("13F0"), 1, "PRTHWERR" ) +d_SetWordEquate(hex("13F3"), 1, "PRTPAPERERR") +d_SetWordEquate(hex("13F6"), 1, "CHKSUMERR" ) + +d_SetWordEquate(hex("1347"), 1, "TITLEMSG" ) +d_SetWordEquate(hex("1364"), 1, "COPYRMSG" ) +d_SetWordEquate(hex("1384"), 1, "READYMSG" ) +d_SetWordEquate(hex("138A"), 1, "ERRORMSG" ) +d_SetWordEquate(hex("1391"), 1, "INMSG" ) +d_SetWordEquate(hex("1395"), 1, "BREAKMSG" ) +d_SetWordEquate(hex("139C"), 1, "BYTESMSG" ) +d_SetWordEquate(hex("13A3"), 1, "ERRCODE" ) + +d_SetWordEquate(hex("1332"), 1, "MSGNL" ) +d_SetWordEquate(hex("167B"), 1, "UNUSEDTBL1" ) +d_SetWordEquate(hex("167D"), 1, "UNUSEDTBL2" ) +d_SetWordEquate(hex("124E"), 1, "WARMSTRT" ) +d_SetWordEquate(hex("167F"), 1, "OPERATORTBL") +d_SetWordEquate(hex("17FC"), 1, "STRTONUM" ) +d_SetWordEquate(hex("1E88"), 1, "GETNUM" ) +d_SetWordEquate(hex("173F"), 1, "SKIPSPACE" ) +d_SetWordEquate(hex("173E"), 1, "INCSKIPSPCE") +d_SetWordEquate(hex("177B"), 1, "EXECHL" ) +d_SetWordEquate(hex("1795"), 1, "EXECNOTCHR" ) +d_SetWordEquate(hex("17A3"), 1, "MATCHCHR" ) +d_SetWordEquate(hex("490D"), 0, "LINEBUFR" ) + + +d_SetComment( hex("1795"), "Scan for character after command" ) +d_SetComment( hex("1779"), "Get address after call and jump to it via a RET command." ) +d_SetComment( hex("2E1D"), "Compare loaded filename against name given by user." ) +d_SetComment( hex("2B0D"), "Check to see if a stream, ie. /T = Tape is given. The 02FH below is / and the function after is called if it doesnt match /." ) +d_SetComment( hex("1250"), "Sharp defined BASIC restart location from Monitor." ) + +-- Known Sharp Constants. +d_SetWordEquate(hex("10F0"), 0, "ATRB" ) -- ATTRIBUTE +d_SetWordEquate(hex("10F1"), 0, "NAME" ) -- FILE NAME +d_SetWordEquate(hex("1102"), 0, "SIZE" ) -- BYTESIZE +d_SetWordEquate(hex("1104"), 0, "DTADR" ) -- DATA ADDRESS +d_SetWordEquate(hex("1106"), 0, "EXADR" ) -- EXECUTION ADDRESS +d_SetWordEquate(hex("1108"), 0, "COMNT" ) -- COMMENT +d_SetWordEquate(hex("1164"), 0, "SWPW" ) -- SWEEP WORK +d_SetWordEquate(hex("116E"), 0, "KDATW" ) -- KEY WORK +d_SetWordEquate(hex("1170"), 0, "KANAF" ) -- KANA FLAG (01=GRAPHIC MODE) +d_SetWordEquate(hex("1171"), 0, "DSPXY" ) -- DISPLAY COORDINATES +d_SetWordEquate(hex("1173"), 0, "MANG" ) -- COLUMN MANAGEMENT +d_SetWordEquate(hex("1179"), 0, "MANGE" ) -- COLUMN MANAGEMENT END +d_SetWordEquate(hex("117A"), 0, "PBIAS" ) -- PAGE BIAS +d_SetWordEquate(hex("117B"), 0, "ROLTOP" ) -- ROLL TOP BIAS +d_SetWordEquate(hex("117C"), 0, "MGPNT" ) -- COLUMN MANAG. POINTER +d_SetWordEquate(hex("117D"), 0, "PAGETP" ) -- PAGE TOP +d_SetWordEquate(hex("117F"), 0, "ROLEND" ) -- ROLL END +d_SetWordEquate(hex("118E"), 0, "FLASH" ) -- FLASHING DATA +d_SetWordEquate(hex("118F"), 0, "SFTLK" ) -- SHIFT LOCK +d_SetWordEquate(hex("1190"), 0, "REVFLG" ) -- REVERSE FLAG +d_SetWordEquate(hex("1191"), 0, "SPAGE" ) -- PAGE CHANGE +d_SetWordEquate(hex("1192"), 0, "FLSDT" ) -- CURSOR DATA +d_SetWordEquate(hex("1193"), 0, "STRGF" ) -- STRING FLAG +d_SetWordEquate(hex("1194"), 0, "DPRNT" ) -- TAB COUNTER +d_SetWordEquate(hex("1195"), 0, "TMCNT" ) -- TAPE MARK COUNTER +d_SetWordEquate(hex("1197"), 0, "SUMDT" ) -- CHECK SUM DATA +d_SetWordEquate(hex("1199"), 0, "CSMDT" ) -- FOR COMPARE SUM DATA +d_SetWordEquate(hex("119B"), 0, "AMPM" ) -- AMPM DATA +d_SetWordEquate(hex("119C"), 0, "TIMFG" ) -- TIME FLAG +d_SetWordEquate(hex("119D"), 0, "SWRK" ) -- KEY SOUND FLAG +d_SetWordEquate(hex("119E"), 0, "TEMPW" ) -- TEMPO WORK +d_SetWordEquate(hex("119F"), 0, "ONTYO" ) -- ONTYO WORK +d_SetWordEquate(hex("11A0"), 0, "OCTV" ) -- OCTAVE WORK +d_SetWordEquate(hex("11A1"), 0, "RATIO" ) -- ONPU RATIO +d_SetWordEquate(hex("11A3"), 0, "BUFER" ) -- GET LINE BUFFER + + +---------------------------------------- +-- End of configuration file +---------------------------------------- diff --git a/software/dis/SA-5510/SA-5510.ref b/software/dis/SA-5510/SA-5510.ref new file mode 100644 index 0000000..0fec0fd --- /dev/null +++ b/software/dis/SA-5510/SA-5510.ref @@ -0,0 +1,2643 @@ +dZ80 2.1 Reference file from the disassembly of "SA-5510.bin". + +Input Port Reference (2 entries) +-------------------------------- + +Input Port 000feH. 2 references: +-------------------------------- + + 0328aH: IN A,(0FEH) + 032aeH: IN A,(0FEH) + + +Output Port Reference (3 entries) +--------------------------------- + +Output Port 000feH. 2 references: +--------------------------------- + + 0329aH: OUT (0FEH),A + 032a2H: OUT (0FEH),A + +Output Port 000ffH. 1 references: +--------------------------------- + + 03296H: OUT (0FFH),A + + +Direct address Reference (598 entries) +-------------------------------------- + +Direct address 00000H. 20 references: +------------------------------------- + + 017d5H: LD DE,00000H + 0184aH: LD BC,00000H + 018fdH: LD BC,00000H + 01910H: LD BC,00000H + 01944H: LD HL,00000H + 019f9H: LD BC,00000H + 01a52H: LD DE,00000H + 02083H: LD BC,00000H + 02492H: LD BC,00000H + 025feH: LD BC,00000H + 027f5H: LD DE,00000H + 02919H: LD BC,00000H + 0292eH: LD DE,00000H + 029a5H: LD DE,00000H + 02e0aH: LD BC,00000H + 032abH: LD DE,00000H + 03540H: LD HL,00000H + 035a4H: LD DE,00000H + 03cdeH: LD BC,00000H + 03ce1H: LD DE,00000H + +Direct address 00001H. 4 references: +------------------------------------ + + 01ce9H: LD BC,00001H + 02779H: LD BC,00001H + 02872H: LD BC,00001H + 0359fH: LD DE,00001H + +Direct address 00002H. 1 references: +------------------------------------ + + 020aaH: LD HL,00002H + +Direct address 00003H. 3 references: +------------------------------------ + + 0223dH: LD BC,00003H + 02e54H: LD HL,00003H + 0398dH: LD BC,00003H + +Direct address 00004H. 10 references: +------------------------------------- + + 018f3H: LD BC,00004H + 01b57H: LD BC,00004H + 020b6H: LD HL,00004H + 02415H: LD BC,00004H + 02596H: LD BC,00004H + 03525H: LD BC,00004H + 03b9bH: LD BC,00004H + 03d4fH: LD BC,00004H + 04162H: LD BC,00004H + 04193H: LD BC,00004H + +Direct address 00005H. 19 references: +------------------------------------- + + 01930H: LD BC,00005H + 01e6aH: LD BC,00005H + 01f66H: LD BC,00005H + 01ffcH: LD BC,00005H + 0200cH: LD BC,00005H + 0201fH: LD BC,00005H + 020f5H: LD BC,00005H + 02154H: LD HL,00005H + 023bfH: LD BC,00005H + 023faH: LD BC,00005H + 024c1H: LD BC,00005H + 02540H: LD BC,00005H + 0261eH: LD HL,00005H + 02626H: LD BC,00005H + 027f2H: LD BC,00005H + 03756H: LD BC,00005H + 039b4H: LD BC,00005H + 03a63H: LD BC,00005H + 03b5cH: LD BC,00005H + +Direct address 00006H. 3 references: +------------------------------------ + + 01bacH: LD BC,00006H + 02129H: LD DE,00006H + 029f1H: LD BC,00006H + +Direct address 00007H. 2 references: +------------------------------------ + + 01ee5H: LD BC,00007H + 01f20H: LD BC,00007H + +Direct address 00008H. 2 references: +------------------------------------ + + 021c7H: LD BC,00008H + 0396bH: LD BC,00008H + +Direct address 00009H. 2 references: +------------------------------------ + + 02dc4H: LD DE,00009H + 03a52H: LD BC,00009H + +Direct address 0000aH. 5 references: +------------------------------------ + + 0123cH: LD BC,0000AH + 01817H: LD DE,0000AH + 02a5fH: LD DE,0000AH + 02a6cH: LD DE,0000AH + 02a71H: LD DE,0000AH + +Direct address 00012H. 4 references: +------------------------------------ + + 01f81H: LD BC,00012H + 01fe8H: LD BC,00012H + 0302bH: LD BC,00012H + 041f3H: LD BC,00012H + +Direct address 00013H. 2 references: +------------------------------------ + + 01f11H: LD BC,00013H + 01fa9H: LD BC,00013H + +Direct address 0003cH. 1 references: +------------------------------------ + + 01e4cH: LD HL,0003CH + +Direct address 00064H. 1 references: +------------------------------------ + + 01811H: LD DE,00064H + +Direct address 000c8H. 1 references: +------------------------------------ + + 02989H: LD BC,000C8H + +Direct address 00100H. 3 references: +------------------------------------ + + 025f9H: LD BC,00100H + 030ffH: LD HL,00100H + 03163H: LD HL,00100H + +Direct address 00106H. 1 references: +------------------------------------ + + 025d2H: LD BC,00106H + +Direct address 003e8H. 2 references: +------------------------------------ + + 0180bH: LD DE,003E8H + 0334fH: LD HL,003E8H + +Direct address 003f0H. 1 references: +------------------------------------ + + 0332eH: LD BC,003F0H + +Direct address 00500H. 1 references: +------------------------------------ + + 0330eH: LD BC,00500H + +Direct address 00d00H. 1 references: +------------------------------------ + + 03b24H: LD BC,00D00H + +Direct address 00d2cH. 1 references: +------------------------------------ + + 019f6H: LD DE,00D2CH + +Direct address 00e10H. 1 references: +------------------------------------ + + 01e3aH: LD HL,00E10H + +Direct address ATRB. 4 references: +---------------------------------- + + 02eefH: LD HL,010F0H + 03025H: LD DE,010F0H + 03140H: LD HL,010F0H + 041edH: LD DE,010F0H + +Direct address NAME. 1 references: +---------------------------------- + + 02f72H: LD DE,010F1H + +Direct address DTADR. 1 references: +----------------------------------- + + 02f2cH: LD (01104H),DE + +Direct address SFTLK. 1 references: +----------------------------------- + + 01342H: LD HL,0118FH + +Direct address 011fdH. 1 references: +------------------------------------ + + 041f8H: LD HL,011FDH + +Direct address 01200H. 1 references: +------------------------------------ + + 04209H: LD HL,01200H + +Direct address 0124eH. 1 references: +------------------------------------ + + 0143eH: LD BC,0124EH + +Direct address 012b8H. 1 references: +------------------------------------ + + 01262H: LD HL,012B8H + +Direct address 01347H. 1 references: +------------------------------------ + + 0122aH: LD DE,01347H + +Direct address 01364H. 1 references: +------------------------------------ + + 01230H: LD DE,01364H + +Direct address 01384H. 1 references: +------------------------------------ + + 0125cH: LD DE,01384H + +Direct address 0138aH. 1 references: +------------------------------------ + + 0142aH: LD DE,0138AH + +Direct address 01391H. 1 references: +------------------------------------ + + 0144dH: LD DE,01391H + +Direct address 01395H. 1 references: +------------------------------------ + + 01438H: LD DE,01395H + +Direct address 0139cH. 1 references: +------------------------------------ + + 01248H: LD DE,0139CH + +Direct address 013a5H. 1 references: +------------------------------------ + + 01ba3H: LD DE,013A5H + +Direct address 013abH. 29 references: +------------------------------------- + + 01bb6H: XOR E + 01bb8H: XOR E + 01bcaH: XOR E + 01bd8H: XOR E + 01c0cH: XOR E + 01c0eH: XOR E + 01c10H: XOR E + 01c12H: XOR E + 01c14H: XOR E + 01c16H: XOR E + 01c1aH: XOR E + 01c1cH: XOR E + 01c22H: XOR E + 01c24H: XOR E + 01c26H: XOR E + 01c28H: XOR E + 01c2aH: XOR E + 01c2cH: XOR E + 01c2eH: XOR E + 01c30H: XOR E + 026a3H: XOR E + 026a5H: XOR E + 026a7H: XOR E + 026cbH: XOR E + 026cdH: XOR E + 026cfH: XOR E + 026d3H: XOR E + 026d9H: XOR E + 02a4fH: XOR E + +Direct address 013b1H. 1 references: +------------------------------------ + + 01e24H: OR C + +Direct address 013b4H. 2 references: +------------------------------------ + + 01d90H: OR H + 02929H: OR H + +Direct address 01400H. 1 references: +------------------------------------ + + 013faH: LD IY,01400H + +Direct address 01464H. 1 references: +------------------------------------ + + 029eeH: LD DE,01464H + +Direct address 01479H. 1 references: +------------------------------------ + + 01483H: LD HL,01479H + +Direct address 0150aH. 1 references: +------------------------------------ + + 01545H: LD HL,0150AH + +Direct address 0151fH. 1 references: +------------------------------------ + + 01530H: LD HL,0151FH + +Direct address 015a8H. 2 references: +------------------------------------ + + 0148fH: LD DE,015A8H + 0153eH: LD HL,015A8H + +Direct address 0167bH. 2 references: +------------------------------------ + + 014a8H: LD DE,0167BH + 01534H: LD HL,0167BH + +Direct address 0167dH. 1 references: +------------------------------------ + + 01539H: LD HL,0167DH + +Direct address 0167fH. 2 references: +------------------------------------ + + 014b9H: LD DE,0167FH + 0151cH: LD HL,0167FH + +Direct address 018d8H. 1 references: +------------------------------------ + + 0259aH: LD HL,018D8H + +Direct address 0192cH. 1 references: +------------------------------------ + + 028a3H: LD DE,0192CH + +Direct address 01a7eH. 1 references: +------------------------------------ + + 01a79H: LD A,(HL) + +Direct address 01abeH. 1 references: +------------------------------------ + + 01abfH: LD HL,01ABEH + +Direct address 01b35H. 2 references: +------------------------------------ + + 01d53H: LD BC,01B35H + 02962H: LD HL,01B35H + +Direct address 01b38H. 1 references: +------------------------------------ + + 020ecH: JR C,02109H + +Direct address 01b5fH. 1 references: +------------------------------------ + + 012cfH: LD E,A + +Direct address 01bb2H. 1 references: +------------------------------------ + + 01b88H: LD HL,01BB2H + +Direct address 01c3cH. 2 references: +------------------------------------ + + 01bb2H: INC A + 01bb4H: INC A + +Direct address 01c42H. 1 references: +------------------------------------ + + 01bc0H: LD B,D + +Direct address 01c4dH. 1 references: +------------------------------------ + + 01bbcH: LD C,L + +Direct address 01c60H. 1 references: +------------------------------------ + + 01c55H: LD H,B + +Direct address 01d15H. 1 references: +------------------------------------ + + 01bd6H: DEC D + +Direct address 01d2cH. 1 references: +------------------------------------ + + 01bd4H: INC L + +Direct address 01d44H. 1 references: +------------------------------------ + + 01d35H: LD DE,01D44H + +Direct address 01d4dH. 1 references: +------------------------------------ + + 01beaH: LD C,L + +Direct address 01d6aH. 1 references: +------------------------------------ + + 01bc4H: LD L,D + +Direct address 01df5H. 3 references: +------------------------------------ + + 01dc2H: LD HL,01DF5H + 01e06H: LD DE,01DF5H + 025bcH: LD HL,01DF5H + +Direct address 01e91H. 1 references: +------------------------------------ + + 01bbeH: SUB C + +Direct address 01ea6H. 1 references: +------------------------------------ + + 01bccH: AND (HL) + +Direct address 01ec7H. 1 references: +------------------------------------ + + 01bceH: RST 000H + +Direct address 01ef8H. 1 references: +------------------------------------ + + 01bd0H: RET M + +Direct address 01f2bH. 1 references: +------------------------------------ + + 01bc6H: DEC HL + +Direct address 01fc0H. 1 references: +------------------------------------ + + 01bd2H: RET NZ + +Direct address 02000H. 1 references: +------------------------------------ + + 01cd7H: LD BC,02000H + +Direct address 0203eH. 1 references: +------------------------------------ + + 01bdaH: LD A,020H + +Direct address 02080H. 1 references: +------------------------------------ + + 01be4H: ADD A,B + +Direct address 02105H. 2 references: +------------------------------------ + + 020cbH: LD DE,(02105H) + 02174H: LD DE,(02105H) + +Direct address 02191H. 1 references: +------------------------------------ + + 01be2H: SUB C + +Direct address 021a6H. 1 references: +------------------------------------ + + 01becH: AND (HL) + +Direct address 021adH. 1 references: +------------------------------------ + + 01bc8H: XOR L + +Direct address 021d3H. 1 references: +------------------------------------ + + 021b4H: OUT (021H),A + +Direct address 02201H. 1 references: +------------------------------------ + + 01be6H: LD BC,0FF22H + +Direct address 02269H. 1 references: +------------------------------------ + + 01beeH: LD L,C + +Direct address 02282H. 1 references: +------------------------------------ + + 01bf0H: ADD A,D + +Direct address 02296H. 1 references: +------------------------------------ + + 022abH: LD BC,02296H + +Direct address 022e1H. 1 references: +------------------------------------ + + 022cfH: LD HL,022E1H + +Direct address 022f3H. 1 references: +------------------------------------ + + 022cbH: LD HL,022F3H + +Direct address 0231bH. 2 references: +------------------------------------ + + 022e1H: DEC DE + 022e3H: DEC DE + +Direct address 0231eH. 2 references: +------------------------------------ + + 022e5H: LD E,023H + 022e7H: LD E,023H + +Direct address 02322H. 2 references: +------------------------------------ + + 022e9H: LD (02223H),HL + 022ebH: LD (02523H),HL + +Direct address 02325H. 1 references: +------------------------------------ + + 022edH: DEC H + +Direct address 02328H. 1 references: +------------------------------------ + + 022efH: JR Z,02314H + +Direct address 0232fH. 1 references: +------------------------------------ + + 022f1H: CPL + +Direct address 02332H. 1 references: +------------------------------------ + + 022aeH: LD DE,02332H + +Direct address 0234cH. 1 references: +------------------------------------ + + 0235fH: LD BC,0234CH + +Direct address 02392H. 1 references: +------------------------------------ + + 02362H: LD DE,02392H + +Direct address 02396H. 1 references: +------------------------------------ + + 023a3H: LD BC,02396H + +Direct address 023abH. 1 references: +------------------------------------ + + 023a6H: LD DE,023ABH + +Direct address 023afH. 1 references: +------------------------------------ + + 023b5H: LD BC,023AFH + +Direct address 023dcH. 1 references: +------------------------------------ + + 023d0H: LD HL,023DCH + +Direct address 023f9H. 2 references: +------------------------------------ + + 023f0H: LD BC,023F9H + 02462H: LD HL,023F9H + +Direct address 02401H. 1 references: +------------------------------------ + + 023b8H: LD DE,02401H + +Direct address 02691H. 1 references: +------------------------------------ + + 023c6H: LD HL,02691H + +Direct address 026b3H. 1 references: +------------------------------------ + + 0247bH: LD HL,026B3H + +Direct address 026dbH. 1 references: +------------------------------------ + + 0246aH: LD HL,026DBH + +Direct address 026f3H. 1 references: +------------------------------------ + + 026b3H: DI + +Direct address 0270fH. 1 references: +------------------------------------ + + 026b5H: RRCA + +Direct address 02710H. 1 references: +------------------------------------ + + 01805H: LD DE,02710H + +Direct address 0273eH. 1 references: +------------------------------------ + + 026b7H: LD A,027H + +Direct address 02765H. 1 references: +------------------------------------ + + 026b9H: LD H,L + +Direct address 02772H. 1 references: +------------------------------------ + + 026bbH: LD (HL),D + +Direct address 0277fH. 1 references: +------------------------------------ + + 026bdH: LD A,A + +Direct address 0279aH. 1 references: +------------------------------------ + + 026c1H: SBC A,D + +Direct address 027b2H. 1 references: +------------------------------------ + + 027a7H: LD HL,027B2H + +Direct address 027b4H. 1 references: +------------------------------------ + + 026bfH: OR H + +Direct address 027f9H. 1 references: +------------------------------------ + + 026c3H: LD SP,HL + +Direct address 02801H. 1 references: +------------------------------------ + + 026c5H: LD BC,00428H + +Direct address 02804H. 1 references: +------------------------------------ + + 026c7H: INC B + +Direct address 02824H. 1 references: +------------------------------------ + + 026d1H: INC H + +Direct address 02841H. 1 references: +------------------------------------ + + 026d5H: LD B,C + +Direct address 0287cH. 1 references: +------------------------------------ + + 026d7H: LD A,H + +Direct address 0288cH. 1 references: +------------------------------------ + + 02880H: ADC A,H + +Direct address 02895H. 1 references: +------------------------------------ + + 026c9H: SUB L + +Direct address 0289dH. 1 references: +------------------------------------ + + 026edH: SBC A,L + +Direct address 028a2H. 1 references: +------------------------------------ + + 026efH: AND D + +Direct address 028b6H. 1 references: +------------------------------------ + + 01bfaH: OR (HL) + +Direct address 028b9H. 1 references: +------------------------------------ + + 01c06H: CP C + +Direct address 02902H. 1 references: +------------------------------------ + + 01c00H: LD (BC),A + +Direct address 02942H. 1 references: +------------------------------------ + + 01bf2H: LD B,D + +Direct address 02959H. 1 references: +------------------------------------ + + 0294aH: LD E,C + +Direct address 02967H. 1 references: +------------------------------------ + + 01bfcH: LD H,A + +Direct address 0299bH. 1 references: +------------------------------------ + + 02967H: LD DE,0299BH + +Direct address 029cbH. 1 references: +------------------------------------ + + 029a3H: SRA C + +Direct address 029ceH. 1 references: +------------------------------------ + + 01bfeH: ADC A,029H + +Direct address 029feH. 1 references: +------------------------------------ + + 01c02H: CP 029H + +Direct address 02a1cH. 1 references: +------------------------------------ + + 01c04H: INC E + +Direct address 02a2fH. 1 references: +------------------------------------ + + 01c18H: CPL + +Direct address 02a3fH. 1 references: +------------------------------------ + + 02a3bH: CCF + +Direct address 02a84H. 3 references: +------------------------------------ + + 02a42H: LD (02A84H),DE + 02a62H: LD (02A84H),DE + 02a74H: LD (02A84H),DE + +Direct address 02a86H. 3 references: +------------------------------------ + + 0127fH: LD BC,(02A86H) + 02a54H: LD (02A86H),DE + 02a66H: LD (02A86H),DE + +Direct address 02a88H. 9 references: +------------------------------------ + + 01f5cH: LD HL,02A88H + 028acH: LD DE,02A88H + 03c74H: LD HL,02A88H + 03e9aH: LD HL,02A88H + 0401aH: LD HL,02A88H + 04030H: LD HL,02A88H + 04080H: LD DE,02A88H + 04094H: LD HL,02A88H + 040f2H: LD HL,02A88H + +Direct address 02a8dH. 8 references: +------------------------------------ + + 020f2H: LD HL,02A8DH + 022f9H: LD DE,02A8DH + 024d9H: LD HL,02A8DH + 028b2H: LD DE,02A8DH + 03b50H: LD DE,02A8DH + 03b6dH: LD HL,02A8DH + 03dbaH: LD HL,02A8DH + 03ef3H: LD HL,02A8DH + +Direct address 02a92H. 4 references: +------------------------------------ + + 022f3H: LD DE,02A92H + 028a7H: LD DE,02A92H + 03b55H: LD DE,02A92H + 03b68H: LD HL,02A92H + +Direct address 02a97H. 1 references: +------------------------------------ + + 024acH: LD DE,02A97H + +Direct address 02aa6H. 1 references: +------------------------------------ + + 01c08H: AND (HL) + +Direct address 02aaaH. 1 references: +------------------------------------ + + 01c0aH: XOR D + +Direct address 02b0dH. 1 references: +------------------------------------ + + 01bc2H: DEC C + +Direct address 02b18H. 1 references: +------------------------------------ + + 02b11H: JR 02B3EH + +Direct address 02b1eH. 1 references: +------------------------------------ + + 02bafH: LD HL,02B1EH + +Direct address 02b35H. 1 references: +------------------------------------ + + 02b33H: DEC (HL) + +Direct address 02b4dH. 1 references: +------------------------------------ + + 02b35H: LD BC,02B4DH + +Direct address 02b9aH. 1 references: +------------------------------------ + + 02b6dH: SBC A,D + +Direct address 02be2H. 1 references: +------------------------------------ + + 02bf4H: LD SP,02BE2H + +Direct address 02befH. 1 references: +------------------------------------ + + 02b26H: LD HL,02BEFH + +Direct address 02bf7H. 1 references: +------------------------------------ + + 02ba9H: LD HL,02BF7H + +Direct address 02bffH. 1 references: +------------------------------------ + + 01be8H: RST 038H + +Direct address 02c0eH. 1 references: +------------------------------------ + + 02c06H: LD C,02CH + +Direct address 02c5fH. 2 references: +------------------------------------ + + 02c16H: LD DE,02C5FH + 02c59H: LD DE,02C5FH + +Direct address 02c68H. 1 references: +------------------------------------ + + 02c7eH: LD HL,02C68H + +Direct address 02c84H. 1 references: +------------------------------------ + + 02c6cH: LD HL,02C84H + +Direct address 02c8eH. 1 references: +------------------------------------ + + 02cc5H: LD HL,02C8EH + +Direct address 02cbfH. 1 references: +------------------------------------ + + 02cb3H: CP A + +Direct address 02cf4H. 1 references: +------------------------------------ + + 02cdeH: CALL P,02A2CH + +Direct address 02d05H. 1 references: +------------------------------------ + + 02d00H: DEC B + +Direct address 02d10H. 1 references: +------------------------------------ + + 02d02H: LD HL,02D10H + +Direct address 02d11H. 1 references: +------------------------------------ + + 02cb6H: LD DE,02D11H + +Direct address 02d12H. 1 references: +------------------------------------ + + 01bbaH: LD (DE),A + +Direct address 02d46H. 1 references: +------------------------------------ + + 01d5cH: LD BC,02D46H + +Direct address 02d68H. 2 references: +------------------------------------ + + 02d57H: LD L,B + 02d5dH: LD L,B + +Direct address 02d75H. 1 references: +------------------------------------ + + 01bdcH: LD (HL),L + +Direct address 02d82H. 1 references: +------------------------------------ + + 01bdeH: ADD A,D + +Direct address 02d92H. 1 references: +------------------------------------ + + 01bf6H: SUB D + +Direct address 02d9fH. 1 references: +------------------------------------ + + 01bf4H: SBC A,A + +Direct address 02dadH. 1 references: +------------------------------------ + + 01bf8H: XOR L + +Direct address 02e28H. 1 references: +------------------------------------ + + 0213fH: LD HL,02E28H + +Direct address 02e33H. 3 references: +------------------------------------ + + 02febH: LD HL,02E33H + 03028H: LD HL,02E33H + 03132H: LD HL,02E33H + +Direct address 02e34H. 6 references: +------------------------------------ + + 02e1dH: LD DE,02E34H + 02e64H: LD HL,02E34H + 02e8cH: LD HL,02E34H + 02efaH: LD DE,02E34H + 0301fH: LD DE,02E34H + 03148H: LD DE,02E34H + +Direct address 02e9aH. 1 references: +------------------------------------ + + 02e98H: SBC A,D + +Direct address 02eb0H. 1 references: +------------------------------------ + + 02e9dH: LD DE,02EB0H + +Direct address 02eb3H. 1 references: +------------------------------------ + + 01be0H: OR E + +Direct address 02edaH. 1 references: +------------------------------------ + + 02d79H: JP C,0CD2EH + +Direct address 02ee6H. 1 references: +------------------------------------ + + 02edfH: LD BC,02EE6H + +Direct address 02f8cH. 1 references: +------------------------------------ + + 02f86H: LD DE,02F8CH + +Direct address 02fc2H. 1 references: +------------------------------------ + + 02f67H: LD DE,02FC2H + +Direct address 02fc9H. 1 references: +------------------------------------ + + 02f6cH: LD DE,02FC9H + +Direct address 02fd2H. 1 references: +------------------------------------ + + 02f62H: LD DE,02FD2H + +Direct address 02fddH. 1 references: +------------------------------------ + + 02ed1H: LD DE,02FDDH + +Direct address 02fe0H. 1 references: +------------------------------------ + + 02d89H: RET PO + +Direct address 02feaH. 1 references: +------------------------------------ + + 02fe8H: JP PE,0E52FH + +Direct address 03038H. 1 references: +------------------------------------ + + 02fe0H: LD BC,03038H + +Direct address 03064H. 1 references: +------------------------------------ + + 02bfcH: LD SP,03064H + +Direct address 030e5H. 1 references: +------------------------------------ + + 02da3H: PUSH HL + +Direct address 030f6H. 1 references: +------------------------------------ + + 025e2H: LD BC,030F6H + +Direct address 030fcH. 1 references: +------------------------------------ + + 030efH: LD BC,030FCH + +Direct address 0311eH. 1 references: +------------------------------------ + + 02d96H: LD E,031H + +Direct address 0313aH. 1 references: +------------------------------------ + + 03128H: LD BC,0313AH + +Direct address 03171H. 1 references: +------------------------------------ + + 02db1H: LD (HL),C + +Direct address 032d4H. 1 references: +------------------------------------ + + 01c20H: CALL NC,0AB32H + +Direct address 03315H. 1 references: +------------------------------------ + + 03362H: LD HL,03315H + +Direct address 03326H. 1 references: +------------------------------------ + + 03324H: LD H,033H + +Direct address 033abH. 1 references: +------------------------------------ + + 01c1eH: XOR E + +Direct address 03400H. 1 references: +------------------------------------ + + 03431H: LD (03400H),BC + +Direct address 03401H. 1 references: +------------------------------------ + + 034e4H: LD HL,03401H + +Direct address 03402H. 3 references: +------------------------------------ + + 0347bH: LD HL,03402H + 0347fH: LD HL,03402H + 034b7H: LD HL,03402H + +Direct address 03403H. 1 references: +------------------------------------ + + 026abH: INC BC + +Direct address 03405H. 1 references: +------------------------------------ + + 026a9H: DEC B + +Direct address 03500H. 1 references: +------------------------------------ + + 026adH: NOP + +Direct address 035d0H. 1 references: +------------------------------------ + + 026afH: RET NC + +Direct address 0366eH. 1 references: +------------------------------------ + + 03734H: LD DE,(0366EH) + +Direct address 03725H. 1 references: +------------------------------------ + + 0371aH: LD HL,03725H + +Direct address 03755H. 2 references: +------------------------------------ + + 0374dH: LD BC,03755H + 0375dH: LD HL,03755H + +Direct address 037aeH. 2 references: +------------------------------------ + + 03730H: LD BC,037AEH + 03afaH: LD BC,037AEH + +Direct address 037dbH. 1 references: +------------------------------------ + + 039abH: LD HL,037DBH + +Direct address 038a3H. 1 references: +------------------------------------ + + 03afeH: LD DE,(038A3H) + +Direct address 038a6H. 2 references: +------------------------------------ + + 0390dH: LD HL,038A6H + 0391dH: LD DE,038A6H + +Direct address 038a7H. 4 references: +------------------------------------ + + 0392eH: LD DE,038A7H + 0394fH: LD HL,038A7H + 039d8H: LD HL,038A7H + 03ab7H: LD IX,038A7H + +Direct address 038a8H. 1 references: +------------------------------------ + + 0392bH: LD HL,038A8H + +Direct address 038afH. 2 references: +------------------------------------ + + 03963H: LD HL,038AFH + 03a4cH: LD HL,038AFH + +Direct address 038b0H. 6 references: +------------------------------------ + + 038d9H: LD HL,038B0H + 0393fH: LD HL,038B0H + 03a27H: LD HL,038B0H + 03a4fH: LD DE,038B0H + 03aa3H: LD HL,038B0H + 03b21H: LD HL,038B0H + +Direct address 038b1H. 1 references: +------------------------------------ + + 03960H: LD DE,038B1H + +Direct address 038b2H. 1 references: +------------------------------------ + + 0395bH: LD DE,038B2H + +Direct address 03994H. 1 references: +------------------------------------ + + 0398aH: LD HL,03994H + +Direct address 039d8H. 1 references: +------------------------------------ + + 039c7H: LD BC,039D8H + +Direct address 03a86H. 1 references: +------------------------------------ + + 026e7H: ADD A,(HL) + +Direct address 03aefH. 1 references: +------------------------------------ + + 03ae4H: LD HL,03AEFH + +Direct address 03b62H. 2 references: +------------------------------------ + + 02691H: LD H,D + 02693H: LD H,D + +Direct address 03b73H. 1 references: +------------------------------------ + + 0269fH: LD (HL),E + +Direct address 03b77H. 1 references: +------------------------------------ + + 026a1H: LD (HL),A + +Direct address 03b7fH. 1 references: +------------------------------------ + + 0269dH: LD A,A + +Direct address 03b87H. 2 references: +------------------------------------ + + 02695H: ADD A,A + 02697H: ADD A,A + +Direct address 03b8bH. 2 references: +------------------------------------ + + 02699H: ADC A,E + 0269bH: ADC A,E + +Direct address 03b93H. 2 references: +------------------------------------ + + 03ba3H: LD DE,03B93H + 03bc4H: LD DE,03B93H + +Direct address 03b98H. 1 references: +------------------------------------ + + 026dbH: SBC A,B + +Direct address 03be4H. 1 references: +------------------------------------ + + 03bc7H: LD HL,03BE4H + +Direct address 03be9H. 1 references: +------------------------------------ + + 03ba7H: LD HL,03BE9H + +Direct address 03beeH. 29 references: +------------------------------------- + + 03c02H: LD DE,03BEEH + 03c0eH: LD DE,03BEEH + 03c85H: LD DE,03BEEH + 03c8eH: LD HL,03BEEH + 03c9aH: LD HL,03BEEH + 03cbfH: LD HL,03BEEH + 03d64H: LD DE,03BEEH + 03d81H: LD HL,03BEEH + 03d8dH: LD HL,03BEEH + 03ddbH: LD DE,03BEEH + 03e2bH: LD DE,03BEEH + 03e74H: LD HL,03BEEH + 03e91H: LD HL,03BEEH + 03eaaH: LD HL,03BEEH + 03f68H: LD DE,03BEEH + 03f7eH: LD HL,03BEEH + 03f9cH: LD DE,03BEEH + 03fc5H: LD HL,03BEEH + 03fdeH: LD HL,03BEEH + 03ff7H: LD HL,03BEEH + 0400bH: LD HL,03BEEH + 04012H: LD DE,03BEEH + 04022H: LD HL,03BEEH + 0408aH: LD DE,03BEEH + 0409cH: LD HL,03BEEH + 040a8H: LD DE,03BEEH + 040b3H: LD HL,03BEEH + 040ffH: LD HL,03BEEH + 04115H: LD HL,03BEEH + +Direct address 03bf3H. 12 references: +------------------------------------- + + 03c0bH: LD HL,03BF3H + 03c8bH: LD DE,03BF3H + 03c97H: LD DE,03BF3H + 03d76H: LD DE,03BF3H + 03d7eH: LD DE,03BF3H + 03d87H: LD HL,03BF3H + 03f8eH: LD DE,03BF3H + 03f96H: LD DE,03BF3H + 03f9fH: LD HL,03BF3H + 03fc2H: LD DE,03BF3H + 03ff1H: LD HL,03BF3H + 040b6H: LD DE,03BF3H + +Direct address 03bf8H. 2 references: +------------------------------------ + + 03d23H: LD DE,03BF8H + 03d37H: LD HL,03BF8H + +Direct address 03bfdH. 2 references: +------------------------------------ + + 03d16H: LD DE,03BFDH + 03d2bH: LD HL,03BFDH + +Direct address 03c16H. 1 references: +------------------------------------ + + 026ddH: LD D,03CH + +Direct address 03ce7H. 3 references: +------------------------------------ + + 03c17H: LD HL,03CE7H + 03d06H: LD HL,03CE7H + 0410dH: LD HL,03CE7H + +Direct address 03cecH. 1 references: +------------------------------------ + + 03ca0H: LD HL,03CECH + +Direct address 03cf1H. 1 references: +------------------------------------ + + 03ca6H: LD HL,03CF1H + +Direct address 03cf6H. 1 references: +------------------------------------ + + 03cacH: LD HL,03CF6H + +Direct address 03cfbH. 1 references: +------------------------------------ + + 03cb2H: LD HL,03CFBH + +Direct address 03d00H. 1 references: +------------------------------------ + + 03cb8H: LD HL,03D00H + +Direct address 03d05H. 1 references: +------------------------------------ + + 026dfH: DEC B + +Direct address 03d14H. 1 references: +------------------------------------ + + 026e1H: INC D + +Direct address 03d3fH. 1 references: +------------------------------------ + + 026f1H: CCF + +Direct address 03dedH. 1 references: +------------------------------------ + + 03d6aH: LD HL,03DEDH + +Direct address 03df2H. 1 references: +------------------------------------ + + 03d70H: LD HL,03DF2H + +Direct address 03df7H. 1 references: +------------------------------------ + + 03de1H: LD HL,03DF7H + +Direct address 03dfcH. 1 references: +------------------------------------ + + 03de7H: LD HL,03DFCH + +Direct address 03e03H. 1 references: +------------------------------------ + + 026e5H: INC BC + +Direct address 03f05H. 1 references: +------------------------------------ + + 03e31H: LD HL,03F05H + +Direct address 03f0aH. 1 references: +------------------------------------ + + 03e37H: LD HL,03F0AH + +Direct address 03f0fH. 1 references: +------------------------------------ + + 03e42H: LD HL,03F0FH + +Direct address 03f14H. 1 references: +------------------------------------ + + 03e4dH: LD HL,03F14H + +Direct address 03f19H. 1 references: +------------------------------------ + + 03e58H: LD HL,03F19H + +Direct address 03f1eH. 1 references: +------------------------------------ + + 03e63H: LD HL,03F1EH + +Direct address 03f23H. 1 references: +------------------------------------ + + 03e6eH: LD HL,03F23H + +Direct address 03f28H. 1 references: +------------------------------------ + + 03e23H: LD HL,03F28H + +Direct address 03f2dH. 1 references: +------------------------------------ + + 03e0eH: LD HL,03F2DH + +Direct address 03f35H. 1 references: +------------------------------------ + + 026ebH: DEC (HL) + +Direct address 04041H. 1 references: +------------------------------------ + + 03fa5H: LD HL,04041H + +Direct address 04046H. 1 references: +------------------------------------ + + 03fabH: LD HL,04046H + +Direct address 0404bH. 1 references: +------------------------------------ + + 03fb1H: LD HL,0404BH + +Direct address 04050H. 1 references: +------------------------------------ + + 03fb7H: LD HL,04050H + +Direct address 04055H. 2 references: +------------------------------------ + + 03f70H: LD HL,04055H + 03f76H: LD HL,04055H + +Direct address 0405aH. 1 references: +------------------------------------ + + 03f86H: LD HL,0405AH + +Direct address 0405fH. 1 references: +------------------------------------ + + 03febH: LD HL,0405FH + +Direct address 04064H. 1 references: +------------------------------------ + + 026e9H: LD H,H + +Direct address 0406fH. 1 references: +------------------------------------ + + 04069H: LD HL,0406FH + +Direct address 04076H. 1 references: +------------------------------------ + + 026e3H: HALT + +Direct address 0411aH. 1 references: +------------------------------------ + + 02643H: LD BC,0411AH + +Direct address 04121H. 1 references: +------------------------------------ + + 040bcH: LD HL,04121H + +Direct address 04126H. 1 references: +------------------------------------ + + 040c2H: LD HL,04126H + +Direct address 0412bH. 1 references: +------------------------------------ + + 040c8H: LD HL,0412BH + +Direct address 04130H. 1 references: +------------------------------------ + + 040ceH: LD HL,04130H + +Direct address 04135H. 1 references: +------------------------------------ + + 040d4H: LD HL,04135H + +Direct address 0413aH. 1 references: +------------------------------------ + + 040daH: LD HL,0413AH + +Direct address 0413fH. 1 references: +------------------------------------ + + 040e0H: LD HL,0413FH + +Direct address 04144H. 1 references: +------------------------------------ + + 040e6H: LD HL,04144H + +Direct address 04149H. 1 references: +------------------------------------ + + 040ecH: LD HL,04149H + +Direct address 0414eH. 2 references: +------------------------------------ + + 041a7H: LD DE,0414EH + 041b3H: LD DE,0414EH + +Direct address 04152H. 1 references: +------------------------------------ + + 041bcH: LD HL,04152H + +Direct address 04154H. 6 references: +------------------------------------ + + 0415aH: LD DE,04154H + 04182H: LD HL,04154H + 041a4H: LD HL,04154H + 041adH: LD DE,04154H + 041b6H: LD HL,04154H + 041c4H: LD HL,04154H + +Direct address 04159H. 1 references: +------------------------------------ + + 026b1H: LD E,C + +Direct address 041ecH. 2 references: +------------------------------------ + + 041feH: LD DE,041ECH + 04213H: LD HL,041ECH + +Direct address 04223H. 1 references: +------------------------------------ + + 041f0H: LD HL,04223H + +Direct address 048ffH. 1 references: +------------------------------------ + + 01200H: LD HL,048FFH + +Direct address 04900H. 1 references: +------------------------------------ + + 01d95H: LD HL,04900H + +Direct address 04902H. 1 references: +------------------------------------ + + 02cf4H: LD DE,(04902H) + +Direct address 04903H. 1 references: +------------------------------------ + + 01da5H: LD HL,04903H + +Direct address 04904H. 1 references: +------------------------------------ + + 01d9aH: LD HL,04904H + +Direct address 04906H. 1 references: +------------------------------------ + + 01dadH: LD DE,(04906H) + +Direct address 0490aH. 1 references: +------------------------------------ + + 01258H: LD SP,(0490AH) + +Direct address LINEBUFR. 9 references: +-------------------------------------- + + 01272H: LD DE,0490DH + 0146aH: LD HL,0490DH + 014fbH: LD DE,0490DH + 01ca7H: LD DE,0490DH + 02b9eH: LD HL,0490DH + 02c32H: LD DE,0490DH + 02c68H: LD DE,0490DH + 02c9cH: LD DE,0490DH + 02d3bH: LD HL,0490DH + +Direct address 04954H. 1 references: +------------------------------------ + + 02578H: LD HL,04954H + +Direct address 04a0eH. 2 references: +------------------------------------ + + 012f7H: LD HL,04A0EH + 01c8aH: LD DE,04A0EH + +Direct address 04a10H. 1 references: +------------------------------------ + + 01470H: LD (04A10H),DE + +Direct address 04a12H. 3 references: +------------------------------------ + + 012c5H: LD HL,04A12H + 01474H: LD DE,04A12H + 01507H: LD HL,04A12H + +Direct address 04ab3H. 4 references: +------------------------------------ + + 01841H: LD DE,04AB3H + 01c69H: LD HL,04AB3H + 01cf6H: LD (04AB3H),DE + 0278cH: LD DE,04AB3H + +Direct address 04ab5H. 1 references: +------------------------------------ + + 01d0aH: LD (04AB5H),DE + +Direct address 04cd3H. 5 references: +------------------------------------ + + 0307fH: LD HL,04CD3H + 030bbH: LD HL,04CD3H + 03105H: LD HL,04CD3H + 0315dH: LD HL,04CD3H + 0319dH: LD HL,04CD3H + +Direct address 04dd3H. 4 references: +------------------------------------ + + 03072H: LD DE,04DD3H + 030a4H: LD DE,04DD3H + 03169H: LD HL,04DD3H + 03181H: LD DE,04DD3H + +Direct address 04dd8H. 1 references: +------------------------------------ + + 02e5aH: LD HL,04DD8H + +Direct address 04df2H. 2 references: +------------------------------------ + + 0199eH: LD HL,04DF2H + 02dc1H: LD HL,04DF2H + +Direct address 04e4eH. 2 references: +------------------------------------ + + 0195dH: LD DE,04E4EH + 02f4eH: LD HL,04E4EH + +Direct address 04e50H. 1 references: +------------------------------------ + + 019aaH: LD HL,04E50H + +Direct address 04e84H. 1 references: +------------------------------------ + + 01999H: LD DE,04E84H + +Direct address 04e86H. 1 references: +------------------------------------ + + 02126H: LD HL,04E86H + +Direct address 04e94H. 2 references: +------------------------------------ + + 019c7H: LD HL,04E94H + 0249eH: LD DE,(04E94H) + +Direct address 04e96H. 1 references: +------------------------------------ + + 01961H: LD HL,04E96H + +Direct address 04e98H. 1 references: +------------------------------------ + + 01fa5H: LD DE,(04E98H) + +Direct address 04e9aH. 2 references: +------------------------------------ + + 01ee0H: LD DE,(04E9AH) + 01eebH: LD (04E9AH),DE + +Direct address 04e9cH. 1 references: +------------------------------------ + + 0252cH: LD DE,04E9CH + +Direct address 04ebaH. 1 references: +------------------------------------ + + 01984H: LD HL,04EBAH + +Direct address 04fd7H. 1 references: +------------------------------------ + + 0197eH: LD HL,04FD7H + +Direct address 05040H. 2 references: +------------------------------------ + + 01978H: LD HL,05040H + 01f6eH: LD DE,(05040H) + +Direct address 05042H. 1 references: +------------------------------------ + + 01f5fH: LD DE,05042H + +Direct address 05048H. 1 references: +------------------------------------ + + 01f48H: LD DE,05048H + +Direct address 0504dH. 6 references: +------------------------------------ + + 01266H: LD HL,0504DH + 01b54H: LD DE,0504DH + 01ba6H: LD HL,0504DH + 01f1dH: LD DE,0504DH + 02012H: LD DE,0504DH + 029f4H: LD HL,0504DH + +Direct address 05053H. 5 references: +------------------------------------ + + 0198aH: LD HL,05053H + 01f04H: LD HL,05053H + 01f8fH: LD HL,05053H + 01fddH: LD HL,05053H + 0202bH: LD HL,05053H + +Direct address 05054H. 1 references: +------------------------------------ + + 01f98H: LD HL,05054H + +Direct address 05055H. 2 references: +------------------------------------ + + 01ed4H: LD HL,05055H + 01efbH: LD HL,05055H + +Direct address 05056H. 1 references: +------------------------------------ + + 0140eH: LD HL,05056H + +Direct address 0505cH. 12 references: +------------------------------------- + + 018b3H: LD HL,0505CH + 01957H: LD HL,0505CH + 01ac7H: LD HL,0505CH + 01ae1H: LD DE,0505CH + 01b13H: LD DE,0505CH + 01b1bH: LD HL,0505CH + 01c7dH: LD HL,0505CH + 01ec1H: LD HL,0505CH + 02d43H: LD HL,0505CH + 02f23H: LD DE,0505CH + 0303bH: LD HL,0505CH + 03041H: LD DE,0505CH + +Direct address 0505eH. 1 references: +------------------------------------ + + 02f4bH: LD DE,0505EH + +Direct address 08000H. 1 references: +------------------------------------ + + 03c43H: LD HL,08000H + +Direct address 0f1f0H. 1 references: +------------------------------------ + + 025c1H: LD DE,0F1F0H + +Direct address 0ff0aH. 1 references: +------------------------------------ + + 038ffH: LD BC,0FF0AH + +Direct address 0ff9cH. 1 references: +------------------------------------ + + 01854H: LD HL,0FF9CH + +Direct address 0ffc4H. 1 references: +------------------------------------ + + 025c7H: LD DE,0FFC4H + +Direct address 0fffaH. 1 references: +------------------------------------ + + 02535H: LD BC,0FFFAH + +Direct address 0fffbH. 2 references: +------------------------------------ + + 01e7cH: LD BC,0FFFBH + 023e6H: LD BC,0FFFBH + + +Indirect address Reference (316 entries) +---------------------------------------- + +Indirect address ATRB. 2 references: +------------------------------------ + + 02eb9H: LD A,(010F0H) + 02f0dH: LD A,(010F0H) + +Indirect address 01101H. 1 references: +-------------------------------------- + + 02f80H: LD (01101H),A + +Indirect address SIZE. 6 references: +------------------------------------ + + 02f1cH: LD HL,(01102H) + 02f9bH: LD HL,(01102H) + 0304aH: LD (01102H),HL + 03102H: LD (01102H),HL + 03166H: LD (01102H),HL + 04206H: LD (01102H),HL + +Indirect address DTADR. 5 references: +------------------------------------- + + 02f8eH: LD HL,(01104H) + 0303eH: LD (01104H),HL + 0310bH: LD (01104H),HL + 03160H: LD (01104H),HL + 041fbH: LD (01104H),HL + +Indirect address EXADR. 1 references: +------------------------------------- + + 0420cH: LD (01106H),HL + +Indirect address DSPXY. 3 references: +------------------------------------- + + 02890H: LD A,(01171H) + 028d0H: LD HL,(01171H) + 028ebH: LD (01171H),HL + +Indirect address 01172H. 1 references: +-------------------------------------- + + 02882H: LD A,(01172H) + +Indirect address MGPNT. 2 references: +------------------------------------- + + 028d6H: LD A,(0117CH) + 028e3H: LD (0117CH),A + +Indirect address PAGETP. 3 references: +-------------------------------------- + + 02860H: LD HL,(0117DH) + 02ae5H: LD HL,(0117DH) + 033c6H: LD HL,(0117DH) + +Indirect address DPRNT. 3 references: +------------------------------------- + + 028f1H: LD (01194H),A + 02b78H: LD A,(01194H) + 02c2bH: LD A,(01194H) + +Indirect address 013a3H. 2 references: +-------------------------------------- + + 01403H: LD (013A3H),A + 01430H: LD HL,(013A3H) + +Indirect address 013ffH. 1 references: +-------------------------------------- + + 01400H: LD A,(013FFH) + +Indirect address 01463H. 4 references: +-------------------------------------- + + 0145aH: LD (01463H),A + 01c43H: LD (01463H),A + 029d1H: LD A,(01463H) + 029ebH: LD (01463H),A + +Indirect address 018bfH. 1 references: +-------------------------------------- + + 018b0H: LD (018BFH),HL + +Indirect address 018d8H. 3 references: +-------------------------------------- + + 020c3H: LD HL,(018D8H) + 0211bH: LD (018D8H),HL + 02581H: LD (018D8H),HL + +Indirect address 01c4cH. 4 references: +-------------------------------------- + + 01c65H: LD (01C4CH),A + 01cbdH: LD A,(01C4CH) + 01cc1H: LD (01C4CH),A + 01ce5H: LD (01C4CH),A + +Indirect address 01cabH. 2 references: +-------------------------------------- + + 01c4eH: LD (01CABH),A + 01c5dH: LD (01CABH),A + +Indirect address 02102H. 3 references: +-------------------------------------- + + 020e5H: LD HL,(02102H) + 02117H: LD (02102H),HL + 0263bH: LD HL,(02102H) + +Indirect address 02104H. 5 references: +-------------------------------------- + + 020a3H: LD A,(02104H) + 020d4H: LD A,(02104H) + 02123H: LD (02104H),A + 0214eH: LD A,(02104H) + 02618H: LD A,(02104H) + +Indirect address 02105H. 2 references: +-------------------------------------- + + 02096H: LD HL,(02105H) + 0211fH: LD (02105H),HL + +Indirect address 02a15H. 1 references: +-------------------------------------- + + 02a05H: LD (02A15H),A + +Indirect address 02a2bH. 1 references: +-------------------------------------- + + 02a23H: LD (02A2BH),A + +Indirect address 02a83H. 6 references: +-------------------------------------- + + 01275H: LD A,(02A83H) + 012a1H: LD (02A83H),A + 012a7H: LD (02A83H),A + 01443H: LD (02A83H),A + 01e92H: LD (02A83H),A + 02a5aH: LD (02A83H),A + +Indirect address 02a84H. 2 references: +-------------------------------------- + + 0127bH: LD HL,(02A84H) + 01286H: LD (02A84H),HL + +Indirect address 02c8cH. 4 references: +-------------------------------------- + + 02c36H: LD (02C8CH),HL + 02c96H: LD HL,(02C8CH) + 02ca4H: LD (02C8CH),HL + 02cc2H: LD (02C8CH),HL + +Indirect address 02d74H. 6 references: +-------------------------------------- + + 02edcH: LD (02D74H),A + 02f07H: LD A,(02D74H) + 0309dH: LD (02D74H),A + 030c4H: LD A,(02D74H) + 030cdH: LD (02D74H),A + 0312eH: LD (02D74H),A + +Indirect address 030e2H. 9 references: +-------------------------------------- + + 01e95H: LD (030E2H),A + 03067H: LD A,(030E2H) + 03092H: LD A,(030E2H) + 030e8H: LD A,(030E2H) + 03118H: LD (030E2H),A + 03121H: LD A,(030E2H) + 03157H: LD (030E2H),A + 03174H: LD A,(030E2H) + 03191H: LD (030E2H),A + +Indirect address 030e3H. 7 references: +-------------------------------------- + + 0306eH: LD HL,(030E3H) + 0308bH: LD (030E3H),HL + 030a0H: LD HL,(030E3H) + 030dcH: LD (030E3H),HL + 03108H: LD (030E3H),HL + 0316cH: LD (030E3H),HL + 0317eH: LD HL,(030E3H) + +Indirect address 0326dH. 3 references: +-------------------------------------- + + 031fbH: LD (0326DH),A + 03269H: LD (0326DH),A + 033f4H: LD A,(0326DH) + +Indirect address 032d3H. 7 references: +-------------------------------------- + + 02b89H: LD A,(032D3H) + 031a2H: LD A,(032D3H) + 031b0H: LD (032D3H),A + 031b6H: LD A,(032D3H) + 03248H: LD A,(032D3H) + 0325fH: LD (032D3H),A + 03270H: LD A,(032D3H) + +Indirect address 03400H. 6 references: +-------------------------------------- + + 0345cH: LD A,(03400H) + 03522H: LD (03400H),A + 03561H: LD A,(03400H) + 03565H: LD (03400H),A + 0357cH: LD A,(03400H) + 03b03H: LD (03400H),A + +Indirect address 03401H. 6 references: +-------------------------------------- + + 03506H: LD (03401H),A + 035d6H: LD (03401H),A + 0370dH: LD (03401H),A + 0373aH: LD (03401H),A + 039ceH: LD (03401H),A + 03a96H: LD (03401H),A + +Indirect address 03402H. 9 references: +-------------------------------------- + + 0342bH: LD (03402H),A + 0351eH: LD (03402H),A + 03583H: LD A,(03402H) + 03587H: LD (03402H),A + 035b5H: LD A,(03402H) + 035b9H: LD (03402H),A + 035ecH: LD (03402H),A + 03712H: LD (03402H),A + 03adcH: LD (03402H),A + +Indirect address 0366dH. 9 references: +-------------------------------------- + + 0367aH: LD (0366DH),A + 036f1H: LD (0366DH),A + 036f7H: LD A,(0366DH) + 036fdH: LD (0366DH),A + 03725H: LD A,(0366DH) + 03ab4H: LD (0366DH),A + 03ad1H: LD A,(0366DH) + 03ad7H: LD (0366DH),A + 03aefH: LD A,(0366DH) + +Indirect address 0366eH. 3 references: +-------------------------------------- + + 03675H: LD (0366EH),HL + 0371eH: LD HL,(0366EH) + 03761H: LD HL,(0366EH) + +Indirect address 038a3H. 3 references: +-------------------------------------- + + 03997H: LD (038A3H),HL + 03ae8H: LD HL,(038A3H) + 03b58H: LD HL,(038A3H) + +Indirect address 038a5H. 8 references: +-------------------------------------- + + 038bfH: LD A,(038A5H) + 038ebH: LD A,(038A5H) + 03971H: LD A,(038A5H) + 039c3H: LD (038A5H),A + 03a5aH: LD A,(038A5H) + 03a5eH: LD (038A5H),A + 03a9cH: LD A,(038A5H) + 03b1aH: LD A,(038A5H) + +Indirect address 038a6H. 2 references: +-------------------------------------- + + 039a7H: LD (038A6H),A + 03a8aH: LD A,(038A6H) + +Indirect address 038a7H. 2 references: +-------------------------------------- + + 038d6H: LD (038A7H),A + 03a47H: LD A,(038A7H) + +Indirect address 03c14H. 2 references: +-------------------------------------- + + 03c63H: LD (03C14H),HL + 03c6cH: LD A,(03C14H) + +Indirect address 03c15H. 3 references: +-------------------------------------- + + 03c20H: LD (03C15H),A + 03c5bH: LD A,(03C15H) + 03c80H: LD A,(03C15H) + +Indirect address 03d3dH. 3 references: +-------------------------------------- + + 03d41H: LD (03D3DH),A + 03d99H: LD A,(03D3DH) + 03d9dH: LD (03D3DH),A + +Indirect address 03d3eH. 3 references: +-------------------------------------- + + 03d5fH: LD (03D3EH),A + 03da2H: LD A,(03D3EH) + 03dd6H: LD (03D3EH),A + +Indirect address 03e01H. 4 references: +-------------------------------------- + + 03e07H: LD (03E01H),A + 03e8bH: LD A,(03E01H) + 03eecH: LD A,(03E01H) + 03efcH: LD A,(03E01H) + +Indirect address 03e02H. 3 references: +-------------------------------------- + + 03e18H: LD (03E02H),A + 03e7aH: LD A,(03E02H) + 03ed9H: LD (03E02H),A + +Indirect address 03f32H. 3 references: +-------------------------------------- + + 03f3bH: LD (03F32H),A + 03f49H: LD (03F32H),A + 04006H: LD A,(03F32H) + +Indirect address 03f33H. 3 references: +-------------------------------------- + + 03f38H: LD (03F33H),A + 03ffaH: LD A,(03F33H) + 0403cH: LD (03F33H),A + +Indirect address 03f34H. 2 references: +-------------------------------------- + + 03f65H: LD (03F34H),A + 03fcbH: LD A,(03F34H) + +Indirect address 04074H. 2 references: +-------------------------------------- + + 0407bH: LD (04074H),A + 0411cH: LD A,(04074H) + +Indirect address 04075H. 2 references: +-------------------------------------- + + 040a3H: LD (04075H),A + 04105H: LD A,(04075H) + +Indirect address 04153H. 4 references: +-------------------------------------- + + 04170H: LD (04153H),A + 04179H: LD A,(04153H) + 0418eH: LD A,(04153H) + 041e8H: LD (04153H),A + +Indirect address 04900H. 1 references: +-------------------------------------- + + 01dcbH: LD HL,(04900H) + +Indirect address 04902H. 2 references: +-------------------------------------- + + 01de5H: LD HL,(04902H) + 01dfeH: LD HL,(04902H) + +Indirect address 04905H. 1 references: +-------------------------------------- + + 02912H: LD A,(04905H) + +Indirect address 04908H. 4 references: +-------------------------------------- + + 01214H: LD (04908H),HL + 02972H: LD HL,(04908H) + 0297dH: LD HL,(04908H) + 02fa2H: LD HL,(04908H) + +Indirect address 0490aH. 5 references: +-------------------------------------- + + 01217H: LD (0490AH),HL + 012b4H: LD HL,(0490AH) + 01417H: LD HL,(0490AH) + 02994H: LD (0490AH),HL + 02f92H: LD HL,(0490AH) + +Indirect address 04a0eH. 2 references: +-------------------------------------- + + 012f3H: LD (04A0EH),HL + 01cdfH: LD HL,(04A0EH) + +Indirect address 04a10H. 3 references: +-------------------------------------- + + 012beH: LD HL,(04A10H) + 014f8H: LD HL,(04A10H) + 01c93H: LD HL,(04A10H) + +Indirect address 04a12H. 1 references: +-------------------------------------- + + 012e8H: LD A,(04A12H) + +Indirect address 04ab3H. 1 references: +-------------------------------------- + + 01c8fH: LD HL,(04AB3H) + +Indirect address 04ab5H. 1 references: +-------------------------------------- + + 01c9cH: LD HL,(04AB5H) + +Indirect address 04dd4H. 8 references: +-------------------------------------- + + 02b3dH: LD A,(04DD4H) + 02b56H: LD A,(04DD4H) + 02b7cH: LD A,(04DD4H) + 02be3H: LD A,(04DD4H) + 02c8eH: LD A,(04DD4H) + 02d17H: LD (04DD4H),A + 02dbcH: LD (04DD4H),A + 02eacH: LD (04DD4H),A + +Indirect address 04dd6H. 1 references: +-------------------------------------- + + 02e57H: LD (04DD6H),HL + +Indirect address 04e4cH. 1 references: +-------------------------------------- + + 01947H: LD (04E4CH),HL + +Indirect address 04e4eH. 2 references: +-------------------------------------- + + 01adeH: LD HL,(04E4EH) + 03044H: LD HL,(04E4EH) + +Indirect address 04e80H. 4 references: +-------------------------------------- + + 0332aH: LD HL,(04E80H) + 03340H: LD HL,(04E80H) + 03373H: LD HL,(04E80H) + 0338aH: LD HL,(04E80H) + +Indirect address 04e84H. 3 references: +-------------------------------------- + + 01996H: LD HL,(04E84H) + 0222bH: LD HL,(04E84H) + 0250aH: LD HL,(04E84H) + +Indirect address 04e8aH. 1 references: +-------------------------------------- + + 024beH: LD HL,(04E8AH) + +Indirect address 04e90H. 1 references: +-------------------------------------- + + 02584H: LD HL,(04E90H) + +Indirect address 04e92H. 3 references: +-------------------------------------- + + 01913H: LD HL,(04E92H) + 01a21H: LD HL,(04E92H) + 01b73H: LD HL,(04E92H) + +Indirect address 04e94H. 23 references: +--------------------------------------- + + 01789H: LD HL,(04E94H) + 0184dH: LD HL,(04E94H) + 0192cH: LD HL,(04E94H) + 01936H: LD HL,(04E94H) + 01a3eH: LD HL,(04E94H) + 01a42H: LD (04E94H),HL + 01a4fH: LD HL,(04E94H) + 01b79H: LD (04E94H),HL + 01e7fH: LD HL,(04E94H) + 01e83H: LD (04E94H),HL + 01f57H: LD HL,(04E94H) + 021d9H: LD IX,(04E94H) + 023bcH: LD HL,(04E94H) + 023c3H: LD (04E94H),HL + 023e3H: LD HL,(04E94H) + 023ecH: LD (04E94H),HL + 02411H: LD HL,(04E94H) + 02466H: LD HL,(04E94H) + 02548H: LD HL,(04E94H) + 02789H: LD HL,(04E94H) + 027e7H: LD HL,(04E94H) + 02986H: LD HL,(04E94H) + 02bc3H: LD HL,(04E94H) + +Indirect address 04e96H. 5 references: +-------------------------------------- + + 01987H: LD (04E96H),HL + 02529H: LD HL,(04E96H) + 02539H: LD (04E96H),HL + 0255bH: LD HL,(04E96H) + 02569H: LD (04E96H),HL + +Indirect address 04e98H. 9 references: +-------------------------------------- + + 01981H: LD (04E98H),HL + 01f0eH: LD HL,(04E98H) + 01f15H: LD (04E98H),HL + 01f6bH: LD HL,(04E98H) + 01f8aH: LD (04E98H),HL + 01fb1H: LD (04E98H),HL + 01fcdH: LD HL,(04E98H) + 01fecH: LD (04E98H),HL + 02028H: LD (04E98H),HL + +Indirect address 04e9aH. 3 references: +-------------------------------------- + + 0197bH: LD (04E9AH),HL + 01f1aH: LD HL,(04E9AH) + 01f25H: LD (04E9AH),HL + +Indirect address 05040H. 1 references: +-------------------------------------- + + 01f37H: LD (05040H),HL + +Indirect address 05047H. 1 references: +-------------------------------------- + + 01f63H: LD (05047H),A + +Indirect address 0504dH. 1 references: +-------------------------------------- + + 01b45H: LD HL,(0504DH) + +Indirect address 0504fH. 2 references: +-------------------------------------- + + 01ab8H: LD HL,(0504FH) + 01d32H: LD HL,(0504FH) + +Indirect address 05051H. 32 references: +--------------------------------------- + + 012c8H: LD (05051H),HL + 0173aH: LD HL,(05051H) + 01792H: LD HL,(05051H) + 017a0H: LD HL,(05051H) + 01b35H: LD HL,(05051H) + 01b5cH: LD (05051H),HL + 01c38H: LD (05051H),HL + 01c7aH: LD (05051H),HL + 01d79H: LD (05051H),HL + 01fbaH: LD (05051H),HL + 01fcaH: LD (05051H),HL + 02908H: LD (05051H),HL + 0295cH: LD (05051H),HL + 0296fH: LD (05051H),HL + 0297aH: LD (05051H),HL + 029deH: LD HL,(05051H) + 02a0eH: LD (05051H),HL + 02ab7H: LD (05051H),HL + 02b23H: LD (05051H),HL + 02b50H: LD (05051H),HL + 02c25H: LD (05051H),HL + 02c65H: LD (05051H),HL + 02cccH: LD HL,(05051H) + 02cd5H: LD (05051H),HL + 02ce0H: LD HL,(05051H) + 02cf0H: LD (05051H),HL + 02d12H: LD (05051H),HL + 02ffeH: LD (05051H),HL + 0300bH: LD (05051H),HL + 03305H: LD (05051H),HL + 03318H: LD (05051H),HL + 033b2H: LD (05051H),HL + +Indirect address 05053H. 2 references: +-------------------------------------- + + 01f72H: LD A,(05053H) + 01fc0H: LD A,(05053H) + +Indirect address 05056H. 2 references: +-------------------------------------- + + 01992H: LD (05056H),A + 01b5fH: LD A,(05056H) + +Indirect address 05057H. 1 references: +-------------------------------------- + + 0141bH: LD HL,(05057H) + +Indirect address 05059H. 4 references: +-------------------------------------- + + 0145fH: LD (05059H),A + 02d1dH: LD A,(05059H) + 02d47H: LD (05059H),A + 02d64H: LD (05059H),A + +Indirect address 0505aH. 3 references: +-------------------------------------- + + 02d24H: LD HL,(0505AH) + 02d38H: LD (0505AH),HL + 02d5fH: LD (0505AH),HL + + +End of reference file for "SA-5510.bin" + diff --git a/software/dis/SA-5510/dz80.ini b/software/dis/SA-5510/dz80.ini new file mode 120000 index 0000000..4617f95 --- /dev/null +++ b/software/dis/SA-5510/dz80.ini @@ -0,0 +1 @@ +SA-5510.ini \ No newline at end of file diff --git a/software/dis/XPATCH/XPATCH-5510.asm b/software/dis/XPATCH/XPATCH-5510.asm new file mode 100644 index 0000000..244cab5 --- /dev/null +++ b/software/dis/XPATCH/XPATCH-5510.asm @@ -0,0 +1,1894 @@ +; Disassembly of the file "XPATCH-5510.bin" +; +; CPU Type: Z80 +; +; Created with dZ80 2.1 +; +; on Sunday, 04 of April 2021 at 03:43 PM +; +PRTC EQU 0FEH +PRTD EQU 0FFH +GETL EQU 00003H +LETNL EQU 00006H +NL EQU 00009H +PRNTS EQU 0000CH +PRNTT EQU 0000FH +PRNT EQU 00012H +MSG EQU 00015H +MSGX EQU 00018H +GETKY EQU 0001BH +BRKEY EQU 0001EH +?WRI EQU 00021H +?WRD EQU 00024H +?RDI EQU 00027H +?RDD EQU 0002AH +?VRFY EQU 0002DH +MELDY EQU 00030H +?TMST EQU 00033H +TIMRD EQU 0003BH +BELL EQU 0003EH +XTEMP EQU 00041H +MSTA EQU 00044H +MSTP EQU 00047H +MONIT EQU 00000H +SS EQU 00089H +ST1 EQU 00095H +HLHEX EQU 00410H +_2HEX EQU 0041FH +?MODE EQU 0074DH +?KEY EQU 008CAH +PRNT3 EQU 0096CH +?ADCN EQU 00BB9H +?DACN EQU 00BCEH +?DSP EQU 00DB5H +?BLNK EQU 00DA6H +?DPCT EQU 00DDCH +PRTHL EQU 003BAH +PRTHX EQU 003C3H +ASC EQU 003DAH +HEX EQU 003F9H +DPCT EQU 00DDCH +DLY12 EQU 00DA7H +DLY12A EQU 00DAAH +?RSTR1 EQU 00EE6H +MOTOR EQU 006A3H +CKSUM EQU 0071AH +GAP EQU 0077AH +WTAPE EQU 00485H +MSTOP EQU 00700H +TAPECOPY EQU 011FDH +COLDSTRT EQU 01200H +WARMSTRTMON EQU 01250H +CMDWORDTBL EQU 015A8H +CMDJMPTBL EQU 01BB2H +CMTBUF EQU 02E33H +CMTFNAME EQU 02E34H +CMDREMDATA EQU 01C3CH +SYNTAXERR EQU 013ABH +CMDREAD EQU 02D12H +CMDLIST EQU 01C4DH +CMDRUN EQU 01E91H +CMDNEW EQU 01C42H +CMDPRINT EQU 02B0DH +CMDLET EQU 01D6AH +CMDFOR EQU 01F2BH +CMDIF EQU 021ADH +CMDTHEN EQU 013ABH +CMDGOTO EQU 01EA6H +CMDGOSUB EQU 01EC7H +CMDRETURN EQU 01EF8H +CMDNEXT EQU 01FC0H +CMDSTOP EQU 01D2CH +CMDEND EQU 01D15H +CMDON EQU 0203EH +CMDLOAD EQU 02D75H +CMDSAVE EQU 02D82H +CMDVERIFY EQU 02EB3H +CMDPOKE EQU 02191H +CMDDIM EQU 02080H +CMDDEFFN EQU 02201H +CMDINPUT EQU 02BFFH +CMDRESTORE EQU 01D4DH +CMDCLS EQU 021A6H +CMDMUSIC EQU 02269H +CMDTEMPO EQU 02282H +CMDUSRN EQU 02942H +CMDWOPEN EQU 02D9FH +CMDROPEN EQU 02D92H +CMDCLOSE EQU 02DADH +CMDMON EQU 028B6H +CMDLIMIT EQU 02967H +CMDCONT EQU 029CEH +CMDGET EQU 02902H +CMDINP EQU 029FEH +CMDOUT EQU 02A1CH +CMDCURSOR EQU 028B9H +CMDSET EQU 02AA6H +CMDRESET EQU 02AAAH +CMDAUTO EQU 02A2FH +CMDCOPY EQU 033ABH +CMDPAGE EQU 032D4H +OVFLERR EQU 013AEH +ILDATERR EQU 013B1H +DATMISERR EQU 013B4H +STRLENERR EQU 013B7H +MEMERR EQU 013BAH +LINELENERR EQU 013C0H +GOSUBERR EQU 013C3H +FORNEXTERR EQU 013C6H +FUNCERR EQU 013C9H +NEXTFORERR EQU 013CCH +RETGOSBERR EQU 013CFH +UNDEFFNERR EQU 013D2H +LINEERR EQU 013D5H +CONTERR EQU 013D8H +BADWRERR EQU 013DBH +CMDSTMTERR EQU 013DEH +READDATAERR EQU 013E1H +OPENERR EQU 013E4H +UNKNWNERR EQU 013E7H +OUTFILEERR EQU 013EAH +PRTNRDYERR EQU 013EDH +PRTHWERR EQU 013F0H +PRTPAPERERR EQU 013F3H +CHKSUMERR EQU 013F6H +TITLEMSG EQU 01347H +COPYRMSG EQU 01364H +READYMSG EQU 01384H +ERRORMSG EQU 0138AH +INMSG EQU 01391H +BREAKMSG EQU 01395H +BYTESMSG EQU 0139CH +ERRCODE EQU 013A3H +MSGNL EQU 01332H +UNUSEDTBL1 EQU 0167BH +UNUSEDTBL2 EQU 0167DH +WARMSTRT EQU 0124EH +OPERATORTBL EQU 0167FH +STRTONUM EQU 017FCH +GETNUM EQU 01E88H +SKIPSPACE EQU 0173FH +INCSKIPSPCE EQU 0173EH +EXECHL EQU 0177BH +EXECNOTCHR EQU 01795H +MATCHCHR EQU 017A3H +LINEBUFR EQU 0490DH +ATRB EQU 010F0H +NAME EQU 010F1H +SIZE EQU 01102H +DTADR EQU 01104H +EXADR EQU 01106H +COMNT EQU 01108H +SWPW EQU 01164H +KDATW EQU 0116EH +KANAF EQU 01170H +DSPXY EQU 01171H +MANG EQU 01173H +MANGE EQU 01179H +PBIAS EQU 0117AH +ROLTOP EQU 0117BH +MGPNT EQU 0117CH +PAGETP EQU 0117DH +ROLEND EQU 0117FH +FLASH EQU 0118EH +SFTLK EQU 0118FH +REVFLG EQU 01190H +SPAGE EQU 01191H +FLSDT EQU 01192H +STRGF EQU 01193H +DPRNT EQU 01194H +TMCNT EQU 01195H +SUMDT EQU 01197H +CSMDT EQU 01199H +AMPM EQU 0119BH +TIMFG EQU 0119CH +SWRK EQU 0119DH +TEMPW EQU 0119EH +ONTYO EQU 0119FH +OCTV EQU 011A0H +RATIO EQU 011A1H +BUFER EQU 011A3H +PRGSTART EQU 0505CH + + ORG PRGSTART + +L505C: NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP + NOP +L506B: NOP + NOP +L506D: LD BC,01B35H + PUSH BC + CALL L5098 + JP Z,L5150 + LD DE,L507D + JP MSGNL + +L507D: DB "RANGE ERROR" + DB 00DH +L5089: DB "OVERFLOW ERROR",00DH +L5098: LD DE,MONIT + LD (05063H),DE + DEC DE + DEC DE + LD (05065H),DE + CALL 017D5H + OR C + INC DE + LD A,02DH + CP (HL) + JR NZ,L50C0 ; (+011H) + LD (05063H),DE + INC HL + CALL 048A0H + CPL + JR Z,L50D2 ; (+018H) + LD (05065H),DE + JR L50D2 ; (+012H) + +L50C0: LD A,E + OR D + JR Z,L50CC ; (+008H) + LD (05063H),DE + LD (05065H),DE +L50CC: LD A,02FH + CP (HL) + JR NZ,L50D2 ; (+001H) + INC HL +L50D2: CALL 048A0H + INC L + JR NZ,L50DB ; (+003H) + LD DE,0000AH +L50DB: LD (05067H),DE + CALL 048A0H + NOP + JR NZ,L50E8 ; (+003H) + LD DE,0000AH +L50E8: LD (05069H),DE + LD (05051H),HL + LD BC,(05063H) + LD HL,(05065H) + OR A + SBC HL,BC +L50F9: JP C,SYNTAXERR + CALL L52BB + JR C,L50F9 ; (-008H) + CALL 01773H + JR Z,L5118 ; (+012H) + EX DE,HL + CALL 01867H + LD HL,(05067H) + EX DE,HL + SBC HL,DE + JR C,L5118 ; (+006H) + CALL L5118 +L5115: XOR A + INC A + RET + +L5118: LD BC,(05065H) + INC BC + CALL L52BB + JR NC,L5136 ; (+014H) + EX DE,HL + CALL 01867H + CALL L526C + EX DE,HL + CCF + JR C,L5149 ; (+01cH) +L512D: LD DE,L5089 + CALL MSG + JP 01438H + +L5136: PUSH DE + CALL 01867H + EX DE,HL + EX (SP),HL + CALL 01867H + CALL L526C + EX DE,HL + POP DE + JR C,L512D ; (-019H) + CALL 01773H +L5149: LD (L506B),HL + JR NC,L5115 ; (-039H) + XOR A + RET + +L5150: CALL 01AF1H + LD HL,(01958H) + PUSH HL + POP DE +L5158: PUSH HL + OR A + SBC HL,DE + JP C,MEMERR + LD BC,00080H + SBC HL,BC + POP HL + JR NC,L517E ; (+017H) + LD BC,00100H + EX DE,HL + CALL 01888H + EX DE,HL + ADD HL,BC + PUSH HL + PUSH DE + CALL 018EAH + LD HL,(04E94H) + ADD HL,BC + LD (04E94H),HL + POP DE + POP HL +L517E: PUSH DE + LD A,(HL) + LDI + OR (HL) + JR Z,L519C ; (+017H) + LDI + LD A,(HL) + LDI + LD B,(HL) + LD C,A + LDI + INC BC + CALL L51D1 + POP HL + LD C,(HL) + LD (HL),E + INC HL + LD B,(HL) + LD (HL),D + PUSH BC + POP HL + JR L5158 ; (-044H) + +L519C: LD (DE),A + INC DE + EX DE,HL + LD (04E4EH),HL + POP HL + CALL 0195AH + LD BC,(05063H) + CALL L52BB + LD BC,(05067H) +L51B1: PUSH HL + CALL 01867H + JR Z,L51CF ; (+018H) + PUSH HL + LD HL,(05065H) + SBC HL,DE + POP HL + JR C,L51CF ; (+00fH) + EX (SP),HL + INC HL + INC HL + LD (HL),C + INC HL + LD (HL),B + LD HL,(05069H) + ADD HL,BC + PUSH HL + POP BC + POP HL + JR L51B1 ; (-01eH) + +L51CF: POP HL + RET + +L51D1: CALL L52D5 + RET Z + CP 080H + JR NZ,L51D1 ; (-008H) + CALL L52D5 + CP 08CH + JR Z,L51EC ; (+00cH) + CP 08DH + JR Z,L51EC ; (+008H) + CP 08EH + JR Z,L51EC ; (+004H) + CP 09CH + JR NZ,L51D1 ; (-01bH) +L51EC: CALL L52D5 + DEC DE + DEC HL + SUB 030H + CP 00AH + JR NC,L51D1 ; (-026H) + CALL L5204 + LD A,02CH + CP (HL) + JR NZ,L51D1 ; (-02eH) + LD (DE),A + INC DE + INC HL + JR L51EC ; (-018H) + +L5204: PUSH DE + PUSH BC + CALL 017F6H + POP BC + CALL L526C + EX (SP),HL + JR NC,L523C ; (+02cH) + PUSH DE + PUSH HL + CALL NL + EX DE,HL + LD DE,L5255 + LD A,00DH + LD (DSPXY),A + CALL L5244 + LD DE,L525C + CALL MSG + XOR A + LD (DSPXY),A + LD D,B + LD E,C + CALL L526C + EX DE,HL + LD DE,L5257 + CALL L5244 + POP HL + LD (HL),070H + INC HL + POP DE +L523C: EX DE,HL + PUSH BC + CALL 01802H + POP BC + POP HL + RET + +L5244: PUSH BC + CALL MSG + LD DE,L505C + PUSH DE + CALL STRTONUM + POP DE + CALL MSG + POP BC + RET + +L5255: DB 03AH + DB 020H +L5257: DB "LINE" + DB 00DH +L525C: DB " DOES NOT EXIST" + DB 00DH +L526C: PUSH BC + PUSH HL + PUSH DE + XOR A + LD B,D + LD C,E + LD HL,(05065H) + SBC HL,DE + JR C,L52AB ; (+032H) + EX DE,HL + LD DE,(05063H) + SBC HL,DE + JR C,L52AB ; (+029H) + LD B,D + LD C,E + CALL L52BB + JR C,L52AB ; (+022H) + POP BC + LD DE,(05067H) + PUSH DE +L528F: CALL 01867H + JR Z,L52A7 ; (+013H) + EX DE,HL + XOR A + SBC HL,BC + JR Z,L52B2 ; (+018H) + JR NC,L52A7 ; (+00bH) + EX DE,HL + EX (SP),HL + LD DE,(05069H) + ADD HL,DE + EX (SP),HL + JR NC,L528F ; (-017H) + CPL +L52A7: OR A + CCF + JR L52AC ; (+001H) + +L52AB: XOR A +L52AC: POP DE +L52AD: LD D,B + LD E,C + POP HL + POP BC + RET + +L52B2: LD H,B + LD L,C + POP BC + SBC HL,BC + SCF + CCF + JR L52AD ; (-00eH) + +L52BB: LD HL,(01958H) + PUSH HL + JR L52C3 ; (+002H) + +L52C1: EX (SP),HL + EX DE,HL +L52C3: PUSH HL + CALL 01867H + JR Z,L52D1 ; (+008H) + EX DE,HL + SBC HL,BC + POP HL + JR C,L52C1 ; (-00eH) + POP DE + RET + +L52D1: POP HL + POP DE + SCF + RET + +L52D5: LD A,(HL) + LD (DE),A + CP 020H + INC HL + INC DE + JR Z,L52D5 ; (-008H) + CP 00DH + RET Z + CP 022H + RET NZ +L52E3: LD A,(HL) + LD (DE),A + INC HL + INC DE + CP 00DH + RET Z + CP 022H + JR NZ,L52E3 ; (-00bH) + OR A + RET + +L52F0: CALL 03327H + LD HL,(04AB3H) + CALL 018B0H + OR C + INC DE + PUSH HL + POP DE +L52FD: PUSH DE + LD A,(HL) + LDI + OR (HL) + JR Z,L532B ; (+027H) + LDI + LD A,(HL) + LDI + LD B,(HL) + LD C,A + LDI + PUSH HL + LD HL,(04AB5H) + OR A + SBC HL,BC + POP HL + JR C,L531C ; (+005H) + CALL L5338 + JR L5323 ; (+007H) + +L531C: LD A,(HL) + LDI + CP 00DH + JR NZ,L531C ; (-007H) +L5323: EX (SP),HL + LD (HL),E + INC HL + LD (HL),D + EX (SP),HL + POP AF + JR L52FD ; (-02eH) + +L532B: LDI + EX DE,HL + LD (04E4EH),HL + POP HL + CALL 0195AH + JP 01B35H + +L5338: PUSH DE +L5339: CALL SKIPSPACE + CALL L52D5 + JR NZ,L5343 ; (+002H) + POP BC + RET + +L5343: CP 080H + JR NZ,L5339 ; (-00eH) + CP (HL) + JR NZ,L5339 ; (-011H) + DEC DE + CALL 0174EH + INC HL + CP 03AH + JR Z,L5339 ; (-01aH) + EX (SP),HL + OR A + SBC HL,DE + POP HL + DEC DE + LD A,00DH + LD (DE),A + INC DE + RET C + DEC DE + DEC DE + DEC DE + DEC DE + RET + +L5363: XOR A + LD (L5465),A + CALL L536D + JP WARMSTRT + +L536D: LD A,(0504EH) + OR A + JP NZ,SYNTAXERR + CALL 0193BH + RET Z + LD DE,LINEBUFR + PUSH DE + CALL 0150AH + POP HL + CALL L546D + LD (L5467),A + LD DE,BUFER + LDIR + LD A,(L5465) + CP 001H + JR NZ,L53B7 ; (+025H) + LD DE,L5446 + CALL LETNL + CALL MSG + LD A,(DPRNT) + PUSH AF + LD DE,LINEBUFR + PUSH DE + CALL GETL + POP HL + XOR A + LD B,A + POP AF + LD C,A + ADD HL,BC + CALL L546D + LD DE,011CCH + LD (L5468),A + LDIR +L53B7: LD A,(L5467) + LD B,A + LD HL,(01958H) +L53BE: PUSH BC + PUSH HL + CALL 01867H + POP HL + JR NZ,L53D3 ; (+00dH) + CALL LETNL + POP BC + XOR A + RET + +L53CC: POP BC + POP DE + LD HL,(04A0EH) + JR L53BE ; (-015H) + +L53D3: CALL 018F2H + LD DE,04A0EH + CALL 018A5H + CALL 014F8H + POP BC + CALL BRKEY + JP Z,WARMSTRT + LD DE,BUFER + LD HL,0490FH +L53EC: LD A,(HL) + CP 020H + INC HL + JR NZ,L53EC ; (-006H) +L53F2: PUSH DE + PUSH BC + DEC HL +L53F5: INC HL + LD A,(HL) + CP 000H + JR Z,L53F5 ; (-006H) + CP 00DH + JR Z,L53CC ; (-033H) + EX DE,HL + CP (HL) + EX DE,HL + JR NZ,L53F5 ; (-00fH) + LD (L5469),HL +L5407: INC DE + DEC B + JR Z,L5423 ; (+018H) + LD A,(DE) + CP 020H + JR Z,L5407 ; (-009H) +L5410: INC HL + LD A,(HL) + CP 020H + JR Z,L5410 ; (-006H) + CP 00DH + JR Z,L53CC ; (-04eH) + EX DE,HL + CP (HL) + EX DE,HL + JR Z,L5407 ; (-018H) + POP BC + POP DE + JR L53F2 ; (-031H) + +L5423: INC HL + LD (L546B),HL + LD DE,LINEBUFR + CALL LETNL + CALL L5589 + POP BC + POP DE + LD A,(L5465) + OR A + RET NZ + CALL L543C + JR L53F2 ; (-04aH) + +L543C: CALL 03302H + CALL BRKEY + JP Z,L57D8 + RET + +L5446: DB " CHANGE TO? " + DB 00DH +L5453: DB "CHANGE IT? (Y/N) " + DB 00DH +L5465: DB 000H +L5466: DB 000H +L5467: DB 001H +L5468: DB 000H +L5469: DB 000H + DB 000H +L546B: DB 000H + DB 000H +L546D: LD A,(HL) + CP 020H + JP C,WARMSTRT + CP 022H + JR NZ,L5478 ; (+001H) + INC HL +L5478: CALL 018FDH + LD A,C + CP 028H + JP NC,ILDATERR + INC C + RET + +L5483: LD A,(HL) + CP 021H + JR NZ,L548A ; (+002H) + INC HL + XOR A +L548A: LD (L5466),A + RET + +L548E: LD A,001H + LD (L5465),A + CALL L5483 + CALL L536D +L5499: JP Z,WARMSTRT + CALL LETNL + LD A,(L5466) + OR A + JR NZ,L54BC ; (+017H) + LD DE,L5453 + CALL L59E3 + JR Z,L54BC ; (+00fH) + LD HL,(L546B) + LD DE,BUFER + LD A,(L5467) + LD B,A + CALL L53F2 + JR L5499 ; (-023H) + +L54BC: CALL 014F8H + LD HL,(L546B) + LD BC,(05469H) + OR A + SBC HL,BC + LD A,(L5468) + CP L + JR Z,L552E ; (+05fH) + JR C,L5517 ; (+046H) + PUSH BC + SUB L + LD C,A + LD B,000H + PUSH BC + LD HL,LINEBUFR + CALL 018FDH + INC C + LD A,C + POP BC + PUSH AF + ADD A,C + LD C,A + CP 050H + JR C,L5501 ; (+01aH) + LD DE,L55B3 + CALL LETNL + CALL MSG + POP AF + POP BC + LD HL,(04A0EH) + LD A,(L5467) + LD B,A + LD C,000H + LD DE,BUFER + JP L5565 + +L5501: LD HL,LINEBUFR + PUSH HL + ADD HL,BC + EX DE,HL + POP HL + POP AF + LD C,A + ADD HL,BC + POP BC + PUSH HL + OR A + SBC HL,BC + LD B,H + LD C,L + POP HL + LDDR + JR L552E ; (+017H) + +L5517: LD H,A + LD A,L + SUB H + LD L,A + LD H,000H + PUSH HL + LD HL,(L546B) + CALL 018FDH + INC C + POP DE + PUSH HL + OR A + SBC HL,DE + EX DE,HL + POP HL + LDIR +L552E: LD HL,011CCH + LD DE,(05469H) + LD A,(L5468) + OR A + JR Z,L5540 ; (+005H) + LD C,A + LD B,000H + LDIR +L5540: CALL 0146AH +L5543: LD HL,(04A10H) + CALL 018B0H + OR C + INC DE + CALL 01302H + CALL 018B3H + LD D,E + LD D,L + LD A,(L5465) + CP 001H + RET NZ + CALL 012F3H + LD DE,LINEBUFR + CALL MSGX + CALL LETNL +L5565: LD BC,L5499 + PUSH BC + LD DE,BUFER + LD HL,(L5469) + LD A,(L5468) + ADD A,L + LD L,A + LD A,(L5467) + LD B,A + LD C,000H + PUSH HL + LD HL,(04A0EH) + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + LD (04A0EH),HL + POP HL + JP L53F2 + +L5589: PUSH DE + LD DE,L55AB + CALL MSG + POP DE + PUSH HL + CALL 00FB1H + CALL MSGX + LD A,(L5469) + ADD A,01BH + LD C,A + LD B,000H + XOR A + ADC HL,BC + LD A,0C2H + LD (HL),A + POP HL + CALL LETNL + RET + +L55AB: LD DE,01211H + LD (DE),A + DEC C + NOP + NOP + NOP +L55B3: DB "LINE IS TOO LONG!",00DH +L55C5: LD A,002H + LD (L5465),A + CALL L5483 + CALL L536D +L55D0: JP Z,WARMSTRT + CALL LETNL + LD A,(L5466) + OR A + JR NZ,L55E9 ; (+00dH) + LD DE,L55F8 + CALL L59E3 + JR Z,L55E9 ; (+005H) + LD HL,(04A0EH) + JR L55EC ; (+003H) + +L55E9: CALL L5543 +L55EC: LD DE,BUFER + LD A,(L5467) + LD B,A + CALL L53BE + JR L55D0 ; (-028H) + +L55F8: DB "DELETE THIS LINE (Y/N)? ",00DH +L5611: NOP +L5612: NOP + NOP + NOP + NOP +L5616: XOR A + LD (L5611),A + CALL EXECNOTCHR + CPL + DEC HL + LD D,(HL) + CALL EXECNOTCHR + LD D,B + XOR E + INC DE + LD A,001H + LD (L5611),A + CALL 03327H + LD HL,(04AB3H) + CALL 018B0H + OR C + INC DE + PUSH HL + CALL 01AF1H + POP HL +L563B: LD A,(HL) + INC HL + OR (HL) + JP Z,L574F + INC HL + LD C,(HL) + INC HL + LD B,(HL) + PUSH HL + OR A + LD HL,(04AB5H) + SBC HL,BC + POP HL + JP C,L574F + PUSH BC + POP IY +L5653: INC HL +L5654: LD A,(HL) + INC HL + CP 020H + JR Z,L5654 ; (-006H) + CP 00DH + JR Z,L563B ; (-023H) + CP 080H + JR C,L5676 ; (+014H) + JR NZ,L5654 ; (-010H) + CP (HL) + JR Z,L566C ; (+005H) + CALL L588A + JR NZ,L5654 ; (-018H) +L566C: CALL 0174EH + INC HL + CP 00DH + JR Z,L563B ; (-039H) + JR L5654 ; (-022H) + +L5676: CP 022H + JR NZ,L5686 ; (+00cH) +L567A: LD A,(HL) + INC HL + CP 00DH + JR Z,L563B ; (-045H) + CP 022H + JR NZ,L567A ; (-00aH) + JR L5654 ; (-032H) + +L5686: DEC HL + CALL 02640H + JR NC,L5653 ; (-039H) + LD A,046H + CP E + JR NZ,L5696 ; (+005H) + LD A,04EH + CP D + JR Z,L5653 ; (-043H) +L5696: LD BC,MONIT + LD A,(HL) + CP 024H + JR NZ,L56A1 ; (+003H) + LD C,006H + INC HL +L56A1: LD (05614H),DE + LD (L5612),HL + LD A,(HL) + CP 028H + JR Z,L56B3 ; (+006H) + LD A,C + ADD A,004H + LD C,A + JR L56CB ; (+018H) + +L56B3: INC HL +L56B4: LD A,(HL) + INC HL + CP 028H + JR NZ,L56C1 ; (+007H) +L56BA: LD A,(HL) + INC HL + CP 029H + JR NZ,L56BA ; (-006H) + LD A,(HL) +L56C1: CP 02CH + JR Z,L56CB ; (+006H) + CP 029H + JR NZ,L56B4 ; (-015H) + INC C + INC C +L56CB: LD HL,04E86H + ADD HL,BC + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + LD DE,(05614H) +L56D7: LD A,(HL) + INC HL + CP E + JR C,L56E6 ; (+00aH) + JR NZ,L56F2 ; (+014H) + LD A,(HL) + CP D + JR C,L56E9 ; (+007H) + JR Z,L5705 ; (+021H) + JR L56F2 ; (+00cH) + +L56E6: OR (HL) + JR Z,L56F2 ; (+009H) +L56E9: INC HL + LD C,(HL) + LD B,000H + INC HL + ADD HL,BC + ADD HL,BC + JR L56D7 ; (-01bH) + +L56F2: DEC HL + EX DE,HL + LD BC,GETL + CALL 019C0H + LD HL,(05614H) + EX DE,HL + LD (HL),E + INC HL + LD (HL),D + INC HL + XOR A + JR L570B ; (+006H) + +L5705: INC HL + LD A,(HL) + CP PRTD + JR Z,L573C ; (+031H) +L570B: INC A + LD (HL),A + PUSH HL + LD B,A +L570F: INC HL + LD E,(HL) + INC HL + LD D,(HL) + PUSH HL + PUSH IY + POP HL + OR A + SBC HL,DE + POP HL + JR C,L5726 ; (+009H) + JR NZ,L5724 ; (+005H) + DEC A + POP HL + LD (HL),A + JR L5736 ; (+012H) + +L5724: DJNZ L570F ; (-017H) +L5726: POP AF + DEC HL + EX DE,HL + LD BC,00002H + CALL 019C0H + EX DE,HL + PUSH IY + POP BC + LD (HL),C + INC HL + LD (HL),B +L5736: LD HL,(L5612) + JP L5654 + +L573C: LD A,E + CALL L57DE + LD A,D + CALL L57DE + LD DE,L5807 + CALL L57FC + CALL L57ED + JR L5736 ; (-019H) + +L574F: LD IX,04E84H +L5753: CALL L57FC + INC IX + INC IX + PUSH IX + POP HL + LD A,L + CP 092H + JR NC,L57D8 ; (+076H) + SUB 086H + LD B,000H + LD C,A + RLC C + RLC C + LD HL,L5820 + CP 005H + JR C,L5775 ; (+003H) + LD HL,L5807 +L5775: ADD HL,BC + PUSH HL + POP IY + LD L,(IX+000H) + LD H,(IX+001H) +L577F: PUSH IY + POP DE + LD A,(HL) + LD B,A + INC HL + OR (HL) + JR Z,L5753 ; (-035H) + LD A,B + CALL L57DE + LD A,(HL) + CP 020H + JR Z,L5799 ; (+008H) + CALL L57DE + CALL L57ED + JR L57A1 ; (+008H) + +L5799: CALL L57ED + LD A,020H + CALL L57DE +L57A1: LD A,(DE) + CP 024H + LD A,020H + CALL NZ,L57DE + INC HL + LD B,(HL) + INC HL +L57AC: PUSH BC + LD E,(HL) + INC HL + LD D,(HL) + INC HL + PUSH HL + EX DE,HL + LD DE,LINEBUFR + PUSH DE + CALL STRTONUM + LD C,020H + EX DE,HL +L57BD: LD A,L + CP 015H + JR NC,L57C6 ; (+004H) + LD (HL),C + INC HL + JR L57BD ; (-009H) + +L57C6: LD (HL),00DH + POP DE + CALL L57ED + POP HL + CALL L543C + POP BC + DJNZ L57AC ; (-027H) + CALL L57FC + JR L577F ; (-059H) + +L57D8: CALL 01AF1H + JP WARMSTRT + +L57DE: PUSH BC + LD B,A + CALL PRNT + LD A,(L5611) + OR A + LD A,B + POP BC + RET Z + JP 03291H + +L57ED: PUSH BC + LD B,A + CALL MSG + LD A,(L5611) + OR A + LD A,B + POP BC + RET Z + JP 031B4H + +L57FC: CALL LETNL + LD A,(L5611) + OR A + RET Z + JP 031A7H + +L5807: DB " HAS MORE THAN 255 REFS" + DB 00DH + DB 024H +L5820: DB 028H + DB 02CH + DB 029H + DB 020H + DB 00DH + DB 00DH + DB 00DH + DB "$() " + DB 00DH + DB 00DH + DB 00DH + DB "$ " + DB 00DH + DB 00DH + DB 00DH + DB 000H +L5838: CALL 014C7H + JP Z,01497H + LD B,0B8H + LD DE,L585D + CALL 014C9H + JP 01495H + +L5849: LD A,B + CP 039H + JR NC,L5854 ; (+006H) + LD HL,CMDWORDTBL + JP 01541H + +L5854: SUB 038H + LD B,A + LD HL,L585D + JP 01541H + +L585D: DB "RENU" + DB 0CDH + DB "APPEN" + DB 0C4H + DB "COMPRES" + DB 0D3H + DB "DELET" + DB 0C5H + DB "FIN" + DB 0C4H + DB "CHANG" + DB 0C5H + DB "SDE" + DB 0CCH + DB "XRE" + DB 0C6H + DB 000H + DB 000H +L588A: LD A,(HL) + CP 081H + RET Z + RET C + CALL INCSKIPSPCE + CP 02FH + RET NZ + INC HL + INC HL + OR A + RET + +L5899: CALL LETNL + CALL LETNL + LD DE,L58A5 + JP 01329H + +L58A5: LD B,L + LD E,B + LD D,B + LD B,C + LD C,(HL) + LD B,H + LD B,L + LD B,H + JR NZ,L58F1 ; (+042H) + LD B,C + LD D,E + LD C,C + LD B,E + JR NZ,L58EA ; (+035H) + DEC (HL) + LD SP,02035H + DEC L + JR NZ,L5905 ; (+049H) + LD C,(HL) + LD B,E + LD C,H + LD D,L + LD B,H + LD B,L + LD D,E + LD A,(0430DH) + OR A + SBC A,(HL) + CP L + SBC A,L + AND (HL) + SUB A + SBC A,B + SUB (HL) + JR NZ,L5913 ; (+043H) + LD L,044H + LD L,020H + LD C,B + SUB D + AND C + SBC A,L + OR B + JR NZ,L590C ; (+031H) + ADD HL,SP + JR C,L5915 ; (+037H) + JR NZ,L58ED ; (+00dH) +L58E0: CALL 03296H + LD A,00AH + CALL 03296H + LD A,00DH +L58EA: RET + +L58EB: CALL SKIPSPACE + CP 030H + JR NZ,L58F6 ; (+004H) + LD A,0C3H + JR L58FD ; (+007H) + +L58F6: CP 031H + JP NZ,SYNTAXERR + LD A,0CDH +L58FD: LD (L58E0),A + INC HL +L5901: LD (05051H),HL +L5904: JP 01B35H + +L5907: LD A,0C6H + CALL ?DPCT +L590C: JR L5901 ; (-00dH) + +L590E: XOR A + LD (L5466),A + CALL L5098 +L5915: JR NZ,L591C ; (+005H) + CALL L5150 + JR L5904 ; (-018H) + +L591C: LD BC,(05063H) + CALL L52BB + JR Z,L5935 ; (+010H) + PUSH HL + LD BC,(05065H) + INC BC + CALL L52BB + POP DE + OR A + SBC HL,DE + JP Z,WARMSTRT +L5935: LD HL,(01958H) + JR L593C ; (+002H) + +L593A: POP HL + POP AF +L593C: PUSH HL + CALL 01867H + JR Z,L5989 ; (+047H) + PUSH HL + LD HL,(L506B) + SBC HL,DE + JR C,L593A ; (-010H) + LD HL,(05067H) + PUSH DE + EX DE,HL + SBC HL,DE + POP DE + JR C,L593A ; (-01aH) + LD HL,(05065H) + SBC HL,DE + JR C,L5963 ; (+008H) + LD HL,(05063H) + EX DE,HL + SBC HL,DE + JR NC,L593A ; (-029H) +L5963: LD A,(L5466) + OR A + JR NZ,L597B ; (+012H) + LD DE,L59C7 + CALL L59E0 + JR Z,L5976 ; (+005H) + POP HL + POP DE + JP 01B35H + +L5976: LD A,001H + LD (L5466),A +L597B: POP HL + POP DE + OR A + SBC HL,DE + LD B,H + LD C,L + PUSH DE + CALL 01306H + POP HL + JR L593C ; (-04dH) + +L5989: CALL L5150 +L598C: LD HL,(01958H) + CALL 01867H + JR Z,L59C4 ; (+030H) + PUSH DE + POP BC +L5996: PUSH HL + CALL 01867H + JR Z,L59C4 ; (+028H) + LD A,B + SUB D + JR NZ,L59A2 ; (+002H) + LD A,C + SUB E +L59A2: LD C,E + LD B,D + POP DE + JR C,L5996 ; (-011H) + PUSH BC + SBC HL,DE + LD B,H + LD C,L + LD HL,04A0EH + EX DE,HL + PUSH HL + PUSH BC + LDIR + POP BC + POP DE + CALL 01306H + POP HL + CALL 018B0H + CP A + LD E,C + CALL 012F3H + JR L598C ; (-038H) + +L59C4: JP WARMSTRT + +L59C7: DB "OK TO DELETE DUP LINES? " + DB 00DH +L59E0: CALL LETNL +L59E3: CALL MSG +L59E6: CALL BRKEY + JP Z,01438H + CALL 009B3H + CALL ?DACN + CALL 02305H + CP 059H + JR Z,L59FE ; (+005H) + CP 04EH + JR NZ,L59E6 ; (-017H) + OR A +L59FE: PUSH AF + CALL LETNL + POP AF + RET + +L5A04: DW L58EB + DW CMDAUTO + DW L5907 + DW L590E + DW CMDCOPY + DW CMDPAGE + DW L506D + DW 04806H + DW L52F0 + DW 0488EH + DW L5363 + DW L548E + DW L55C5 + DW L5616 +L5A20: DB "LIN" + DB 0C5H + DB "AUT" + DB 0CFH + DB "CL" + DB 0D3H + DB "MOV" + DB 0C5H + DB "COPY/" + DB 0D0H + DB "PAGE/" + DB 0D0H + DB 000H +L5A3C: CP 091H + RET C + CP 0BEH + RET NC + CALL ?ADCN + CP 081H + JR C,L5A4F ; (+006H) + CP 09BH + JR NC,L5A4F ; (+002H) + SUB 080H +L5A4F: JP ?DACN + +L5A52: DB "XP BASIC SA-551" +L5A61: DB 035H + DB 00DH +XPINIT: LD HL,L5A04 + LD DE,01C16H + LD BC,0001CH + LDIR + LD HL,L5A3C + PUSH HL + LD DE,L5A20 + SBC HL,DE + PUSH HL + POP BC + EX DE,HL + LD DE,0165EH + LDIR + POP HL + LD DE,02305H + LD BC,00016H + LDIR + LD HL,03338H + LD (022C9H),HL + LD HL,03302H + LD (01CCDH),HL + LD HL,MONIT + LD (01CCFH),HL + LD (01CD1H),HL + LD HL,03311H + LD (02B11H),HL + LD HL,048C1H + LD (0307BH),HL + LD (0318CH),HL + LD (03199H),HL + LD HL,02F6CH + LD (0315BH),HL + LD A,0CDH + LD (03140H),A + LD HL,0330BH + LD (03141H),HL + LD A,0C3H + LD HL,L5849 + LD (0153EH),A + LD (0153FH),HL + LD HL,L5838 + LD (01492H),A + LD (01493H),HL + LD A,(0322EH) + CP 0C3H + JR NZ,L5AF2 ; (+017H) + LD (031ADH),A + LD HL,L58E0 + LD (031AEH),HL + LD A,036H + JR L5AF4 ; (+00cH) + + LD A,0ABH + LD (01C16H),A + LD A,013H + LD (01C17H),A +L5AF2: LD A,035H +L5AF4: LD HL,L58B7 + LD (HL),A + LD HL,L5A61 + LD (HL),A + XOR A + LD (041ECH),A + LD HL,L5A52 + LD DE,04224H + LD BC,00011H + LDIR + LD HL,L5A04 + LD (01958H),HL + LD (018B4H),HL + LD (01AC8H),HL + LD (01AE2H),HL + LD (01B14H),HL + LD (01B1CH),HL + LD (01C7EH),HL + LD (01EC2H),HL + LD (02D44H),HL + LD (02F24H),HL + LD (0303CH),HL + LD (03042H),HL + INC HL + LD (01201H),HL + LD (041FFH),HL + LD HL,L5899 + LD (01225H),HL + LD HL,RELOC3302 + LD DE,03302H + LD BC,0005BH + LDIR + LD DE,04806H + LD BC,000F8H + LDIR + JP COLDSTRT + +RELOC3302: CALL GETKY ; Relocated to 0x3302 for 0x5B bytes. + CP 020H + JP Z,009B3H + RET + + LD HL,ATRB + JP 02F67H + + CALL EXECNOTCHR + LD B,B + JR L5B95 ; (+02bH) + + LD A,0C9H + LD (028F5H),A + CALL CMDCURSOR + LD A,0C3H + LD (028F5H),A + JP 02B18H + + LD A,0C9H + LD (01C7DH),A + CALL 01C68H + LD A,021H + LD (01C7DH),A + RET + + NOP + NOP + NOP + LD A,B + OR C + RET Z + LD A,B + SUB C + JR NC,L5B93 ; (+001H) + XOR A +L5B93: ADD A,C + LD B,A +L5B95: LD A,(DE) + CALL 02305H + LD C,A + PUSH AF + LD A,(HL) + CALL 02305H + LD C,A + POP AF + OR A + SUB C + JR NZ,L5BAA ; (+005H) + INC DE + INC HL + DJNZ L5B95 ; (-014H) + RET + +L5BAA: LD A,001H + RET NC + LD A,080H + RET + +RELOC4806: CALL 048EEH ; Relocated to 0x4806 for 0xF8 bytes. + LD HL,0FFFFH + CALL 018B0H + LD DE,0E548H + EX DE,HL + LD BC,(SIZE) + DEC BC + DEC BC + CALL 01888H + CALL 019C3H + LD (DTADR),DE + CALL 02F6CH + CALL ?RDD + JR C,L5BFB ; (+026H) + POP HL + CALL 01ACAH + LD HL,(DTADR) + PUSH HL + INC HL + INC HL + LD A,(HL) + INC HL + LD H,(HL) + LD L,A + CALL 018B0H + LD A,048H + POP BC + OR A + SBC HL,BC + JP NC,01B35H + LD DE,(DTADR) + CALL 0485EH + LD A,047H + JP 01403H + +L5BFB: POP DE + PUSH DE + CALL 0485EH + POP HL + XOR A + LD (HL),A + INC HL + LD (HL),A + JP CHKSUMERR + + LD BC,(SIZE) + DEC BC + DEC BC + JP 02F59H + + CALL 03327H + LD HL,(04AB5H) + LD A,H + AND L + CP PRTD + JP Z,ILDATERR + PUSH HL + LD HL,(04AB3H) + LD A,H + OR L + JP Z,ILDATERR + CALL 018B0H + OR C + INC DE + EX (SP),HL + INC HL + CALL 018B0H + ADC A,C + LD C,B + POP DE + OR A + SBC HL,DE + RET + + CALL 04867H + JR Z,L5C44 ; (+007H) + JR C,L5C47 ; (+008H) + PUSH HL + POP BC + CALL 01306H +L5C44: JP 01B35H + +L5C47: JP OVFLERR + + PUSH BC + CALL 017F6H + POP BC + LD A,E + OR D + EX (SP),HL + LD A,(HL) + INC HL + EX (SP),HL + PUSH AF + CP (HL) + JR Z,L5C66 ; (+00dH) + LD A,00DH + CP (HL) + JR Z,L5C63 ; (+005H) + LD A,03AH + CP (HL) + JR NZ,L5C47 ; (-01cH) +L5C63: POP AF + SCF + RET + +L5C66: CALL INCSKIPSPCE + POP AF + RET + + DI + PUSH DE + PUSH BC + PUSH HL + LD DE,0D753H + LD BC,(SIZE) + LD HL,(DTADR) + LD A,B + OR C + JP Z,004CBH + CALL CKSUM + CALL MOTOR + JP C,00552H + CALL 048E3H + JP 00461H + + PUSH BC + PUSH DE + LD BC,00200H + LD DE,01414H + JP 0078EH + + LD A,0C9H + LD (02F19H),A + CALL 02EDAH + LD A,0CDH + LD (02F19H),A + JP 01AF1H + + NOP ; End of Relocated code. + NOP + NOP + NOP + NOP diff --git a/software/dis/XPATCH/XPATCH-5510.ref b/software/dis/XPATCH/XPATCH-5510.ref new file mode 100644 index 0000000..b10ee48 --- /dev/null +++ b/software/dis/XPATCH/XPATCH-5510.ref @@ -0,0 +1,875 @@ +dZ80 2.1 Reference file from the disassembly of "XPATCH-5510.bin". + +Direct address Reference (127 entries) +-------------------------------------- + +Direct address 00000H. 3 references: +------------------------------------ + + 05098H: LD DE,00000H + 05696H: LD BC,00000H + 05a94H: LD HL,00000H + +Direct address 00002H. 1 references: +------------------------------------ + + 05729H: LD BC,00002H + +Direct address 00003H. 1 references: +------------------------------------ + + 056f4H: LD BC,00003H + +Direct address 0000aH. 2 references: +------------------------------------ + + 050d8H: LD DE,0000AH + 050e5H: LD DE,0000AH + +Direct address 00011H. 1 references: +------------------------------------ + + 05b06H: LD BC,00011H + +Direct address 00016H. 1 references: +------------------------------------ + + 05a83H: LD BC,00016H + +Direct address 0001cH. 1 references: +------------------------------------ + + 05a69H: LD BC,0001CH + +Direct address 0005bH. 1 references: +------------------------------------ + + 05b45H: LD BC,0005BH + +Direct address 00080H. 1 references: +------------------------------------ + + 0515fH: LD BC,00080H + +Direct address 000f8H. 1 references: +------------------------------------ + + 05b4dH: LD BC,000F8H + +Direct address 00100H. 1 references: +------------------------------------ + + 05167H: LD BC,00100H + +Direct address 00200H. 1 references: +------------------------------------ + + 05c8fH: LD BC,00200H + +Direct address ATRB. 1 references: +---------------------------------- + + 05b5eH: LD HL,010F0H + +Direct address SIZE. 3 references: +---------------------------------- + + 05bbdH: LD BC,(01102H) + 05c08H: LD BC,(01102H) + 05c72H: LD BC,(01102H) + +Direct address DTADR. 2 references: +----------------------------------- + + 05bc9H: LD (01104H),DE + 05befH: LD DE,(01104H) + +Direct address BUFER. 6 references: +----------------------------------- + + 05386H: LD DE,011A3H + 053e6H: LD DE,011A3H + 054b0H: LD DE,011A3H + 054fbH: LD DE,011A3H + 05569H: LD DE,011A3H + 055ecH: LD DE,011A3H + +Direct address 011ccH. 2 references: +------------------------------------ + + 053afH: LD DE,011CCH + 0552eH: LD HL,011CCH + +Direct address 01211H. 1 references: +------------------------------------ + + 055abH: LD DE,01211H + +Direct address 01414H. 1 references: +------------------------------------ + + 05c92H: LD DE,01414H + +Direct address 015a8H. 1 references: +------------------------------------ + + 0584eH: LD HL,015A8H + +Direct address 0165eH. 1 references: +------------------------------------ + + 05a7aH: LD DE,0165EH + +Direct address 01b35H. 1 references: +------------------------------------ + + 0506dH: LD BC,01B35H + +Direct address 01c16H. 1 references: +------------------------------------ + + 05a66H: LD DE,01C16H + +Direct address 02035H. 1 references: +------------------------------------ + + 058b6H: LD SP,02035H + +Direct address 02305H. 1 references: +------------------------------------ + + 05a80H: LD DE,02305H + +Direct address 02a2fH. 1 references: +------------------------------------ + + 05a06H: CPL + +Direct address 02f6cH. 1 references: +------------------------------------ + + 05aafH: LD HL,02F6CH + +Direct address 032d4H. 1 references: +------------------------------------ + + 05a0eH: CALL NC,06D32H + +Direct address 03302H. 2 references: +------------------------------------ + + 05a8eH: LD HL,03302H + 05b42H: LD DE,03302H + +Direct address 0330bH. 1 references: +------------------------------------ + + 05abaH: LD HL,0330BH + +Direct address 03311H. 1 references: +------------------------------------ + + 05a9dH: LD HL,03311H + +Direct address 03338H. 1 references: +------------------------------------ + + 05a88H: LD HL,03338H + +Direct address 033abH. 1 references: +------------------------------------ + + 05a0cH: XOR E + +Direct address 04224H. 1 references: +------------------------------------ + + 05b03H: LD DE,04224H + +Direct address 04806H. 2 references: +------------------------------------ + + 05a12H: LD B,048H + 05b4aH: LD DE,04806H + +Direct address 0488eH. 1 references: +------------------------------------ + + 05a16H: ADC A,(HL) + +Direct address 048c1H. 1 references: +------------------------------------ + + 05aa3H: LD HL,048C1H + +Direct address LINEBUFR. 7 references: +-------------------------------------- + + 05378H: LD DE,0490DH + 0539fH: LD DE,0490DH + 05427H: LD DE,0490DH + 054d7H: LD HL,0490DH + 05501H: LD HL,0490DH + 0555cH: LD DE,0490DH + 057b3H: LD DE,0490DH + +Direct address 0490fH. 1 references: +------------------------------------ + + 053e9H: LD HL,0490FH + +Direct address 04a0eH. 2 references: +------------------------------------ + + 053d6H: LD DE,04A0EH + 059acH: LD HL,04A0EH + +Direct address 04e84H. 1 references: +------------------------------------ + + 0574fH: LD IX,04E84H + +Direct address 04e86H. 1 references: +------------------------------------ + + 056cbH: LD HL,04E86H + +Direct address 0505cH. 1 references: +------------------------------------ + + 05248H: LD DE,0505CH + +Direct address 05063H. 7 references: +------------------------------------ + + 0509bH: LD (05063H),DE + 050afH: LD (05063H),DE + 050c4H: LD (05063H),DE + 050efH: LD BC,(05063H) + 051a6H: LD BC,(05063H) + 0527aH: LD DE,(05063H) + 0591cH: LD BC,(05063H) + +Direct address 05065H. 5 references: +------------------------------------ + + 050a1H: LD (05065H),DE + 050baH: LD (05065H),DE + 050c8H: LD (05065H),DE + 05118H: LD BC,(05065H) + 05926H: LD BC,(05065H) + +Direct address 05067H. 3 references: +------------------------------------ + + 050dbH: LD (05067H),DE + 051adH: LD BC,(05067H) + 0528aH: LD DE,(05067H) + +Direct address 05069H. 2 references: +------------------------------------ + + 050e8H: LD (05069H),DE + 0529eH: LD DE,(05069H) + +Direct address 0506dH. 1 references: +------------------------------------ + + 05a10H: LD L,L + +Direct address 0507dH. 1 references: +------------------------------------ + + 05077H: LD DE,0507DH + +Direct address 05089H. 1 references: +------------------------------------ + + 0512dH: LD DE,05089H + +Direct address 05255H. 1 references: +------------------------------------ + + 05216H: LD DE,05255H + +Direct address 05257H. 1 references: +------------------------------------ + + 05231H: LD DE,05257H + +Direct address 0525cH. 1 references: +------------------------------------ + + 05221H: LD DE,0525CH + +Direct address 052f0H. 1 references: +------------------------------------ + + 05a14H: RET P + +Direct address 05363H. 1 references: +------------------------------------ + + 05a18H: LD H,E + +Direct address 05446H. 1 references: +------------------------------------ + + 05392H: LD DE,05446H + +Direct address 05453H. 1 references: +------------------------------------ + + 054a5H: LD DE,05453H + +Direct address 05469H. 2 references: +------------------------------------ + + 054c2H: LD BC,(05469H) + 05531H: LD DE,(05469H) + +Direct address 0548eH. 1 references: +------------------------------------ + + 05a1aH: ADC A,(HL) + +Direct address 05499H. 1 references: +------------------------------------ + + 05565H: LD BC,05499H + +Direct address 055abH. 1 references: +------------------------------------ + + 0558aH: LD DE,055ABH + +Direct address 055b3H. 1 references: +------------------------------------ + + 054e7H: LD DE,055B3H + +Direct address 055c5H. 1 references: +------------------------------------ + + 05a1cH: PUSH BC + +Direct address 055f8H. 1 references: +------------------------------------ + + 055dcH: LD DE,055F8H + +Direct address 05614H. 2 references: +------------------------------------ + + 056a1H: LD (05614H),DE + 056d3H: LD DE,(05614H) + +Direct address 05616H. 1 references: +------------------------------------ + + 05a1eH: LD D,056H + +Direct address 05807H. 2 references: +------------------------------------ + + 05744H: LD DE,05807H + 05772H: LD HL,05807H + +Direct address 05820H. 1 references: +------------------------------------ + + 0576bH: LD HL,05820H + +Direct address 05838H. 1 references: +------------------------------------ + + 05acbH: LD HL,05838H + +Direct address 05849H. 1 references: +------------------------------------ + + 05ac2H: LD HL,05849H + +Direct address 0585dH. 2 references: +------------------------------------ + + 05840H: LD DE,0585DH + 05857H: LD HL,0585DH + +Direct address 05899H. 1 references: +------------------------------------ + + 05b39H: LD HL,05899H + +Direct address 058a5H. 1 references: +------------------------------------ + + 0589fH: LD DE,058A5H + +Direct address 058b7H. 1 references: +------------------------------------ + + 05af4H: LD HL,058B7H + +Direct address 058e0H. 1 references: +------------------------------------ + + 05adeH: LD HL,058E0H + +Direct address 058ebH. 1 references: +------------------------------------ + + 05a04H: EX DE,HL + +Direct address 05907H. 1 references: +------------------------------------ + + 05a08H: RLCA + +Direct address 0590eH. 1 references: +------------------------------------ + + 05a0aH: LD C,059H + +Direct address 059c7H. 1 references: +------------------------------------ + + 05969H: LD DE,059C7H + +Direct address 05a04H. 2 references: +------------------------------------ + + 05a63H: LD HL,05A04H + 05b0bH: LD HL,05A04H + +Direct address 05a20H. 1 references: +------------------------------------ + + 05a72H: LD DE,05A20H + +Direct address 05a3cH. 1 references: +------------------------------------ + + 05a6eH: LD HL,05A3CH + +Direct address 05a52H. 1 references: +------------------------------------ + + 05b00H: LD HL,05A52H + +Direct address 05a61H. 1 references: +------------------------------------ + + 05af8H: LD HL,05A61H + +Direct address 05b55H. 1 references: +------------------------------------ + + 05b3fH: LD HL,05B55H + +Direct address 0d753H. 1 references: +------------------------------------ + + 05c6fH: LD DE,0D753H + +Direct address 0e548H. 1 references: +------------------------------------ + + 05bb9H: LD DE,0E548H + +Direct address 0ffffH. 1 references: +------------------------------------ + + 05bb3H: LD HL,0FFFFH + + +Indirect address Reference (120 entries) +---------------------------------------- + +Indirect address DTADR. 2 references: +------------------------------------- + + 05bd9H: LD HL,(01104H) + 05c76H: LD HL,(01104H) + +Indirect address DSPXY. 2 references: +------------------------------------- + + 0521bH: LD (01171H),A + 05228H: LD (01171H),A + +Indirect address DPRNT. 1 references: +------------------------------------- + + 0539bH: LD A,(01194H) + +Indirect address 01201H. 1 references: +-------------------------------------- + + 05b33H: LD (01201H),HL + +Indirect address 01225H. 1 references: +-------------------------------------- + + 05b3cH: LD (01225H),HL + +Indirect address 01492H. 1 references: +-------------------------------------- + + 05aceH: LD (01492H),A + +Indirect address 01493H. 1 references: +-------------------------------------- + + 05ad1H: LD (01493H),HL + +Indirect address 0153eH. 1 references: +-------------------------------------- + + 05ac5H: LD (0153EH),A + +Indirect address 0153fH. 1 references: +-------------------------------------- + + 05ac8H: LD (0153FH),HL + +Indirect address 018b4H. 1 references: +-------------------------------------- + + 05b11H: LD (018B4H),HL + +Indirect address 01958H. 6 references: +-------------------------------------- + + 05153H: LD HL,(01958H) + 052bbH: LD HL,(01958H) + 053bbH: LD HL,(01958H) + 05935H: LD HL,(01958H) + 0598cH: LD HL,(01958H) + 05b0eH: LD (01958H),HL + +Indirect address 01ac8H. 1 references: +-------------------------------------- + + 05b14H: LD (01AC8H),HL + +Indirect address 01ae2H. 1 references: +-------------------------------------- + + 05b17H: LD (01AE2H),HL + +Indirect address 01b14H. 1 references: +-------------------------------------- + + 05b1aH: LD (01B14H),HL + +Indirect address 01b1cH. 1 references: +-------------------------------------- + + 05b1dH: LD (01B1CH),HL + +Indirect address 01c16H. 1 references: +-------------------------------------- + + 05aeaH: LD (01C16H),A + +Indirect address 01c17H. 1 references: +-------------------------------------- + + 05aefH: LD (01C17H),A + +Indirect address 01c7dH. 2 references: +-------------------------------------- + + 05b7cH: LD (01C7DH),A + 05b84H: LD (01C7DH),A + +Indirect address 01c7eH. 1 references: +-------------------------------------- + + 05b20H: LD (01C7EH),HL + +Indirect address 01ccdH. 1 references: +-------------------------------------- + + 05a91H: LD (01CCDH),HL + +Indirect address 01ccfH. 1 references: +-------------------------------------- + + 05a97H: LD (01CCFH),HL + +Indirect address 01cd1H. 1 references: +-------------------------------------- + + 05a9aH: LD (01CD1H),HL + +Indirect address 01ec2H. 1 references: +-------------------------------------- + + 05b23H: LD (01EC2H),HL + +Indirect address 022c9H. 1 references: +-------------------------------------- + + 05a8bH: LD (022C9H),HL + +Indirect address 028f5H. 2 references: +-------------------------------------- + + 05b6cH: LD (028F5H),A + 05b74H: LD (028F5H),A + +Indirect address 02b11H. 1 references: +-------------------------------------- + + 05aa0H: LD (02B11H),HL + +Indirect address 02d44H. 1 references: +-------------------------------------- + + 05b26H: LD (02D44H),HL + +Indirect address 02f19H. 2 references: +-------------------------------------- + + 05c9aH: LD (02F19H),A + 05ca2H: LD (02F19H),A + +Indirect address 02f24H. 1 references: +-------------------------------------- + + 05b29H: LD (02F24H),HL + +Indirect address 0303cH. 1 references: +-------------------------------------- + + 05b2cH: LD (0303CH),HL + +Indirect address 03042H. 1 references: +-------------------------------------- + + 05b2fH: LD (03042H),HL + +Indirect address 0307bH. 1 references: +-------------------------------------- + + 05aa6H: LD (0307BH),HL + +Indirect address 03140H. 1 references: +-------------------------------------- + + 05ab7H: LD (03140H),A + +Indirect address 03141H. 1 references: +-------------------------------------- + + 05abdH: LD (03141H),HL + +Indirect address 0315bH. 1 references: +-------------------------------------- + + 05ab2H: LD (0315BH),HL + +Indirect address 0318cH. 1 references: +-------------------------------------- + + 05aa9H: LD (0318CH),HL + +Indirect address 03199H. 1 references: +-------------------------------------- + + 05aacH: LD (03199H),HL + +Indirect address 031adH. 1 references: +-------------------------------------- + + 05adbH: LD (031ADH),A + +Indirect address 031aeH. 1 references: +-------------------------------------- + + 05ae1H: LD (031AEH),HL + +Indirect address 0322eH. 1 references: +-------------------------------------- + + 05ad4H: LD A,(0322EH) + +Indirect address 041ecH. 1 references: +-------------------------------------- + + 05afdH: LD (041ECH),A + +Indirect address 041ffH. 1 references: +-------------------------------------- + + 05b36H: LD (041FFH),HL + +Indirect address 0430dH. 1 references: +-------------------------------------- + + 058c3H: LD A,(0430DH) + +Indirect address 04a0eH. 5 references: +-------------------------------------- + + 053ceH: LD HL,(04A0EH) + 054f2H: LD HL,(04A0EH) + 0557bH: LD HL,(04A0EH) + 05582H: LD (04A0EH),HL + 055e4H: LD HL,(04A0EH) + +Indirect address 04a10H. 1 references: +-------------------------------------- + + 05543H: LD HL,(04A10H) + +Indirect address 04ab3H. 3 references: +-------------------------------------- + + 052f3H: LD HL,(04AB3H) + 0562eH: LD HL,(04AB3H) + 05c1fH: LD HL,(04AB3H) + +Indirect address 04ab5H. 3 references: +-------------------------------------- + + 0530eH: LD HL,(04AB5H) + 05647H: LD HL,(04AB5H) + 05c14H: LD HL,(04AB5H) + +Indirect address 04e4eH. 2 references: +-------------------------------------- + + 0519fH: LD (04E4EH),HL + 0532eH: LD (04E4EH),HL + +Indirect address 04e94H. 2 references: +-------------------------------------- + + 05175H: LD HL,(04E94H) + 05179H: LD (04E94H),HL + +Indirect address 0504eH. 1 references: +-------------------------------------- + + 0536dH: LD A,(0504EH) + +Indirect address 05051H. 2 references: +-------------------------------------- + + 050ecH: LD (05051H),HL + 05901H: LD (05051H),HL + +Indirect address 05063H. 1 references: +-------------------------------------- + + 0595bH: LD HL,(05063H) + +Indirect address 05065H. 4 references: +-------------------------------------- + + 050f3H: LD HL,(05065H) + 051b8H: LD HL,(05065H) + 05272H: LD HL,(05065H) + 05954H: LD HL,(05065H) + +Indirect address 05067H. 2 references: +-------------------------------------- + + 0510aH: LD HL,(05067H) + 0594aH: LD HL,(05067H) + +Indirect address 05069H. 1 references: +-------------------------------------- + + 051c6H: LD HL,(05069H) + +Indirect address 0506bH. 2 references: +-------------------------------------- + + 05149H: LD (0506BH),HL + 05943H: LD HL,(0506BH) + +Indirect address 05465H. 6 references: +-------------------------------------- + + 05364H: LD (05465H),A + 0538bH: LD A,(05465H) + 05432H: LD A,(05465H) + 05490H: LD (05465H),A + 05553H: LD A,(05465H) + 055c7H: LD (05465H),A + +Indirect address 05466H. 6 references: +-------------------------------------- + + 0548aH: LD (05466H),A + 0549fH: LD A,(05466H) + 055d6H: LD A,(05466H) + 0590fH: LD (05466H),A + 05963H: LD A,(05466H) + 05978H: LD (05466H),A + +Indirect address 05467H. 6 references: +-------------------------------------- + + 05383H: LD (05467H),A + 053b7H: LD A,(05467H) + 054b3H: LD A,(05467H) + 054f5H: LD A,(05467H) + 05574H: LD A,(05467H) + 055efH: LD A,(05467H) + +Indirect address 05468H. 4 references: +-------------------------------------- + + 053b2H: LD (05468H),A + 054c9H: LD A,(05468H) + 05535H: LD A,(05468H) + 0556fH: LD A,(05468H) + +Indirect address 05469H. 3 references: +-------------------------------------- + + 05404H: LD (05469H),HL + 0556cH: LD HL,(05469H) + 05598H: LD A,(05469H) + +Indirect address 0546bH. 4 references: +-------------------------------------- + + 05424H: LD (0546BH),HL + 054adH: LD HL,(0546BH) + 054bfH: LD HL,(0546BH) + 0551eH: LD HL,(0546BH) + +Indirect address 05611H. 5 references: +-------------------------------------- + + 05617H: LD (05611H),A + 05628H: LD (05611H),A + 057e3H: LD A,(05611H) + 057f2H: LD A,(05611H) + 057ffH: LD A,(05611H) + +Indirect address 05612H. 2 references: +-------------------------------------- + + 056a5H: LD (05612H),HL + 05736H: LD HL,(05612H) + +Indirect address 05614H. 1 references: +-------------------------------------- + + 056faH: LD HL,(05614H) + +Indirect address 058e0H. 1 references: +-------------------------------------- + + 058fdH: LD (058E0H),A + + +End of reference file for "XPATCH-5510.bin" + diff --git a/software/dis/XPATCH/XPATCH.ini b/software/dis/XPATCH/XPATCH.ini new file mode 100644 index 0000000..8cf8def --- /dev/null +++ b/software/dis/XPATCH/XPATCH.ini @@ -0,0 +1,330 @@ +---------------------------------------- +-- dZ80 configuration file +---------------------------------------- + +---------------------------------------- +-- Disassembly control +---------------------------------------- + +cpu="z80" +inputfile="XPATCH-5510.bin" +outputfile="XPATCH-5510.asm" +--fileheadersize=27 +filebaseaddr=20572 +disstart=0 +disend=23724 +--disstart=0 +--disend=3584 +--quiet=0 +labelledoutput=1 + +---------------------------------------- +-- Layout +---------------------------------------- + +labelreference=1 +addresscolumn=1 +opcodecolumn=1 +relativejumpcomment=1 +uppercase=1 +autoblanklines=1 +db="db" +comment="; " +radix=16 +numprefix="0" +numsuffix="H" + +---------------------------------------- +-- Scripts +---------------------------------------- + +--script="scripts\\spectrum.lua" + +---------------------------------------- +-- References +---------------------------------------- + +referencefile="XPATCH-5510.ref" +inportreference=1 +outportreference=1 +addressreference=1 +indirectaddressreference=1 +limitreferences=1 + +---------------------------------------- +-- Opcode mapfile and code/data areas +---------------------------------------- + +--opmapfile="mayhem.map" + +-- Code Region isnt required as v2.x sets the entire region to code unless a data region overrides it. +d_SetCodeRegion(20572, 3152) + +-- Set the known data regions, either as a data region (byte), word or string. The type affects the assembly output definitions and word +-- regions will attempt to map to an address, ie. jump tables will be setup with labels rather than constants. +d_SetDataRegion( hex("507D"), 27) +d_SetStringRegion( hex("507D"), 11) +d_SetStringRegion( hex("5089"), 15) +d_SetDataRegion( hex("5255"), 23) +d_SetStringRegion( hex("5257"), 4) +d_SetStringRegion( hex("525C"), 15) + +d_SetDataRegion( hex("5446"), 31) +d_SetStringRegion( hex("5446"), 12) +d_SetStringRegion( hex("5453"), 17) +d_SetDataRegion( hex("5465"), 8) +d_SetStringRegion( hex("55B3"), 18) +d_SetStringRegion( hex("55F8"), 25) + +d_SetDataRegion( hex("5807"), 49) +d_SetStringRegion( hex("5807"), 23) +--d_SetStringRegion( hex("581F"), 5) +d_SetStringRegion( hex("5827"), 5) +d_SetStringRegion( hex("582F"), 5) + +d_SetDataRegion( hex("585D"), 45) +d_SetStringRegion( hex("585D"), 4) +d_SetStringRegion( hex("5862"), 5) +d_SetStringRegion( hex("5868"), 7) +d_SetStringRegion( hex("5870"), 5) +d_SetStringRegion( hex("5876"), 3) +d_SetStringRegion( hex("587A"), 5) +d_SetStringRegion( hex("5880"), 3) +d_SetStringRegion( hex("5884"), 3) + +--d_SetStringRegion( hex("585D"), 4) +--d_SetDataRegion( hex("58A5"), 59) +--d_SetStringRegion( hex("58A5"), 17) +--d_SetStringRegion( hex("58B7"), 40) + +d_SetDataRegion( hex("59C7"), 25) +d_SetStringRegion( hex("59C7"), 24) + +d_SetDataRegion( hex("5A04"), 56) +d_SetWordRegion( hex("5A04"), 28) + +-- Reserved key words. +d_SetDataRegion( hex("5A20"), 28) +d_SetStringRegion( hex("5A20"), 3) -- LINE +d_SetStringRegion( hex("5A24"), 3) -- AUTO +d_SetStringRegion( hex("5A28"), 2) -- CLR +d_SetStringRegion( hex("5A2B"), 3) -- MOVE +d_SetStringRegion( hex("5A2F"), 5) -- COPY/P +d_SetStringRegion( hex("5A35"), 5) -- PAGE/P + +d_SetDataRegion( hex("5A52"), 17) +d_SetStringRegion( hex("5A52"), 15) + +-- Create a mapping table of known Sharp I/O ports and 8 bit constants. +-- +-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address. +d_SetByteEquate(hex("FE") , 1, "PRTC" ) +d_SetByteEquate(hex("FF") , 1, "PRTD" ) + +-- Create a mapping table of known Sharp MZ BIOS/Memory Mapped Hardware addresses which dz80 +-- can use to replace an address with the label. The EQU list will also be output at the start +-- of the disassembly file so it can compile. +-- Format Addr IsAddr Label : IsAddr = 0, value is a constant, = 1, value is an address. +d_SetWordEquate(hex("0003"), 1, "GETL" ) +d_SetWordEquate(hex("0006"), 1, "LETNL" ) +d_SetWordEquate(hex("0009"), 1, "NL" ) +d_SetWordEquate(hex("000C"), 1, "PRNTS" ) +d_SetWordEquate(hex("000F"), 1, "PRNTT" ) +d_SetWordEquate(hex("0012"), 1, "PRNT" ) +d_SetWordEquate(hex("0015"), 1, "MSG" ) +d_SetWordEquate(hex("0018"), 1, "MSGX" ) +d_SetWordEquate(hex("001B"), 1, "GETKY" ) +d_SetWordEquate(hex("001E"), 1, "BRKEY" ) +d_SetWordEquate(hex("0021"), 1, "?WRI" ) +d_SetWordEquate(hex("0024"), 1, "?WRD" ) +d_SetWordEquate(hex("0027"), 1, "?RDI" ) +d_SetWordEquate(hex("002A"), 1, "?RDD" ) +d_SetWordEquate(hex("002D"), 1, "?VRFY" ) +d_SetWordEquate(hex("0030"), 1, "MELDY" ) +d_SetWordEquate(hex("0033"), 1, "?TMST" ) +d_SetWordEquate(hex("003B"), 1, "TIMRD" ) +d_SetWordEquate(hex("003E"), 1, "BELL" ) +d_SetWordEquate(hex("0041"), 1, "XTEMP" ) +d_SetWordEquate(hex("0044"), 1, "MSTA" ) +d_SetWordEquate(hex("0047"), 1, "MSTP" ) +d_SetWordEquate(hex("0000"), 1, "MONIT" ) +d_SetWordEquate(hex("0089"), 1, "SS" ) +d_SetWordEquate(hex("0095"), 1, "ST1" ) +d_SetWordEquate(hex("0410"), 1, "HLHEX" ) +d_SetWordEquate(hex("041F"), 1, "_2HEX" ) +d_SetWordEquate(hex("074D"), 1, "?MODE" ) +d_SetWordEquate(hex("08CA"), 1, "?KEY" ) +d_SetWordEquate(hex("096C"), 1, "PRNT3" ) +d_SetWordEquate(hex("0BB9"), 1, "?ADCN" ) +d_SetWordEquate(hex("0BCE"), 1, "?DACN" ) +d_SetWordEquate(hex("0DB5"), 1, "?DSP" ) +d_SetWordEquate(hex("0DA6"), 1, "?BLNK" ) +d_SetWordEquate(hex("0DDC"), 1, "?DPCT" ) +d_SetWordEquate(hex("03BA"), 1, "PRTHL" ) +d_SetWordEquate(hex("03C3"), 1, "PRTHX" ) +d_SetWordEquate(hex("03DA"), 1, "ASC" ) +d_SetWordEquate(hex("03F9"), 1, "HEX" ) +d_SetWordEquate(hex("0DDC"), 1, "DPCT" ) +d_SetWordEquate(hex("0DA7"), 1, "DLY12" ) +d_SetWordEquate(hex("0DAA"), 1, "DLY12A" ) +d_SetWordEquate(hex("0EE6"), 1, "?RSTR1" ) +d_SetWordEquate(hex("06A3"), 1, "MOTOR" ) +d_SetWordEquate(hex("071A"), 1, "CKSUM" ) +d_SetWordEquate(hex("077A"), 1, "GAP" ) +d_SetWordEquate(hex("0485"), 1, "WTAPE" ) +d_SetWordEquate(hex("0700"), 1, "MSTOP" ) +d_SetWordEquate(hex("11FD"), 1, "TAPECOPY" ) +d_SetWordEquate(hex("1200"), 1, "COLDSTRT" ) +d_SetWordEquate(hex("1250"), 1, "WARMSTRTMON") +d_SetWordEquate(hex("15A8"), 1, "CMDWORDTBL" ) +d_SetWordEquate(hex("1BB2"), 1, "CMDJMPTBL" ) +d_SetWordEquate(hex("2E33"), 1, "CMTBUF" ) +d_SetWordEquate(hex("2E34"), 1, "CMTFNAME" ) + +-- Known BASIC SA-5510 labels/addresses. +d_SetWordEquate(hex("1C3C"), 1, "CMDREMDATA" ) +d_SetWordEquate(hex("13AB"), 1, "SYNTAXERR" ) +d_SetWordEquate(hex("2D12"), 1, "CMDREAD" ) +d_SetWordEquate(hex("1C4D"), 1, "CMDLIST" ) +d_SetWordEquate(hex("1E91"), 1, "CMDRUN" ) +d_SetWordEquate(hex("1C42"), 1, "CMDNEW" ) +d_SetWordEquate(hex("2B0D"), 1, "CMDPRINT" ) +d_SetWordEquate(hex("1D6A"), 1, "CMDLET" ) +d_SetWordEquate(hex("1F2B"), 1, "CMDFOR" ) +d_SetWordEquate(hex("21AD"), 1, "CMDIF" ) +d_SetWordEquate(hex("13AB"), 1, "CMDTHEN" ) +d_SetWordEquate(hex("1EA6"), 1, "CMDGOTO" ) +d_SetWordEquate(hex("1EC7"), 1, "CMDGOSUB" ) +d_SetWordEquate(hex("1EF8"), 1, "CMDRETURN" ) +d_SetWordEquate(hex("1FC0"), 1, "CMDNEXT" ) +d_SetWordEquate(hex("1D2C"), 1, "CMDSTOP" ) +d_SetWordEquate(hex("1D15"), 1, "CMDEND" ) +d_SetWordEquate(hex("203E"), 1, "CMDON" ) +d_SetWordEquate(hex("2D75"), 1, "CMDLOAD" ) +d_SetWordEquate(hex("2D82"), 1, "CMDSAVE" ) +d_SetWordEquate(hex("2EB3"), 1, "CMDVERIFY" ) +d_SetWordEquate(hex("2191"), 1, "CMDPOKE" ) +d_SetWordEquate(hex("2080"), 1, "CMDDIM" ) +d_SetWordEquate(hex("2201"), 1, "CMDDEFFN" ) +d_SetWordEquate(hex("2BFF"), 1, "CMDINPUT" ) +d_SetWordEquate(hex("1D4D"), 1, "CMDRESTORE" ) +d_SetWordEquate(hex("21A6"), 1, "CMDCLS" ) +d_SetWordEquate(hex("2269"), 1, "CMDMUSIC" ) +d_SetWordEquate(hex("2282"), 1, "CMDTEMPO" ) +d_SetWordEquate(hex("2942"), 1, "CMDUSRN" ) +d_SetWordEquate(hex("2D9F"), 1, "CMDWOPEN" ) +d_SetWordEquate(hex("2D92"), 1, "CMDROPEN" ) +d_SetWordEquate(hex("2DAD"), 1, "CMDCLOSE" ) +d_SetWordEquate(hex("28B6"), 1, "CMDMON" ) +d_SetWordEquate(hex("2967"), 1, "CMDLIMIT" ) +d_SetWordEquate(hex("29CE"), 1, "CMDCONT" ) +d_SetWordEquate(hex("2902"), 1, "CMDGET" ) +d_SetWordEquate(hex("29FE"), 1, "CMDINP" ) +d_SetWordEquate(hex("2A1C"), 1, "CMDOUT" ) +d_SetWordEquate(hex("28B9"), 1, "CMDCURSOR" ) +d_SetWordEquate(hex("2AA6"), 1, "CMDSET" ) +d_SetWordEquate(hex("2AAA"), 1, "CMDRESET" ) +d_SetWordEquate(hex("2A2F"), 1, "CMDAUTO" ) +d_SetWordEquate(hex("33AB"), 1, "CMDCOPY" ) +d_SetWordEquate(hex("32D4"), 1, "CMDPAGE" ) + +d_SetWordEquate(hex("13AE"), 1, "OVFLERR" ) +d_SetWordEquate(hex("13B1"), 1, "ILDATERR" ) +d_SetWordEquate(hex("13B4"), 1, "DATMISERR" ) +d_SetWordEquate(hex("13B7"), 1, "STRLENERR" ) +d_SetWordEquate(hex("13BA"), 1, "MEMERR" ) +d_SetWordEquate(hex("13C0"), 1, "LINELENERR" ) +d_SetWordEquate(hex("13C3"), 1, "GOSUBERR" ) +d_SetWordEquate(hex("13C6"), 1, "FORNEXTERR" ) +d_SetWordEquate(hex("13C9"), 1, "FUNCERR" ) +d_SetWordEquate(hex("13CC"), 1, "NEXTFORERR" ) +d_SetWordEquate(hex("13CF"), 1, "RETGOSBERR" ) +d_SetWordEquate(hex("13D2"), 1, "UNDEFFNERR" ) +d_SetWordEquate(hex("13D5"), 1, "LINEERR" ) +d_SetWordEquate(hex("13D8"), 1, "CONTERR" ) +d_SetWordEquate(hex("13DB"), 1, "BADWRERR" ) +d_SetWordEquate(hex("13DE"), 1, "CMDSTMTERR" ) +d_SetWordEquate(hex("13E1"), 1, "READDATAERR") +d_SetWordEquate(hex("13E4"), 1, "OPENERR" ) +d_SetWordEquate(hex("13E7"), 1, "UNKNWNERR" ) +d_SetWordEquate(hex("13EA"), 1, "OUTFILEERR" ) +d_SetWordEquate(hex("13ED"), 1, "PRTNRDYERR" ) +d_SetWordEquate(hex("13F0"), 1, "PRTHWERR" ) +d_SetWordEquate(hex("13F3"), 1, "PRTPAPERERR") +d_SetWordEquate(hex("13F6"), 1, "CHKSUMERR" ) + +d_SetWordEquate(hex("1347"), 1, "TITLEMSG" ) +d_SetWordEquate(hex("1364"), 1, "COPYRMSG" ) +d_SetWordEquate(hex("1384"), 1, "READYMSG" ) +d_SetWordEquate(hex("138A"), 1, "ERRORMSG" ) +d_SetWordEquate(hex("1391"), 1, "INMSG" ) +d_SetWordEquate(hex("1395"), 1, "BREAKMSG" ) +d_SetWordEquate(hex("139C"), 1, "BYTESMSG" ) +d_SetWordEquate(hex("13A3"), 1, "ERRCODE" ) + +d_SetWordEquate(hex("1332"), 1, "MSGNL" ) +d_SetWordEquate(hex("167B"), 1, "UNUSEDTBL1" ) +d_SetWordEquate(hex("167D"), 1, "UNUSEDTBL2" ) +d_SetWordEquate(hex("124E"), 1, "WARMSTRT" ) +d_SetWordEquate(hex("167F"), 1, "OPERATORTBL") +d_SetWordEquate(hex("17FC"), 1, "STRTONUM" ) +d_SetWordEquate(hex("1E88"), 1, "GETNUM" ) +d_SetWordEquate(hex("173F"), 1, "SKIPSPACE" ) +d_SetWordEquate(hex("173E"), 1, "INCSKIPSPCE") +d_SetWordEquate(hex("177B"), 1, "EXECHL" ) +d_SetWordEquate(hex("1795"), 1, "EXECNOTCHR" ) +d_SetWordEquate(hex("17A3"), 1, "MATCHCHR" ) +d_SetWordEquate(hex("490D"), 0, "LINEBUFR" ) + +-- XPATCH labels/addresses. +d_SetWordEquate(hex("5A63"), 1, "XPINIT" ) +d_SetWordEquate(hex("5B55"), 1, "RELOC3302" ) +d_SetWordEquate(hex("5BB0"), 1, "RELOC4806" ) + +-- Comments to be added at fixed addresses. +d_SetComment( hex("1250"), "Sharp defined BASIC restart location from Monitor." ) +d_SetComment( hex("5B55"), "Relocated to 0x3302 for 0x5B bytes." ) +d_SetComment( hex("5BB0"), "Relocated to 0x4806 for 0xF8 bytes." ) +d_SetComment( hex("5CA8"), "End of Relocated code." ) + +-- Known Sharp Constants. +d_SetWordEquate(hex("10F0"), 0, "ATRB" ) -- ATTRIBUTE +d_SetWordEquate(hex("10F1"), 0, "NAME" ) -- FILE NAME +d_SetWordEquate(hex("1102"), 0, "SIZE" ) -- BYTESIZE +d_SetWordEquate(hex("1104"), 0, "DTADR" ) -- DATA ADDRESS +d_SetWordEquate(hex("1106"), 0, "EXADR" ) -- EXECUTION ADDRESS +d_SetWordEquate(hex("1108"), 0, "COMNT" ) -- COMMENT +d_SetWordEquate(hex("1164"), 0, "SWPW" ) -- SWEEP WORK +d_SetWordEquate(hex("116E"), 0, "KDATW" ) -- KEY WORK +d_SetWordEquate(hex("1170"), 0, "KANAF" ) -- KANA FLAG (01=GRAPHIC MODE) +d_SetWordEquate(hex("1171"), 0, "DSPXY" ) -- DISPLAY COORDINATES +d_SetWordEquate(hex("1173"), 0, "MANG" ) -- COLUMN MANAGEMENT +d_SetWordEquate(hex("1179"), 0, "MANGE" ) -- COLUMN MANAGEMENT END +d_SetWordEquate(hex("117A"), 0, "PBIAS" ) -- PAGE BIAS +d_SetWordEquate(hex("117B"), 0, "ROLTOP" ) -- ROLL TOP BIAS +d_SetWordEquate(hex("117C"), 0, "MGPNT" ) -- COLUMN MANAG. POINTER +d_SetWordEquate(hex("117D"), 0, "PAGETP" ) -- PAGE TOP +d_SetWordEquate(hex("117F"), 0, "ROLEND" ) -- ROLL END +d_SetWordEquate(hex("118E"), 0, "FLASH" ) -- FLASHING DATA +d_SetWordEquate(hex("118F"), 0, "SFTLK" ) -- SHIFT LOCK +d_SetWordEquate(hex("1190"), 0, "REVFLG" ) -- REVERSE FLAG +d_SetWordEquate(hex("1191"), 0, "SPAGE" ) -- PAGE CHANGE +d_SetWordEquate(hex("1192"), 0, "FLSDT" ) -- CURSOR DATA +d_SetWordEquate(hex("1193"), 0, "STRGF" ) -- STRING FLAG +d_SetWordEquate(hex("1194"), 0, "DPRNT" ) -- TAB COUNTER +d_SetWordEquate(hex("1195"), 0, "TMCNT" ) -- TAPE MARK COUNTER +d_SetWordEquate(hex("1197"), 0, "SUMDT" ) -- CHECK SUM DATA +d_SetWordEquate(hex("1199"), 0, "CSMDT" ) -- FOR COMPARE SUM DATA +d_SetWordEquate(hex("119B"), 0, "AMPM" ) -- AMPM DATA +d_SetWordEquate(hex("119C"), 0, "TIMFG" ) -- TIME FLAG +d_SetWordEquate(hex("119D"), 0, "SWRK" ) -- KEY SOUND FLAG +d_SetWordEquate(hex("119E"), 0, "TEMPW" ) -- TEMPO WORK +d_SetWordEquate(hex("119F"), 0, "ONTYO" ) -- ONTYO WORK +d_SetWordEquate(hex("11A0"), 0, "OCTV" ) -- OCTAVE WORK +d_SetWordEquate(hex("11A1"), 0, "RATIO" ) -- ONPU RATIO +d_SetWordEquate(hex("11A3"), 0, "BUFER" ) -- GET LINE BUFFER + + +---------------------------------------- +-- End of configuration file +---------------------------------------- diff --git a/software/dis/XPATCH/XPATCH_5510_V2.2.MZF b/software/dis/XPATCH/XPATCH_5510_V2.2.MZF new file mode 100644 index 0000000..14c0ce3 Binary files /dev/null and b/software/dis/XPATCH/XPATCH_5510_V2.2.MZF differ diff --git a/software/dis/XPATCH/dz80.ini b/software/dis/XPATCH/dz80.ini new file mode 120000 index 0000000..4193260 --- /dev/null +++ b/software/dis/XPATCH/dz80.ini @@ -0,0 +1 @@ +XPATCH.ini \ No newline at end of file diff --git a/software/hdr/cpm22.HDR b/software/hdr/cpm22.hdr similarity index 100% rename from software/hdr/cpm22.HDR rename to software/hdr/cpm22.hdr diff --git a/software/hdr/cpm22_MZ700_80C.HDR b/software/hdr/cpm22_mz700_80c.hdr similarity index 100% rename from software/hdr/cpm22_MZ700_80C.HDR rename to software/hdr/cpm22_mz700_80c.hdr diff --git a/software/hdr/cpm22_MZ80A_80C.HDR b/software/hdr/cpm22_mz80a_80c.hdr similarity index 100% rename from software/hdr/cpm22_MZ80A_80C.HDR rename to software/hdr/cpm22_mz80a_80c.hdr diff --git a/software/hdr/cpm22_MZ80A_STD.HDR b/software/hdr/cpm22_mz80a_std.hdr similarity index 100% rename from software/hdr/cpm22_MZ80A_STD.HDR rename to software/hdr/cpm22_mz80a_std.hdr diff --git a/software/hdr/CPM_RFS_1.HDR b/software/hdr/cpm_rfs_1.hdr similarity index 100% rename from software/hdr/CPM_RFS_1.HDR rename to software/hdr/cpm_rfs_1.hdr diff --git a/software/hdr/CPM_RFS_2.HDR b/software/hdr/cpm_rfs_2.hdr similarity index 100% rename from software/hdr/CPM_RFS_2.HDR rename to software/hdr/cpm_rfs_2.hdr diff --git a/software/hdr/sdtest.HDR b/software/hdr/sdtest.hdr similarity index 100% rename from software/hdr/sdtest.HDR rename to software/hdr/sdtest.hdr diff --git a/software/roms/9Z_504M.ROM b/software/roms/9z_504m.rom similarity index 100% rename from software/roms/9Z_504M.ROM rename to software/roms/9z_504m.rom diff --git a/software/roms/CPM223.BIN b/software/roms/CPM223.BIN deleted file mode 100644 index 8f6ba8c..0000000 Binary files a/software/roms/CPM223.BIN and /dev/null differ diff --git a/software/roms/CPM223_MZ700_80C.BIN b/software/roms/CPM223_MZ700_80C.BIN deleted file mode 100644 index e7fc3b7..0000000 Binary files a/software/roms/CPM223_MZ700_80C.BIN and /dev/null differ diff --git a/software/roms/CPM223_MZ80A_80C.BIN b/software/roms/CPM223_MZ80A_80C.BIN deleted file mode 100644 index 6af870f..0000000 Binary files a/software/roms/CPM223_MZ80A_80C.BIN and /dev/null differ diff --git a/software/roms/CPM223_MZ80A_STD.BIN b/software/roms/CPM223_MZ80A_STD.BIN deleted file mode 100644 index bdbc6d9..0000000 Binary files a/software/roms/CPM223_MZ80A_STD.BIN and /dev/null differ diff --git a/software/roms/monitor_1Z-013A-KM.rom b/software/roms/monitor_1z-013a-km.rom similarity index 100% rename from software/roms/monitor_1Z-013A-KM.rom rename to software/roms/monitor_1z-013a-km.rom diff --git a/software/roms/monitor_1Z-013A.rom b/software/roms/monitor_1z-013a.rom similarity index 100% rename from software/roms/monitor_1Z-013A.rom rename to software/roms/monitor_1z-013a.rom diff --git a/software/roms/monitor_80c_1Z-013A-KM.rom b/software/roms/monitor_80c_1z-013a-km.rom similarity index 100% rename from software/roms/monitor_80c_1Z-013A-KM.rom rename to software/roms/monitor_80c_1z-013a-km.rom diff --git a/software/roms/monitor_80c_1Z-013A.rom b/software/roms/monitor_80c_1z-013a.rom similarity index 100% rename from software/roms/monitor_80c_1Z-013A.rom rename to software/roms/monitor_80c_1z-013a.rom diff --git a/software/roms/monitor_80c_SA1510.rom b/software/roms/monitor_80c_sa1510.rom similarity index 100% rename from software/roms/monitor_80c_SA1510.rom rename to software/roms/monitor_80c_sa1510.rom diff --git a/software/roms/monitor_SA1510.rom b/software/roms/monitor_sa1510.rom similarity index 100% rename from software/roms/monitor_SA1510.rom rename to software/roms/monitor_sa1510.rom diff --git a/software/roms/mz2000_ipl.rom b/software/roms/mz2000_ipl.rom new file mode 100644 index 0000000..250ae6f Binary files /dev/null and b/software/roms/mz2000_ipl.rom differ diff --git a/software/roms/MZ700_cgrom.rom b/software/roms/mz700_cgrom.rom similarity index 100% rename from software/roms/MZ700_cgrom.rom rename to software/roms/mz700_cgrom.rom diff --git a/software/roms/MZ800_1Z_013B.ORI b/software/roms/mz800_1z_013b.ori similarity index 100% rename from software/roms/MZ800_1Z_013B.ORI rename to software/roms/mz800_1z_013b.ori diff --git a/software/roms/MZ800_1Z_013B.rom b/software/roms/mz800_1z_013b.rom similarity index 100% rename from software/roms/MZ800_1Z_013B.rom rename to software/roms/mz800_1z_013b.rom diff --git a/software/roms/MZ800_9Z_504M.ORI b/software/roms/mz800_9z_504m.ori similarity index 100% rename from software/roms/MZ800_9Z_504M.ORI rename to software/roms/mz800_9z_504m.ori diff --git a/software/roms/MZ800_9Z_504M.rom b/software/roms/mz800_9z_504m.rom similarity index 100% rename from software/roms/MZ800_9Z_504M.rom rename to software/roms/mz800_9z_504m.rom diff --git a/software/roms/MZ800_CGROM.ORI b/software/roms/mz800_cgrom.ori similarity index 100% rename from software/roms/MZ800_CGROM.ORI rename to software/roms/mz800_cgrom.ori diff --git a/software/roms/MZ800_CGROM_JP.ORI b/software/roms/mz800_cgrom_jp.ori similarity index 100% rename from software/roms/MZ800_CGROM_JP.ORI rename to software/roms/mz800_cgrom_jp.ori diff --git a/software/roms/MZ800_IOCS.ORI b/software/roms/mz800_iocs.ori similarity index 100% rename from software/roms/MZ800_IOCS.ORI rename to software/roms/mz800_iocs.ori diff --git a/software/roms/MZ800_IOCS.rom b/software/roms/mz800_iocs.rom similarity index 100% rename from software/roms/MZ800_IOCS.rom rename to software/roms/mz800_iocs.rom diff --git a/software/roms/MZ800_IPL.rom b/software/roms/mz800_ipl.rom similarity index 100% rename from software/roms/MZ800_IPL.rom rename to software/roms/mz800_ipl.rom diff --git a/software/roms/mz80afi.rom b/software/roms/mz80afi.rom new file mode 100644 index 0000000..aadbc8d Binary files /dev/null and b/software/roms/mz80afi.rom differ diff --git a/software/roms/MZ80B_IPL.rom b/software/roms/mz80b_ipl.rom similarity index 100% rename from software/roms/MZ80B_IPL.rom rename to software/roms/mz80b_ipl.rom diff --git a/software/roms/sa1510.orig b/software/roms/sa1510.orig new file mode 100644 index 0000000..d904e16 Binary files /dev/null and b/software/roms/sa1510.orig differ diff --git a/software/tools/assemble_cpm.sh b/software/tools/assemble_cpm.sh index f5007b2..c97dc72 100755 --- a/software/tools/assemble_cpm.sh +++ b/software/tools/assemble_cpm.sh @@ -38,7 +38,7 @@ INCDIR=${ROOTDIR}/software/asm/include ROMDIR=${ROOTDIR}/software/roms # Compiled or source ROM files. HDRDIR=${ROOTDIR}/software/hdr # MZF headers directory. MZFDIR=${ROOTDIR}/software/MZF/Common # MZF Format source files. -CPMVERSIONS="MZ700_80C:0 MZ80A_80C:1 MZ80A_STD:2" +CPMVERSIONS="mz700_80c:0 mz80a_80c:1 mz80a_std:2" # As the tranZPUter project has eveolved different variants of CP/M are needed, so this loop along with the CPMVERSIONS string builds the versions as needed. for ver in ${CPMVERSIONS} @@ -70,6 +70,6 @@ do # Manual tinkering to produce the loadable MZF file... # - cat ${ROMDIR}/cpm22.bin ${ROMDIR}/cbios.bin > ${ROMDIR}/CPM223_${FILEEXT}.BIN - cat ${HDRDIR}/cpm22_${FILEEXT}.HDR ${ROMDIR}/CPM223_${FILEEXT}.BIN > ${MZFDIR}/CPM223_${FILEEXT}.MZF + cat ${ROMDIR}/cpm22.bin ${ROMDIR}/cbios.bin > ${ROMDIR}/cpm223_${FILEEXT}.bin + cat ${HDRDIR}/cpm22_${FILEEXT}.hdr ${ROMDIR}/cpm223_${FILEEXT}.bin > ${MZFDIR}/cpm223_${FILEEXT}.mzf done diff --git a/software/tools/assemble_roms.sh b/software/tools/assemble_roms.sh index 21a3f45..a255b7c 100755 --- a/software/tools/assemble_roms.sh +++ b/software/tools/assemble_roms.sh @@ -34,9 +34,10 @@ ROOTDIR=../../tranZPUter TOOLDIR=${ROOTDIR}/software/tools JARDIR=${ROOTDIR}/software/tools ASM=glass-0.5.jar -BUILDROMLIST="MZ800_1Z_013B MZ800_9Z_504M MZ800_IOCS MZ80AFI monitor_SA1510 monitor_80c_SA1510 monitor_1Z-013A monitor_80c_1Z-013A monitor_1Z-013A-KM monitor_80c_1Z-013A-KM MZ80B_IPL" +BUILDROMLIST="mz2000_ipl mz800_1z_013b mz800_9z_504m mz800_iocs mz80afi monitor_sa1510 monitor_80c_sa1510 monitor_1z-013a monitor_80c_1z-013a monitor_1z-013a-km monitor_80c_1z-013a-km mz80b_ipl" #BUILDMZFLIST="hi-ramcheck sharpmz-test" -BUILDMZFLIST="5Z009-1B SA-5510_TZFS MSBASIC_MZ80A MSBASIC_MZ700 MSBASIC_TZ40 MSBASIC_TZ80 sharpmz-test" +#BUILDMZFLIST="basic_sp-5025 5z009-1b sa-5510_tzfs msbasic_mz80a msbasic_mz700 msbasic_tz40 msbasic_tz80 sharpmz-test" +BUILDMZFLIST="5z009-1b sa-5510_tzfs msbasic_mz80a msbasic_mz700 msbasic_tz40 msbasic_tz80 sharpmz-test" ASMDIR=${ROOTDIR}/software/asm ASMTMPDIR=${ROOTDIR}/software/tmp INCDIR=${ROOTDIR}/software/asm/include @@ -54,20 +55,20 @@ do OBJNAME=${f}.obj SYMNAME=${f}.sym ROMNAME=${f}.rom - MZFNAME=${f}.MZF + MZFNAME=${f}.mzf # Special handling for the 4 version of MS BASIC. - if [[ ${SRCNAME} = "MSBASIC_MZ80A" ]]; then - ASMNAME="MSBASIC.asm" + if [[ ${SRCNAME} = "msbasic_mz80a" ]]; then + ASMNAME="msbasic.asm" echo "BUILD_VERSION EQU 0" > ${INCDIR}/MSBASIC_BuildVersion.asm - elif [[ ${SRCNAME} = "MSBASIC_MZ700" ]]; then - ASMNAME="MSBASIC.asm" + elif [[ ${SRCNAME} = "msbasic_mz700" ]]; then + ASMNAME="msbasic.asm" echo "BUILD_VERSION EQU 1" > ${INCDIR}/MSBASIC_BuildVersion.asm - elif [[ ${SRCNAME} = "MSBASIC_TZ40" ]]; then - ASMNAME="MSBASIC.asm" + elif [[ ${SRCNAME} = "msbasic_tz40" ]]; then + ASMNAME="msbasic.asm" echo "BUILD_VERSION EQU 2" > ${INCDIR}/MSBASIC_BuildVersion.asm - elif [[ ${SRCNAME} = "MSBASIC_TZ80" ]]; then - ASMNAME="MSBASIC.asm" + elif [[ ${SRCNAME} = "msbasic_tz80" ]]; then + ASMNAME="msbasic.asm" echo "BUILD_VERSION EQU 3" > ${INCDIR}/MSBASIC_BuildVersion.asm fi @@ -104,4 +105,4 @@ do done # Manual tinkering to build the MZ800 Rom. -cat ${ROMDIR}/MZ800_1Z_013B.rom ${ROMDIR}/MZ800_CGROM.ORI ${ROMDIR}/MZ800_9Z_504M.rom ${ROMDIR}/MZ800_IOCS.rom > ${ROMDIR}/MZ800_IPL.rom +cat ${ROMDIR}/mz800_1z_013b.rom ${ROMDIR}/mz800_cgrom.ori ${ROMDIR}/mz800_9z_504m.rom ${ROMDIR}/mz800_iocs.rom > ${ROMDIR}/mz800_ipl.rom diff --git a/software/tools/assemble_tzfs.sh b/software/tools/assemble_tzfs.sh index 3c7ea27..ec41d2c 100755 --- a/software/tools/assemble_tzfs.sh +++ b/software/tools/assemble_tzfs.sh @@ -65,8 +65,8 @@ do # Uncomment if your not using my modified version 0.5.1 which fixes the bug # echo -n -e '\xff' >> ${ROMDIR}/${f}.rom else - echo "Copy ${ASMDIR}/${f}.obj to ${MZFDIR}/${f}.MZF" - cp ${ASMTMPDIR}/${f}.obj ${MZFDIR}/${f}.MZF + echo "Copy ${ASMDIR}/${f}.obj to ${MZFDIR}/${f}.mzf" + cp ${ASMTMPDIR}/${f}.obj ${MZFDIR}/${f}.mzf fi fi done diff --git a/software/tools/copytosd.sh b/software/tools/copytosd.sh index 0a5f761..de11a04 100755 --- a/software/tools/copytosd.sh +++ b/software/tools/copytosd.sh @@ -197,14 +197,14 @@ done # Manually copy required files. cp ${rootdir}/${softwaredir}/roms/tzfs.rom $media/TZFS/; -cp ${rootdir}/${softwaredir}/roms/monitor_SA1510.rom $media/TZFS/SA1510.rom; -cp ${rootdir}/${softwaredir}/roms/monitor_80c_SA1510.rom $media/TZFS/SA1510-8.rom; -cp ${rootdir}/${softwaredir}/roms/monitor_1Z-013A.rom $media/TZFS/1Z-013A.rom; -cp ${rootdir}/${softwaredir}/roms/monitor_80c_1Z-013A.rom $media/TZFS/1Z-013A-8.rom; -cp ${rootdir}/${softwaredir}/roms/monitor_1Z-013A-KM.rom $media/TZFS/1Z-013A-KM.rom; -cp ${rootdir}/${softwaredir}/roms/monitor_80c_1Z-013A-KM.rom $media/TZFS/1Z-013A-KM-8.rom; -cp ${rootdir}/${softwaredir}/roms/MZ80B_IPL.rom $media/TZFS/MZ80B_IPL.rom; -cp ${rootdir}/${softwaredir}/roms/MZ800_* $media/TZFS/; +cp ${rootdir}/${softwaredir}/roms/monitor_sa1510.rom $media/TZFS/sa1510.rom; +cp ${rootdir}/${softwaredir}/roms/monitor_80c_sa1510.rom $media/TZFS/sa1510-8.rom; +cp ${rootdir}/${softwaredir}/roms/monitor_1z-013a.rom $media/TZFS/1z-013a.rom; +cp ${rootdir}/${softwaredir}/roms/monitor_80c_1z-013a.rom $media/TZFS/1z-013a-8.rom; +cp ${rootdir}/${softwaredir}/roms/monitor_1z-013a-km.rom $media/TZFS/1z-013a-km.rom; +cp ${rootdir}/${softwaredir}/roms/monitor_80c_1z-013a-km.rom $media/TZFS/1z-013a-km-8.rom; +cp ${rootdir}/${softwaredir}/roms/mz80b_ipl.rom $media/TZFS/mz80b_ipl.rom; +cp ${rootdir}/${softwaredir}/roms/mz800_* $media/TZFS/; cp ${rootdir}/${softwaredir}/roms/cpm22.bin $media/CPM/; cp ${rootdir}/${softwaredir}/CPM/SDC16M/RAW/* $media/CPM/; cp ${rootdir}/${softwaredir}/MZF/Common/* $media/MZF/; diff --git a/software/tools/dz80 b/software/tools/dz80 index b47a24a..64daa86 100755 Binary files a/software/tools/dz80 and b/software/tools/dz80 differ diff --git a/software/tools/dz80_v20 b/software/tools/dz80_v20 new file mode 100755 index 0000000..b47a24a Binary files /dev/null and b/software/tools/dz80_v20 differ diff --git a/software/tools/make_cpmdisks.sh b/software/tools/make_cpmdisks.sh index 857e96e..32ac4be 100755 --- a/software/tools/make_cpmdisks.sh +++ b/software/tools/make_cpmdisks.sh @@ -36,7 +36,7 @@ # remove it fro the lists. #BUILDCPMLIST="cpm22" #SOURCEDIRS="CPM_RFS_[1] CPM[0-9][0-9]_* CPM_MC_5 CPM_MC_C? CPM_MC_D? CPM_MC_E? CPM_MC_F? CPM[0-9][0-9]_MZ800*" -SOURCEDIRS="CPM_RFS_[1-2] CPM[0-9][0-9]_* CPM_MC_5 CPM_MC_C? CPM_MC_D? CPM_MC_E? CPM_MC_F? CPM[0-9][0-9]_MZ800*" +SOURCEDIRS="cpm_rfs_[1-2] CPM[0-9][0-9]_* CPM_MC_5 CPM_MC_C? CPM_MC_D? CPM_MC_E? CPM_MC_F? CPM[0-9][0-9]_MZ800*" ROOTDIR=`realpath ../../tranZPUter` CPM_PATH=${ROOTDIR}/software/CPM @@ -187,15 +187,15 @@ do CPMIMAGE="${DISKSDIR}/${f}.RAW" else CPMIMAGE="" - echo "ALERT! ALERT! Couldnt find CPM image:${f}.RAW, not creating MZF file!" + echo "ALERT! ALERT! Couldnt find CPM image:${f}.raw, not creating MZF file!" fi if [ "${CPMIMAGE}" != "" ]; then # Building is just a matter of concatenating together the heaader and the rom image. - cat "${HDRDIR}/${f}.HDR" "${CPMIMAGE}" > "${MZFDIR}/${f}.MZF" + cat "${HDRDIR}/${f}.hdr" "${CPMIMAGE}" > "${MZFDIR}/${f}.mzf" # Place the name of the file into the MZF list so that we create an MZF format binary from this image. - (cd ${MZFDIR}; ls -l ${f}.MZF ${f}.mzf 2>/dev/null | sed 's/ / /g' | sed 's/ / /g' | cut -d' ' -f5,9- >> /tmp/filelist 2>/dev/null) + (cd ${MZFDIR}; ls -l ${f}.mzf ${f}.mzf 2>/dev/null | sed 's/ / /g' | sed 's/ / /g' | cut -d' ' -f5,9- >> /tmp/filelist 2>/dev/null) fi done