- Timestamp:
- 08/07/2017 02:04:35 PM (7 years ago)
- Branches:
- master
- Children:
- 27c8d40
- Parents:
- 84c0125
- Location:
- ram
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
ram/execins.s
r84c0125 r8325447 10 10 DOUBLED = 1 | double output to WS table 11 11 12 .xdef _execins13 14 .xref _clrvce15 .xref _execkey16 17 .xref _io_fpu18 .xref _instmod19 .xref _s_inst20 .xref _idefs21 .xref _vbufs12 .xdef execins 13 14 .xref clrvce 15 .xref execkey 16 17 .xref io_fpu 18 .xref instmod 19 .xref s_inst 20 .xref idefs 21 .xref vbufs 22 22 23 23 | register equates … … 42 42 .page 43 43 44 _execins: link A6,#0 | link stack frames44 execins: link A6,#0 | link stack frames 45 45 movem.l D3-VCE/P2-IP,-(sp) | preserve registers 46 46 move.w VOICE(A6),VCE | get voice number … … 50 50 lea vibtabl,A0 | ... 51 51 movea.l 0(A0,D0.W),IP | ... 52 add.l # _vbufs,IP | ...52 add.l #vbufs,IP | ... 53 53 move.w VCE,(sp) | clrvce(vce) 54 jsr _clrvce | ...54 jsr clrvce | ... 55 55 tst.w TAG(A6) | if (tag) { 56 56 beq L2 | ... … … 62 62 lea vibtabl,A0 | ... 63 63 movea.l 0(A0,D0.W),P2 | ... 64 add.l # _idefs,P2 | ...64 add.l #idefs,P2 | ... 65 65 move.w #1968,D0 | set move count 66 66 … … 77 77 move.l D0,P1 | ... 78 78 move.l D0,P3 | ... 79 add.l # _io_fpu,P1 | point P1 at FPU WS A79 add.l #io_fpu,P1 | point P1 at FPU WS A 80 80 add.l #0x202,P1 | ... 81 81 lea 1778(IP),P2 | point P2 at instdef WS A 82 add.l # _io_fpu,P3 | point P3 at FPU WS B82 add.l #io_fpu,P3 | point P3 at FPU WS B 83 83 add.l #2,P3 | ... 84 84 lea 2858(IP),P4 | point P4 at instdef WS B … … 129 129 move.w VCE,A0 | instmod[vce] = FALSE 130 130 add.l A0,A0 | ... 131 add.l # _instmod,A0 | ...131 add.l #instmod,A0 | ... 132 132 clr.w (A0) | ... 133 133 move.w VCE,A0 | s_inst[vce] = ins 134 134 add.l A0,A0 | ... 135 add.l # _s_inst,A0 | ...135 add.l #s_inst,A0 | ... 136 136 move.w INS(A6),(A0) | ... 137 137 move.b 70(IP),SYNC | get config bits … … 155 155 L17: move.w VCE,A0 | send sync to FPU 156 156 add.l A0,A0 | ... 157 add.l # _io_fpu,A0 | ...157 add.l #io_fpu,A0 | ... 158 158 add.l #0x5FE0,A0 | ... 159 159 move.w SYNC,(A0) | ... … … 163 163 clr.w -(sp) | ... 164 164 move.w #-1,-(sp) | ... 165 jsr _execkey| ...165 jsr execkey | ... 166 166 addq.l #6,sp | ... 167 167 tst.l (sp)+ | clean up stack -
ram/execkey.s
r84c0125 r8325447 9 9 LOC_SUB = 1 10 10 11 .xdef _execkey12 13 .xref _xgetran14 15 .xref _rsntab16 .xref _expbit17 .xref _io_fpu18 .xref _legato19 .xref _prstab20 .xref _ptoftab21 .xref _timemlt22 .xref _valents23 .xref _vbufs24 .xref _vce2grp25 .xref _vce2trg26 .xref _veltab27 .xref _vpsms11 .xdef execkey 12 13 .xref xgetran 14 15 .xref rsntab 16 .xref expbit 17 .xref io_fpu 18 .xref legato 19 .xref prstab 20 .xref ptoftab 21 .xref timemlt 22 .xref valents 23 .xref vbufs 24 .xref vce2grp 25 .xref vce2trg 26 .xref veltab 27 .xref vpsms 28 28 29 29 .page … … 81 81 | { 82 82 83 _execkey: link A6,#LASTLOCL83 execkey: link A6,#LASTLOCL 84 84 movem.l D2-R_FPMANT/A_SMP-A_FP,-(sp) 85 85 … … 94 94 95 95 lsr.w #1,D0 96 lea _vce2trg,A096 lea vce2trg,A0 97 97 move.w TRG(A6),0(A0,D0.W) 98 98 … … 101 101 move.w VCE(A6),A0 102 102 add.l A0,A0 103 move.l # _vce2grp,A1103 move.l #vce2grp,A1 104 104 clr.l D0 105 105 move.w 0(A0,A1.l),D0 … … 136 136 ext.l D0 137 137 move.l D0,A_FPU 138 add.l # _io_fpu+0x4000,A_FPU138 add.l #io_fpu+0x4000,A_FPU 139 139 140 140 | fp = &ip->idhfnc[0]; … … 172 172 lsl.l #2,D0 173 173 add.l D1,D0 174 add.l # _valents,D0174 add.l #valents,D0 175 175 move.l D0,VEP(A6) 176 176 … … 180 180 add.l A0,A0 181 181 add.l A0,A0 182 add.l # _vpsms,A0182 add.l #vpsms,A0 183 183 move.l (A0),A_SMP 184 184 … … 261 261 262 262 F00L117: move MLTVAL(A6),(sp) 263 jsr _xgetran263 jsr xgetran 264 264 move D0,TSRCVAL(A6) 265 265 … … 287 287 move.w D0,A0 288 288 add.l A0,A0 289 add.l # _ptoftab,A0289 add.l #ptoftab,A0 290 290 move.w (A0),TSRCVAL(A6) 291 291 … … 299 299 F00L120: move.w TRG(A6),A0 300 300 add.l A0,A0 301 add.l # _veltab,A0301 add.l #veltab,A0 302 302 move.w (A0),TSRCVAL(A6) 303 303 … … 311 311 F00L121: move.w TRG(A6),A0 312 312 add.l A0,A0 313 add.l # _prstab,A0313 add.l #prstab,A0 314 314 move.w (A0),TSRCVAL(A6) 315 315 … … 369 369 F00L139: move.l PT(A6),A0 370 370 move 4(A0),(sp) 371 jsr _xgetran371 jsr xgetran 372 372 ext.l D0 373 373 move.l D0,LTMP(A6) … … 397 397 move D0,A0 398 398 add.l A0,A0 399 move.l # _ptoftab,A1399 move.l #ptoftab,A1 400 400 move 0(A0,A1.l),D0 401 401 ext.l D0 … … 411 411 F00L142: move TRG(A6),A0 412 412 add.l A0,A0 413 move.l # _veltab,A1413 move.l #veltab,A1 414 414 move 0(A0,A1.l),D0 415 415 ext.l D0 … … 427 427 F00L143: move TRG(A6),A0 428 428 add.l A0,A0 429 move.l # _prstab,A1429 move.l #prstab,A1 430 430 move 0(A0,A1.l),D0 431 431 ext.l D0 … … 450 450 add.l D1,D0 451 451 move.l D0,A0 452 move.l # _valents,A1452 move.l #valents,A1 453 453 clr.l D0 454 454 move 8(A0,A1.l),D0 … … 517 517 move.w D0,D2 518 518 andi.w #0xFFF0,D0 519 move.w _timemlt,D1519 move.w timemlt,D1 520 520 muls D1,D0 521 521 move.l #15,D1 … … 528 528 move D2,A0 529 529 add.l A0,A0 530 add.l # _expbit,A0530 add.l #expbit,A0 531 531 move (A0),R_FPEXP 532 532 … … 700 700 | return; 701 701 | } 702 FN01: tst.w _legato702 FN01: tst.w legato 703 703 beq FN01AA 704 704 705 clr.w _legato705 clr.w legato 706 706 bra FNEXIT 707 707 … … 729 729 ext.l D0 730 730 move.l D0,A_FPU 731 add.l # _io_fpu+0x4000,A_FPU731 add.l #io_fpu+0x4000,A_FPU 732 732 733 733 | fp = &ip->idhfnc[1]; … … 766 766 lsl.l #2,D0 767 767 add.l D1,D0 768 add.l # _valents,D0768 add.l #valents,D0 769 769 move.l D0,VEP(A6) 770 770 … … 774 774 add.l A0,A0 775 775 add.l A0,A0 776 add.l # _vpsms,A0776 add.l #vpsms,A0 777 777 move.l (A0),A_SMP 778 778 … … 855 855 856 856 F01L117: move MLTVAL(A6),(sp) 857 jsr _xgetran857 jsr xgetran 858 858 move D0,TSRCVAL(A6) 859 859 … … 881 881 move D0,A0 882 882 add.l A0,A0 883 add.l # _ptoftab,A0883 add.l #ptoftab,A0 884 884 move (A0),TSRCVAL(A6) 885 885 … … 893 893 F01L120: move TRG(A6),A0 894 894 add.l A0,A0 895 add.l # _veltab,A0895 add.l #veltab,A0 896 896 move (A0),TSRCVAL(A6) 897 897 … … 905 905 F01L121: move TRG(A6),A0 906 906 add.l A0,A0 907 add.l # _prstab,A0907 add.l #prstab,A0 908 908 move (A0),TSRCVAL(A6) 909 909 … … 963 963 F01L139: move.l PT(A6),A0 964 964 move 4(A0),(sp) 965 jsr _xgetran965 jsr xgetran 966 966 ext.l D0 967 967 move.l D0,LTMP(A6) … … 991 991 move D0,A0 992 992 add.l A0,A0 993 move.l # _ptoftab,A1993 move.l #ptoftab,A1 994 994 move 0(A0,A1.l),D0 995 995 ext.l D0 … … 1005 1005 F01L142: move TRG(A6),A0 1006 1006 add.l A0,A0 1007 move.l # _veltab,A11007 move.l #veltab,A1 1008 1008 move 0(A0,A1.l),D0 1009 1009 ext.l D0 … … 1021 1021 F01L143: move TRG(A6),A0 1022 1022 add.l A0,A0 1023 move.l # _prstab,A11023 move.l #prstab,A1 1024 1024 move 0(A0,A1.l),D0 1025 1025 ext.l D0 … … 1044 1044 add.l D1,D0 1045 1045 move.l D0,A0 1046 move.l # _valents,A11046 move.l #valents,A1 1047 1047 clr.l D0 1048 1048 move 8(A0,A1.l),D0 … … 1111 1111 move.w D0,D2 1112 1112 andi.w #0xFFF0,D0 1113 move.w _timemlt,D11113 move.w timemlt,D1 1114 1114 muls D1,D0 1115 1115 move.l #15,D1 … … 1122 1122 move D2,A0 1123 1123 add.l A0,A0 1124 add.l # _expbit,A01124 add.l #expbit,A0 1125 1125 move (A0),R_FPEXP 1126 1126 … … 1278 1278 ext.l D0 1279 1279 move.l D0,A_FPU 1280 add.l # _io_fpu+0x4000,A_FPU1280 add.l #io_fpu+0x4000,A_FPU 1281 1281 1282 1282 | fp = &ip->idhfnc[2]; … … 1315 1315 lsl.l #2,D0 1316 1316 add.l D1,D0 1317 add.l # _valents,D01317 add.l #valents,D0 1318 1318 move.l D0,VEP(A6) 1319 1319 … … 1323 1323 add.l A0,A0 1324 1324 add.l A0,A0 1325 add.l # _vpsms,A01325 add.l #vpsms,A0 1326 1326 move.l (A0),A_SMP 1327 1327 … … 1404 1404 1405 1405 F02L117: move MLTVAL(A6),(sp) 1406 jsr _xgetran1406 jsr xgetran 1407 1407 move D0,TSRCVAL(A6) 1408 1408 … … 1430 1430 move D0,A0 1431 1431 add.l A0,A0 1432 add.l # _ptoftab,A01432 add.l #ptoftab,A0 1433 1433 move (A0),TSRCVAL(A6) 1434 1434 … … 1442 1442 F02L120: move TRG(A6),A0 1443 1443 add.l A0,A0 1444 add.l # _veltab,A01444 add.l #veltab,A0 1445 1445 move (A0),TSRCVAL(A6) 1446 1446 … … 1454 1454 F02L121: move TRG(A6),A0 1455 1455 add.l A0,A0 1456 add.l # _prstab,A01456 add.l #prstab,A0 1457 1457 move (A0),TSRCVAL(A6) 1458 1458 … … 1512 1512 F02L139: move.l PT(A6),A0 1513 1513 move 4(A0),(sp) 1514 jsr _xgetran1514 jsr xgetran 1515 1515 ext.l D0 1516 1516 move.l D0,LTMP(A6) … … 1540 1540 move D0,A0 1541 1541 add.l A0,A0 1542 move.l # _ptoftab,A11542 move.l #ptoftab,A1 1543 1543 move 0(A0,A1.l),D0 1544 1544 ext.l D0 … … 1554 1554 F02L142: move TRG(A6),A0 1555 1555 add.l A0,A0 1556 move.l # _veltab,A11556 move.l #veltab,A1 1557 1557 move 0(A0,A1.l),D0 1558 1558 ext.l D0 … … 1570 1570 F02L143: move TRG(A6),A0 1571 1571 add.l A0,A0 1572 move.l # _prstab,A11572 move.l #prstab,A1 1573 1573 move 0(A0,A1.l),D0 1574 1574 ext.l D0 … … 1593 1593 add.l D1,D0 1594 1594 move.l D0,A0 1595 move.l # _valents,A11595 move.l #valents,A1 1596 1596 clr.l D0 1597 1597 move 8(A0,A1.l),D0 … … 1660 1660 move.w D0,D2 1661 1661 andi.w #0xFFF0,D0 1662 move.w _timemlt,D11662 move.w timemlt,D1 1663 1663 muls D1,D0 1664 1664 move.l #15,D1 … … 1671 1671 move D2,A0 1672 1672 add.l A0,A0 1673 add.l # _expbit,A01673 add.l #expbit,A0 1674 1674 move (A0),R_FPEXP 1675 1675 … … 1827 1827 ext.l D0 1828 1828 move.l D0,A_FPU 1829 add.l # _io_fpu+0x4000,A_FPU1829 add.l #io_fpu+0x4000,A_FPU 1830 1830 1831 1831 | fp = &ip->idhfnc[3]; … … 1864 1864 lsl.l #2,D0 1865 1865 add.l D1,D0 1866 add.l # _valents,D01866 add.l #valents,D0 1867 1867 move.l D0,VEP(A6) 1868 1868 … … 1872 1872 add.l A0,A0 1873 1873 add.l A0,A0 1874 add.l # _vpsms,A01874 add.l #vpsms,A0 1875 1875 move.l (A0),A_SMP 1876 1876 … … 1953 1953 1954 1954 F03L117: move MLTVAL(A6),(sp) 1955 jsr _xgetran1955 jsr xgetran 1956 1956 move D0,TSRCVAL(A6) 1957 1957 … … 1979 1979 move D0,A0 1980 1980 add.l A0,A0 1981 add.l # _ptoftab,A01981 add.l #ptoftab,A0 1982 1982 move (A0),TSRCVAL(A6) 1983 1983 … … 1991 1991 F03L120: move TRG(A6),A0 1992 1992 add.l A0,A0 1993 add.l # _veltab,A01993 add.l #veltab,A0 1994 1994 move (A0),TSRCVAL(A6) 1995 1995 … … 2003 2003 F03L121: move TRG(A6),A0 2004 2004 add.l A0,A0 2005 add.l # _prstab,A02005 add.l #prstab,A0 2006 2006 move (A0),TSRCVAL(A6) 2007 2007 … … 2061 2061 F03L139: move.l PT(A6),A0 2062 2062 move 4(A0),(sp) 2063 jsr _xgetran2063 jsr xgetran 2064 2064 ext.l D0 2065 2065 move.l D0,LTMP(A6) … … 2089 2089 move D0,A0 2090 2090 add.l A0,A0 2091 move.l # _ptoftab,A12091 move.l #ptoftab,A1 2092 2092 move 0(A0,A1.l),D0 2093 2093 ext.l D0 … … 2103 2103 F03L142: move TRG(A6),A0 2104 2104 add.l A0,A0 2105 move.l # _veltab,A12105 move.l #veltab,A1 2106 2106 move 0(A0,A1.l),D0 2107 2107 ext.l D0 … … 2119 2119 F03L143: move TRG(A6),A0 2120 2120 add.l A0,A0 2121 move.l # _prstab,A12121 move.l #prstab,A1 2122 2122 move 0(A0,A1.l),D0 2123 2123 ext.l D0 … … 2142 2142 add.l D1,D0 2143 2143 move.l D0,A0 2144 move.l # _valents,A12144 move.l #valents,A1 2145 2145 clr.l D0 2146 2146 move 8(A0,A1.l),D0 … … 2209 2209 move.w D0,D2 2210 2210 andi.w #0xFFF0,D0 2211 move.w _timemlt,D12211 move.w timemlt,D1 2212 2212 muls D1,D0 2213 2213 move.l #15,D1 … … 2220 2220 move D2,A0 2221 2221 add.l A0,A0 2222 add.l # _expbit,A02222 add.l #expbit,A0 2223 2223 move (A0),R_FPEXP 2224 2224 … … 2376 2376 ext.l D0 2377 2377 move.l D0,A_FPU 2378 add.l # _io_fpu+0x4000,A_FPU2378 add.l #io_fpu+0x4000,A_FPU 2379 2379 2380 2380 | fp = &ip->idhfnc[4]; … … 2390 2390 | output resonance via table lookup with FPU interrupts off 2391 2391 2392 lea _rsntab,A02392 lea rsntab,A0 2393 2393 clr.w D0 2394 2394 move.b 9(A_FP),D0 … … 2401 2401 ext.l D0 2402 2402 move.l D0,A0 2403 add.l # _io_fpu+0x4000,A02403 add.l #io_fpu+0x4000,A0 2404 2404 move.w sr,OLDI(A6) 2405 2405 move.w #FPU_DI,sr … … 2440 2440 lsl.l #2,D0 2441 2441 add.l D1,D0 2442 add.l # _valents,D02442 add.l #valents,D0 2443 2443 move.l D0,VEP(A6) 2444 2444 … … 2448 2448 add.l A0,A0 2449 2449 add.l A0,A0 2450 add.l # _vpsms,A02450 add.l #vpsms,A0 2451 2451 move.l (A0),A_SMP 2452 2452 … … 2529 2529 2530 2530 F04L117: move MLTVAL(A6),(sp) 2531 jsr _xgetran2531 jsr xgetran 2532 2532 move D0,TSRCVAL(A6) 2533 2533 … … 2555 2555 move D0,A0 2556 2556 add.l A0,A0 2557 add.l # _ptoftab,A02557 add.l #ptoftab,A0 2558 2558 move (A0),TSRCVAL(A6) 2559 2559 … … 2567 2567 F04L120: move TRG(A6),A0 2568 2568 add.l A0,A0 2569 add.l # _veltab,A02569 add.l #veltab,A0 2570 2570 move (A0),TSRCVAL(A6) 2571 2571 … … 2579 2579 F04L121: move TRG(A6),A0 2580 2580 add.l A0,A0 2581 add.l # _prstab,A02581 add.l #prstab,A0 2582 2582 move (A0),TSRCVAL(A6) 2583 2583 … … 2656 2656 F04L139: move.l PT(A6),A0 2657 2657 move 4(A0),(sp) 2658 jsr _xgetran2658 jsr xgetran 2659 2659 ext.l D0 2660 2660 move.l D0,LTMP(A6) … … 2684 2684 move D0,A0 2685 2685 add.l A0,A0 2686 move.l # _ptoftab,A12686 move.l #ptoftab,A1 2687 2687 move 0(A0,A1.l),D0 2688 2688 ext.l D0 … … 2698 2698 F04L142: move TRG(A6),A0 2699 2699 add.l A0,A0 2700 move.l # _veltab,A12700 move.l #veltab,A1 2701 2701 move 0(A0,A1.l),D0 2702 2702 ext.l D0 … … 2714 2714 F04L143: move TRG(A6),A0 2715 2715 add.l A0,A0 2716 move.l # _prstab,A12716 move.l #prstab,A1 2717 2717 move 0(A0,A1.l),D0 2718 2718 ext.l D0 … … 2737 2737 add.l D1,D0 2738 2738 move.l D0,A0 2739 move.l # _valents,A12739 move.l #valents,A1 2740 2740 clr.l D0 2741 2741 move 8(A0,A1.l),D0 … … 2804 2804 move.w D0,D2 2805 2805 andi.w #0xFFF0,D0 2806 move.w _timemlt,D12806 move.w timemlt,D1 2807 2807 muls D1,D0 2808 2808 move.l #15,D1 … … 2815 2815 move D2,A0 2816 2816 add.l A0,A0 2817 add.l # _expbit,A02817 add.l #expbit,A0 2818 2818 move (A0),R_FPEXP 2819 2819 … … 2990 2990 ext.l D0 2991 2991 move.l D0,A_FPU 2992 add.l # _io_fpu+0x4000,A_FPU2992 add.l #io_fpu+0x4000,A_FPU 2993 2993 2994 2994 | fp = &ip->idhfnc[5]; … … 3027 3027 lsl.l #2,D0 3028 3028 add.l D1,D0 3029 add.l # _valents,D03029 add.l #valents,D0 3030 3030 move.l D0,VEP(A6) 3031 3031 … … 3035 3035 add.l A0,A0 3036 3036 add.l A0,A0 3037 add.l # _vpsms,A03037 add.l #vpsms,A0 3038 3038 move.l (A0),A_SMP 3039 3039 … … 3116 3116 3117 3117 F05L117: move MLTVAL(A6),(sp) 3118 jsr _xgetran3118 jsr xgetran 3119 3119 move D0,TSRCVAL(A6) 3120 3120 … … 3142 3142 move D0,A0 3143 3143 add.l A0,A0 3144 add.l # _ptoftab,A03144 add.l #ptoftab,A0 3145 3145 move (A0),TSRCVAL(A6) 3146 3146 … … 3154 3154 F05L120: move TRG(A6),A0 3155 3155 add.l A0,A0 3156 add.l # _veltab,A03156 add.l #veltab,A0 3157 3157 move (A0),TSRCVAL(A6) 3158 3158 … … 3166 3166 F05L121: move TRG(A6),A0 3167 3167 add.l A0,A0 3168 add.l # _prstab,A03168 add.l #prstab,A0 3169 3169 move (A0),TSRCVAL(A6) 3170 3170 … … 3214 3214 F05L139: move.l PT(A6),A0 3215 3215 move 4(A0),(sp) 3216 jsr _xgetran3216 jsr xgetran 3217 3217 ext.l D0 3218 3218 move.l D0,LTMP(A6) … … 3242 3242 move D0,A0 3243 3243 add.l A0,A0 3244 move.l # _ptoftab,A13244 move.l #ptoftab,A1 3245 3245 move 0(A0,A1.l),D0 3246 3246 ext.l D0 … … 3256 3256 F05L142: move TRG(A6),A0 3257 3257 add.l A0,A0 3258 move.l # _veltab,A13258 move.l #veltab,A1 3259 3259 move 0(A0,A1.l),D0 3260 3260 ext.l D0 … … 3272 3272 F05L143: move TRG(A6),A0 3273 3273 add.l A0,A0 3274 move.l # _prstab,A13274 move.l #prstab,A1 3275 3275 move 0(A0,A1.l),D0 3276 3276 ext.l D0 … … 3295 3295 add.l D1,D0 3296 3296 move.l D0,A0 3297 move.l # _valents,A13297 move.l #valents,A1 3298 3298 clr.l D0 3299 3299 move 8(A0,A1.l),D0 … … 3362 3362 move.w D0,D2 3363 3363 andi.w #0xFFF0,D0 3364 move.w _timemlt,D13364 move.w timemlt,D1 3365 3365 muls D1,D0 3366 3366 move.l #15,D1 … … 3373 3373 move D2,A0 3374 3374 add.l A0,A0 3375 add.l # _expbit,A03375 add.l #expbit,A0 3376 3376 move (A0),R_FPEXP 3377 3377 … … 3549 3549 ext.l D0 3550 3550 move.l D0,A_FPU 3551 add.l # _io_fpu+0x4000,A_FPU3551 add.l #io_fpu+0x4000,A_FPU 3552 3552 3553 3553 | fp = &ip->idhfnc[6]; … … 3586 3586 lsl.l #2,D0 3587 3587 add.l D1,D0 3588 add.l # _valents,D03588 add.l #valents,D0 3589 3589 move.l D0,VEP(A6) 3590 3590 … … 3594 3594 add.l A0,A0 3595 3595 add.l A0,A0 3596 add.l # _vpsms,A03596 add.l #vpsms,A0 3597 3597 move.l (A0),A_SMP 3598 3598 … … 3675 3675 3676 3676 F06L117: move MLTVAL(A6),(sp) 3677 jsr _xgetran3677 jsr xgetran 3678 3678 move D0,TSRCVAL(A6) 3679 3679 … … 3701 3701 move D0,A0 3702 3702 add.l A0,A0 3703 add.l # _ptoftab,A03703 add.l #ptoftab,A0 3704 3704 move (A0),TSRCVAL(A6) 3705 3705 … … 3713 3713 F06L120: move TRG(A6),A0 3714 3714 add.l A0,A0 3715 add.l # _veltab,A03715 add.l #veltab,A0 3716 3716 move (A0),TSRCVAL(A6) 3717 3717 … … 3725 3725 F06L121: move TRG(A6),A0 3726 3726 add.l A0,A0 3727 add.l # _prstab,A03727 add.l #prstab,A0 3728 3728 move (A0),TSRCVAL(A6) 3729 3729 … … 3773 3773 F06L139: move.l PT(A6),A0 3774 3774 move 4(A0),(sp) 3775 jsr _xgetran3775 jsr xgetran 3776 3776 ext.l D0 3777 3777 move.l D0,LTMP(A6) … … 3801 3801 move D0,A0 3802 3802 add.l A0,A0 3803 move.l # _ptoftab,A13803 move.l #ptoftab,A1 3804 3804 move 0(A0,A1.l),D0 3805 3805 ext.l D0 … … 3815 3815 F06L142: move TRG(A6),A0 3816 3816 add.l A0,A0 3817 move.l # _veltab,A13817 move.l #veltab,A1 3818 3818 move 0(A0,A1.l),D0 3819 3819 ext.l D0 … … 3831 3831 F06L143: move TRG(A6),A0 3832 3832 add.l A0,A0 3833 move.l # _prstab,A13833 move.l #prstab,A1 3834 3834 move 0(A0,A1.l),D0 3835 3835 ext.l D0 … … 3854 3854 add.l D1,D0 3855 3855 move.l D0,A0 3856 move.l # _valents,A13856 move.l #valents,A1 3857 3857 clr.l D0 3858 3858 move 8(A0,A1.l),D0 … … 3921 3921 move.w D0,D2 3922 3922 andi.w #0xFFF0,D0 3923 move.w _timemlt,D13923 move.w timemlt,D1 3924 3924 muls D1,D0 3925 3925 move.l #15,D1 … … 3932 3932 move D2,A0 3933 3933 add.l A0,A0 3934 add.l # _expbit,A03934 add.l #expbit,A0 3935 3935 move (A0),R_FPEXP 3936 3936 … … 4074 4074 ext.l D0 4075 4075 move.l D0,A_FPU 4076 add.l # _io_fpu+0x4000,A_FPU4076 add.l #io_fpu+0x4000,A_FPU 4077 4077 4078 4078 | fp = &ip->idhfnc[7]; … … 4111 4111 lsl.l #2,D0 4112 4112 add.l D1,D0 4113 add.l # _valents,D04113 add.l #valents,D0 4114 4114 move.l D0,VEP(A6) 4115 4115 … … 4119 4119 add.l A0,A0 4120 4120 add.l A0,A0 4121 add.l # _vpsms,A04121 add.l #vpsms,A0 4122 4122 move.l (A0),A_SMP 4123 4123 … … 4200 4200 4201 4201 F07L117: move MLTVAL(A6),(sp) 4202 jsr _xgetran4202 jsr xgetran 4203 4203 move D0,TSRCVAL(A6) 4204 4204 … … 4226 4226 move D0,A0 4227 4227 add.l A0,A0 4228 add.l # _ptoftab,A04228 add.l #ptoftab,A0 4229 4229 move (A0),TSRCVAL(A6) 4230 4230 … … 4238 4238 F07L120: move TRG(A6),A0 4239 4239 add.l A0,A0 4240 add.l # _veltab,A04240 add.l #veltab,A0 4241 4241 move (A0),TSRCVAL(A6) 4242 4242 … … 4250 4250 F07L121: move TRG(A6),A0 4251 4251 add.l A0,A0 4252 add.l # _prstab,A04252 add.l #prstab,A0 4253 4253 move (A0),TSRCVAL(A6) 4254 4254 … … 4298 4298 F07L139: move.l PT(A6),A0 4299 4299 move 4(A0),(sp) 4300 jsr _xgetran4300 jsr xgetran 4301 4301 ext.l D0 4302 4302 move.l D0,LTMP(A6) … … 4326 4326 move D0,A0 4327 4327 add.l A0,A0 4328 move.l # _ptoftab,A14328 move.l #ptoftab,A1 4329 4329 move 0(A0,A1.l),D0 4330 4330 ext.l D0 … … 4340 4340 F07L142: move TRG(A6),A0 4341 4341 add.l A0,A0 4342 move.l # _veltab,A14342 move.l #veltab,A1 4343 4343 move 0(A0,A1.l),D0 4344 4344 ext.l D0 … … 4356 4356 F07L143: move TRG(A6),A0 4357 4357 add.l A0,A0 4358 move.l # _prstab,A14358 move.l #prstab,A1 4359 4359 move 0(A0,A1.l),D0 4360 4360 ext.l D0 … … 4379 4379 add.l D1,D0 4380 4380 move.l D0,A0 4381 move.l # _valents,A14381 move.l #valents,A1 4382 4382 clr.l D0 4383 4383 move 8(A0,A1.l),D0 … … 4446 4446 move.w D0,D2 4447 4447 andi.w #0xFFF0,D0 4448 move.w _timemlt,D14448 move.w timemlt,D1 4449 4449 muls D1,D0 4450 4450 move.l #15,D1 … … 4457 4457 move D2,A0 4458 4458 add.l A0,A0 4459 add.l # _expbit,A04459 add.l #expbit,A0 4460 4460 move (A0),R_FPEXP 4461 4461 … … 4599 4599 ext.l D0 4600 4600 move.l D0,A_FPU 4601 add.l # _io_fpu+0x4000,A_FPU4601 add.l #io_fpu+0x4000,A_FPU 4602 4602 4603 4603 | fp = &ip->idhfnc[8]; … … 4636 4636 lsl.l #2,D0 4637 4637 add.l D1,D0 4638 add.l # _valents,D04638 add.l #valents,D0 4639 4639 move.l D0,VEP(A6) 4640 4640 … … 4644 4644 add.l A0,A0 4645 4645 add.l A0,A0 4646 add.l # _vpsms,A04646 add.l #vpsms,A0 4647 4647 move.l (A0),A_SMP 4648 4648 … … 4725 4725 4726 4726 F08L117: move MLTVAL(A6),(sp) 4727 jsr _xgetran4727 jsr xgetran 4728 4728 move D0,TSRCVAL(A6) 4729 4729 … … 4751 4751 move D0,A0 4752 4752 add.l A0,A0 4753 add.l # _ptoftab,A04753 add.l #ptoftab,A0 4754 4754 move (A0),TSRCVAL(A6) 4755 4755 … … 4763 4763 F08L120: move TRG(A6),A0 4764 4764 add.l A0,A0 4765 add.l # _veltab,A04765 add.l #veltab,A0 4766 4766 move (A0),TSRCVAL(A6) 4767 4767 … … 4775 4775 F08L121: move TRG(A6),A0 4776 4776 add.l A0,A0 4777 add.l # _prstab,A04777 add.l #prstab,A0 4778 4778 move (A0),TSRCVAL(A6) 4779 4779 … … 4823 4823 F08L139: move.l PT(A6),A0 4824 4824 move 4(A0),(sp) 4825 jsr _xgetran4825 jsr xgetran 4826 4826 ext.l D0 4827 4827 move.l D0,LTMP(A6) … … 4851 4851 move D0,A0 4852 4852 add.l A0,A0 4853 move.l # _ptoftab,A14853 move.l #ptoftab,A1 4854 4854 move 0(A0,A1.l),D0 4855 4855 ext.l D0 … … 4865 4865 F08L142: move TRG(A6),A0 4866 4866 add.l A0,A0 4867 move.l # _veltab,A14867 move.l #veltab,A1 4868 4868 move 0(A0,A1.l),D0 4869 4869 ext.l D0 … … 4881 4881 F08L143: move TRG(A6),A0 4882 4882 add.l A0,A0 4883 move.l # _prstab,A14883 move.l #prstab,A1 4884 4884 move 0(A0,A1.l),D0 4885 4885 ext.l D0 … … 4904 4904 add.l D1,D0 4905 4905 move.l D0,A0 4906 move.l # _valents,A14906 move.l #valents,A1 4907 4907 clr.l D0 4908 4908 move 8(A0,A1.l),D0 … … 4971 4971 move.w D0,D2 4972 4972 andi.w #0xFFF0,D0 4973 move.w _timemlt,D14973 move.w timemlt,D1 4974 4974 muls D1,D0 4975 4975 move.l #15,D1 … … 4982 4982 move D2,A0 4983 4983 add.l A0,A0 4984 add.l # _expbit,A04984 add.l #expbit,A0 4985 4985 move (A0),R_FPEXP 4986 4986 … … 5124 5124 ext.l D0 5125 5125 move.l D0,A_FPU 5126 add.l # _io_fpu+0x4000,A_FPU5126 add.l #io_fpu+0x4000,A_FPU 5127 5127 5128 5128 | fp = &ip->idhfnc[9]; … … 5161 5161 lsl.l #2,D0 5162 5162 add.l D1,D0 5163 add.l # _valents,D05163 add.l #valents,D0 5164 5164 move.l D0,VEP(A6) 5165 5165 … … 5169 5169 add.l A0,A0 5170 5170 add.l A0,A0 5171 add.l # _vpsms,A05171 add.l #vpsms,A0 5172 5172 move.l (A0),A_SMP 5173 5173 … … 5250 5250 5251 5251 F09L117: move MLTVAL(A6),(sp) 5252 jsr _xgetran5252 jsr xgetran 5253 5253 move D0,TSRCVAL(A6) 5254 5254 … … 5276 5276 move D0,A0 5277 5277 add.l A0,A0 5278 add.l # _ptoftab,A05278 add.l #ptoftab,A0 5279 5279 move (A0),TSRCVAL(A6) 5280 5280 … … 5288 5288 F09L120: move TRG(A6),A0 5289 5289 add.l A0,A0 5290 add.l # _veltab,A05290 add.l #veltab,A0 5291 5291 move (A0),TSRCVAL(A6) 5292 5292 … … 5300 5300 F09L121: move TRG(A6),A0 5301 5301 add.l A0,A0 5302 add.l # _prstab,A05302 add.l #prstab,A0 5303 5303 move (A0),TSRCVAL(A6) 5304 5304 … … 5348 5348 F09L139: move.l PT(A6),A0 5349 5349 move 4(A0),(sp) 5350 jsr _xgetran5350 jsr xgetran 5351 5351 ext.l D0 5352 5352 move.l D0,LTMP(A6) … … 5376 5376 move D0,A0 5377 5377 add.l A0,A0 5378 move.l # _ptoftab,A15378 move.l #ptoftab,A1 5379 5379 move 0(A0,A1.l),D0 5380 5380 ext.l D0 … … 5390 5390 F09L142: move TRG(A6),A0 5391 5391 add.l A0,A0 5392 move.l # _veltab,A15392 move.l #veltab,A1 5393 5393 move 0(A0,A1.l),D0 5394 5394 ext.l D0 … … 5406 5406 F09L143: move TRG(A6),A0 5407 5407 add.l A0,A0 5408 move.l # _prstab,A15408 move.l #prstab,A1 5409 5409 move 0(A0,A1.l),D0 5410 5410 ext.l D0 … … 5429 5429 add.l D1,D0 5430 5430 move.l D0,A0 5431 move.l # _valents,A15431 move.l #valents,A1 5432 5432 clr.l D0 5433 5433 move 8(A0,A1.l),D0 … … 5496 5496 move.w D0,D2 5497 5497 andi.w #0xFFF0,D0 5498 move.w _timemlt,D15498 move.w timemlt,D1 5499 5499 muls D1,D0 5500 5500 move.l #15,D1 … … 5507 5507 move D2,A0 5508 5508 add.l A0,A0 5509 add.l # _expbit,A05509 add.l #expbit,A0 5510 5510 move (A0),R_FPEXP 5511 5511 … … 5649 5649 ext.l D0 5650 5650 move.l D0,A_FPU 5651 add.l # _io_fpu+0x4000,A_FPU5651 add.l #io_fpu+0x4000,A_FPU 5652 5652 5653 5653 | fp = &ip->idhfnc[10]; … … 5686 5686 lsl.l #2,D0 5687 5687 add.l D1,D0 5688 add.l # _valents,D05688 add.l #valents,D0 5689 5689 move.l D0,VEP(A6) 5690 5690 … … 5694 5694 add.l A0,A0 5695 5695 add.l A0,A0 5696 add.l # _vpsms,A05696 add.l #vpsms,A0 5697 5697 move.l (A0),A_SMP 5698 5698 … … 5775 5775 5776 5776 F10L117: move MLTVAL(A6),(sp) 5777 jsr _xgetran5777 jsr xgetran 5778 5778 move D0,TSRCVAL(A6) 5779 5779 … … 5801 5801 move D0,A0 5802 5802 add.l A0,A0 5803 add.l # _ptoftab,A05803 add.l #ptoftab,A0 5804 5804 move (A0),TSRCVAL(A6) 5805 5805 … … 5813 5813 F10L120: move TRG(A6),A0 5814 5814 add.l A0,A0 5815 add.l # _veltab,A05815 add.l #veltab,A0 5816 5816 move (A0),TSRCVAL(A6) 5817 5817 … … 5825 5825 F10L121: move TRG(A6),A0 5826 5826 add.l A0,A0 5827 add.l # _prstab,A05827 add.l #prstab,A0 5828 5828 move (A0),TSRCVAL(A6) 5829 5829 … … 5873 5873 F10L139: move.l PT(A6),A0 5874 5874 move 4(A0),(sp) 5875 jsr _xgetran5875 jsr xgetran 5876 5876 ext.l D0 5877 5877 move.l D0,LTMP(A6) … … 5901 5901 move D0,A0 5902 5902 add.l A0,A0 5903 move.l # _ptoftab,A15903 move.l #ptoftab,A1 5904 5904 move 0(A0,A1.l),D0 5905 5905 ext.l D0 … … 5915 5915 F10L142: move TRG(A6),A0 5916 5916 add.l A0,A0 5917 move.l # _veltab,A15917 move.l #veltab,A1 5918 5918 move 0(A0,A1.l),D0 5919 5919 ext.l D0 … … 5931 5931 F10L143: move TRG(A6),A0 5932 5932 add.l A0,A0 5933 move.l # _prstab,A15933 move.l #prstab,A1 5934 5934 move 0(A0,A1.l),D0 5935 5935 ext.l D0 … … 5954 5954 add.l D1,D0 5955 5955 move.l D0,A0 5956 move.l # _valents,A15956 move.l #valents,A1 5957 5957 clr.l D0 5958 5958 move 8(A0,A1.l),D0 … … 6021 6021 move.w D0,D2 6022 6022 andi.w #0xFFF0,D0 6023 move.w _timemlt,D16023 move.w timemlt,D1 6024 6024 muls D1,D0 6025 6025 move.l #15,D1 … … 6032 6032 move D2,A0 6033 6033 add.l A0,A0 6034 add.l # _expbit,A06034 add.l #expbit,A0 6035 6035 move (A0),R_FPEXP 6036 6036 … … 6174 6174 ext.l D0 6175 6175 move.l D0,A_FPU 6176 add.l # _io_fpu+0x4000,A_FPU6176 add.l #io_fpu+0x4000,A_FPU 6177 6177 6178 6178 | fp = &ip->idhfnc[11]; … … 6211 6211 lsl.l #2,D0 6212 6212 add.l D1,D0 6213 add.l # _valents,D06213 add.l #valents,D0 6214 6214 move.l D0,VEP(A6) 6215 6215 … … 6219 6219 add.l A0,A0 6220 6220 add.l A0,A0 6221 add.l # _vpsms,A06221 add.l #vpsms,A0 6222 6222 move.l (A0),A_SMP 6223 6223 … … 6300 6300 6301 6301 F11L117: move MLTVAL(A6),(sp) 6302 jsr _xgetran6302 jsr xgetran 6303 6303 move D0,TSRCVAL(A6) 6304 6304 … … 6326 6326 move D0,A0 6327 6327 add.l A0,A0 6328 add.l # _ptoftab,A06328 add.l #ptoftab,A0 6329 6329 move (A0),TSRCVAL(A6) 6330 6330 … … 6338 6338 F11L120: move TRG(A6),A0 6339 6339 add.l A0,A0 6340 add.l # _veltab,A06340 add.l #veltab,A0 6341 6341 move (A0),TSRCVAL(A6) 6342 6342 … … 6350 6350 F11L121: move TRG(A6),A0 6351 6351 add.l A0,A0 6352 add.l # _prstab,A06352 add.l #prstab,A0 6353 6353 move (A0),TSRCVAL(A6) 6354 6354 … … 6398 6398 F11L139: move.l PT(A6),A0 6399 6399 move 4(A0),(sp) 6400 jsr _xgetran6400 jsr xgetran 6401 6401 ext.l D0 6402 6402 move.l D0,LTMP(A6) … … 6426 6426 move D0,A0 6427 6427 add.l A0,A0 6428 move.l # _ptoftab,A16428 move.l #ptoftab,A1 6429 6429 move 0(A0,A1.l),D0 6430 6430 ext.l D0 … … 6440 6440 F11L142: move TRG(A6),A0 6441 6441 add.l A0,A0 6442 move.l # _veltab,A16442 move.l #veltab,A1 6443 6443 move 0(A0,A1.l),D0 6444 6444 ext.l D0 … … 6456 6456 F11L143: move TRG(A6),A0 6457 6457 add.l A0,A0 6458 move.l # _prstab,A16458 move.l #prstab,A1 6459 6459 move 0(A0,A1.l),D0 6460 6460 ext.l D0 … … 6479 6479 add.l D1,D0 6480 6480 move.l D0,A0 6481 move.l # _valents,A16481 move.l #valents,A1 6482 6482 clr.l D0 6483 6483 move 8(A0,A1.l),D0 … … 6546 6546 move.w D0,D2 6547 6547 andi.w #0xFFF0,D0 6548 move.w _timemlt,D16548 move.w timemlt,D1 6549 6549 muls D1,D0 6550 6550 move.l #15,D1 … … 6557 6557 move D2,A0 6558 6558 add.l A0,A0 6559 add.l # _expbit,A06559 add.l #expbit,A0 6560 6560 move (A0),R_FPEXP 6561 6561 … … 6699 6699 ext.l D0 6700 6700 move.l D0,A_FPU 6701 add.l # _io_fpu+0x4000,A_FPU6701 add.l #io_fpu+0x4000,A_FPU 6702 6702 6703 6703 | fp = &ip->idhfnc[12]; … … 6736 6736 lsl.l #2,D0 6737 6737 add.l D1,D0 6738 add.l # _valents,D06738 add.l #valents,D0 6739 6739 move.l D0,VEP(A6) 6740 6740 … … 6744 6744 add.l A0,A0 6745 6745 add.l A0,A0 6746 add.l # _vpsms,A06746 add.l #vpsms,A0 6747 6747 move.l (A0),A_SMP 6748 6748 … … 6825 6825 6826 6826 F12L117: move MLTVAL(A6),(sp) 6827 jsr _xgetran6827 jsr xgetran 6828 6828 move D0,TSRCVAL(A6) 6829 6829 … … 6851 6851 move D0,A0 6852 6852 add.l A0,A0 6853 add.l # _ptoftab,A06853 add.l #ptoftab,A0 6854 6854 move (A0),TSRCVAL(A6) 6855 6855 … … 6863 6863 F12L120: move TRG(A6),A0 6864 6864 add.l A0,A0 6865 add.l # _veltab,A06865 add.l #veltab,A0 6866 6866 move (A0),TSRCVAL(A6) 6867 6867 … … 6875 6875 F12L121: move TRG(A6),A0 6876 6876 add.l A0,A0 6877 add.l # _prstab,A06877 add.l #prstab,A0 6878 6878 move (A0),TSRCVAL(A6) 6879 6879 … … 6923 6923 F12L139: move.l PT(A6),A0 6924 6924 move 4(A0),(sp) 6925 jsr _xgetran6925 jsr xgetran 6926 6926 ext.l D0 6927 6927 move.l D0,LTMP(A6) … … 6951 6951 move D0,A0 6952 6952 add.l A0,A0 6953 move.l # _ptoftab,A16953 move.l #ptoftab,A1 6954 6954 move 0(A0,A1.l),D0 6955 6955 ext.l D0 … … 6965 6965 F12L142: move TRG(A6),A0 6966 6966 add.l A0,A0 6967 move.l # _veltab,A16967 move.l #veltab,A1 6968 6968 move 0(A0,A1.l),D0 6969 6969 ext.l D0 … … 6981 6981 F12L143: move TRG(A6),A0 6982 6982 add.l A0,A0 6983 move.l # _prstab,A16983 move.l #prstab,A1 6984 6984 move 0(A0,A1.l),D0 6985 6985 ext.l D0 … … 7004 7004 add.l D1,D0 7005 7005 move.l D0,A0 7006 move.l # _valents,A17006 move.l #valents,A1 7007 7007 clr.l D0 7008 7008 move 8(A0,A1.l),D0 … … 7071 7071 move.w D0,D2 7072 7072 andi.w #0xFFF0,D0 7073 move.w _timemlt,D17073 move.w timemlt,D1 7074 7074 muls D1,D0 7075 7075 move.l #15,D1 … … 7082 7082 move D2,A0 7083 7083 add.l A0,A0 7084 add.l # _expbit,A07084 add.l #expbit,A0 7085 7085 move (A0),R_FPEXP 7086 7086 … … 7518 7518 | vbtab -- vbuf pointer table -- indexed by voice number 7519 7519 | ----- --------------------------------------------- 7520 vbtab: .dc.l _vbufs7521 .dc.l _vbufs+VBLEN7522 .dc.l _vbufs+(2*VBLEN)7523 .dc.l _vbufs+(3*VBLEN)7524 .dc.l _vbufs+(4*VBLEN)7525 .dc.l _vbufs+(5*VBLEN)7526 .dc.l _vbufs+(6*VBLEN)7527 .dc.l _vbufs+(7*VBLEN)7528 .dc.l _vbufs+(8*VBLEN)7529 .dc.l _vbufs+(9*VBLEN)7530 .dc.l _vbufs+(10*VBLEN)7531 .dc.l _vbufs+(11*VBLEN)7520 vbtab: .dc.l vbufs 7521 .dc.l vbufs+VBLEN 7522 .dc.l vbufs+(2*VBLEN) 7523 .dc.l vbufs+(3*VBLEN) 7524 .dc.l vbufs+(4*VBLEN) 7525 .dc.l vbufs+(5*VBLEN) 7526 .dc.l vbufs+(6*VBLEN) 7527 .dc.l vbufs+(7*VBLEN) 7528 .dc.l vbufs+(8*VBLEN) 7529 .dc.l vbufs+(9*VBLEN) 7530 .dc.l vbufs+(10*VBLEN) 7531 .dc.l vbufs+(11*VBLEN) 7532 7532 7533 7533 .end -
ram/fpuint.s
r84c0125 r8325447 5 5 .text 6 6 7 .xdef _fpuint | process an FPU interrupt8 .xdef _fpuclr | reset the FPU9 .xdef _clrvce | quiet a voice10 11 .xdef _fputrap| a very good debug trap point12 13 .xdef _fp_resv| 'spare' function reset value table14 .xdef _fpuifnc| FPU interrupt code (voice / function)15 16 .xref _irand | ranged random number function17 .xref _scope | diagnostic scope function18 .xref _xgetran| random number function19 20 .xref _expbit21 .xref _funcndx22 .xref _initcfg23 .xref _ndisp24 .xref _pflist25 .xref _pfqhdr26 .xref _prstab27 .xref _ptoftab28 .xref _scopef29 .xref _timemlt30 .xref _trgtab31 .xref _valents32 .xref _vce2grp33 .xref _vce2trg34 .xref _veltab7 .xdef fpuint | process an FPU interrupt 8 .xdef fpuclr | reset the FPU 9 .xdef clrvce | quiet a voice 10 11 .xdef fputrap | a very good debug trap point 12 13 .xdef fp_resv | 'spare' function reset value table 14 .xdef fpuifnc | FPU interrupt code (voice / function) 15 16 .xref irand | ranged random number function 17 .xref scope | diagnostic scope function 18 .xref xgetran | random number function 19 20 .xref expbit 21 .xref funcndx 22 .xref initcfg 23 .xref ndisp 24 .xref pflist 25 .xref pfqhdr 26 .xref prstab 27 .xref ptoftab 28 .xref scopef 29 .xref timemlt 30 .xref trgtab 31 .xref valents 32 .xref vce2grp 33 .xref vce2trg 34 .xref veltab 35 35 36 36 .page … … 194 194 .page 195 195 | ------------------------------------------------------------------------------ 196 | _fpuint() -- process FPU interrupts196 | fpuint() -- process FPU interrupts 197 197 198 198 | void … … 204 204 | ------------------------------------------------------------------------------ 205 205 206 _fpuint:movem.l d0-d5/a0-a3,-(a7) | preserve registers we use206 fpuint: movem.l d0-d5/a0-a3,-(a7) | preserve registers we use 207 207 move.w FPUINT1,d0 | read FPU interrupt status 208 208 andi.w #0x00FF,d0 | mask out garbage in MS bits 209 move.w d0, _fpuifnc | save for later use210 move.w _ndisp,d1 | get display number209 move.w d0,fpuifnc | save for later use 210 move.w ndisp,d1 | get display number 211 211 cmpi.w #11,d1 | see if we display 212 212 bne nodisp | jump if not 213 213 214 tst.w _scopef | ...214 tst.w scopef | ... 215 215 beq nodisp | ... 216 216 217 217 move.w d0,-(a7) | display value 218 jsr _scope | ...218 jsr scope | ... 219 219 tst.w (a7)+ | ... 220 220 221 move.w _fpuifnc,d0 | get FPU status221 move.w fpuifnc,d0 | get FPU status 222 222 223 223 nodisp: move.w d0,d1 | save in d1 (becomes function offset) … … 227 227 228 228 lsl.w #3,d0 | develop funcndx[] index 229 lea _funcndx,a0 | setup funcndx[] base address229 lea funcndx,a0 | setup funcndx[] base address 230 230 231 231 tst.l 0(a0,d0.W) | see if function is defined … … 299 299 | ------------------------------------------------------------------------------ 300 300 301 _fputrap: jmp (a0) | dispatch to action handler301 fputrap: jmp (a0) | dispatch to action handler 302 302 303 303 .page … … 320 320 move.w d3,d0 | extract mantissa 321 321 andi.w #MSK_MNT,d0 | ... 322 mulu _timemlt,d0 | multiply by panel time pot value322 mulu timemlt,d0 | multiply by panel time pot value 323 323 lsr.l #8,d0 | ... and scale it 324 324 lsr.l #7,d0 | ... … … 326 326 andi.w #MSK_EXP,d3 | extract exponent code 327 327 add.w d3,d3 | look up decoded exponent 328 lea _expbit,a0 | ... in expbit328 lea expbit,a0 | ... in expbit 329 329 move.w 0(a0,d3.W),F_EXP(a3,d1.W) | send exponent to FPU 330 330 move.w PT_VAL(a2,d2.W),d3 | get the function value … … 348 348 movem.l d1-d2/a0-a2,-(a7) | preserve registers around call 349 349 move.w PT_VMLT(a2,d2.W),-(a7) | pass multiplier to xgetran() 350 jsr _xgetran| call for a random number350 jsr xgetran | call for a random number 351 351 tst.w (a7)+ | clean up stack 352 352 movem.l (a7)+,d1-d2/a0-a2 | restore registers … … 364 364 lsr.w #6,d0 | shift to a word index 365 365 andi.w #0x01FE,d0 | mask out extraneous bits 366 lea _ptoftab,a0 | get entry from ptoftab[]366 lea ptoftab,a0 | get entry from ptoftab[] 367 367 move.w 0(a0,d0.W),d5 | ... 368 368 bra applym | go apply the multiplier … … 385 385 move.w FH_TRG(a1),d0 | get the trigger number 386 386 add.w d0,d0 | ... as a word index 387 lea _veltab,a0 | ... into veltab[]387 lea veltab,a0 | ... into veltab[] 388 388 move.w 0(a0,d0.W),d5 | get the velocity from veltab[trg] 389 389 bra applym | go apply the multiplier … … 397 397 move.w FH_TRG(a1),d0 | get the trigger number 398 398 add.w d0,d0 | ... as a word index 399 lea _prstab,a0 | ... into prstab[]399 lea prstab,a0 | ... into prstab[] 400 400 move.w 0(a0,d0.W),d5 | get the pressure from prstab[trg] 401 401 bra applym | go apply the multiplier … … 405 405 | all other sources come out of the valents[] array 406 406 | ------------------------------------------------------------------------------ 407 srctyp4: lea _vce2grp,a0 | point at vce2grp[]408 move.w _fpuifnc,d5 | get voice number in d5407 srctyp4: lea vce2grp,a0 | point at vce2grp[] 408 move.w fpuifnc,d5 | get voice number in d5 409 409 lsr.w #3,d5 | ... 410 410 andi.w #0x001E,d5 | ... as a word index … … 417 417 lsl.w #2,d0 | ... via shift and add) 418 418 add.w d5,d0 | ... 419 lea _valents,a0 | get base of valents[]419 lea valents,a0 | get base of valents[] 420 420 move.w VT_VAL(a0,d0.W),d5 | get value 421 421 … … 556 556 | act1 -- AC_SUST -- pause if key is down (sustain) 557 557 | ---- ------------------------------------------ 558 act1: move.w _fpuifnc,d0 | get voice as a word index558 act1: move.w fpuifnc,d0 | get voice as a word index 559 559 lsr.w #3,d0 | ... 560 560 andi.w #0x001E,d0 | ... 561 lea _vce2trg,a0 | point at voice to trigger table561 lea vce2trg,a0 | point at voice to trigger table 562 562 move.w 0(a0,d0.W),d0 | get trigger table entry into d0 563 563 cmpi.w #-1,d0 | see if voice is free … … 570 570 bne act1a | sustain if so 571 571 572 lea _trgtab,a0 | point at trigger table572 lea trgtab,a0 | point at trigger table 573 573 tst.b 0(a0,d0.W) | check trigger status 574 574 beq act0 | continue function if not active 575 575 576 act1a: move.l _pfqhdr,d3 | see if any pflist entries remain576 act1a: move.l pfqhdr,d3 | see if any pflist entries remain 577 577 beq act0 | continue if not (shouldn't happen!) 578 578 … … 586 586 addi.w #PT_LEN,d2 | advance the point index 587 587 movea.l d3,a0 | acquire a new pflist entry 588 move.l (a0), _pfqhdr | ...589 move.l _pflist,(a0) | chain it to pflist590 move.l a0, _pflist | ...588 move.l (a0),pfqhdr | ... 589 move.l pflist,(a0) | chain it to pflist 590 move.l a0,pflist | ... 591 591 move.w FH_TRG(a1),PF_TRIG(a0) | set trigger number in entry 592 move.w _fpuifnc,PF_FUNC(a0) | set v/p word in entry592 move.w fpuifnc,PF_FUNC(a0) | set v/p word in entry 593 593 movem.l d1-d2/d4/a1-a3,PF_D1(a0) | set registers in entry 594 594 move.b FH_TMD(a1),d0 | stop the function … … 606 606 | act2 -- AC_ENBL -- stop if key is up 607 607 | ---- ---------------------------- 608 act2: move.w _fpuifnc,d0 | get voice as a word index608 act2: move.w fpuifnc,d0 | get voice as a word index 609 609 lsr.w #3,d0 | ... 610 610 andi.w #0x001E,d0 | ... 611 lea _vce2trg,a0 | check to see if voice is free611 lea vce2trg,a0 | check to see if voice is free 612 612 move.w 0(a0,d0.W),d0 | ... 613 613 cmpi.w #-1,d0 | ... … … 620 620 bne act0 | ... 621 621 622 lea _trgtab,a0 | check trigger table entry622 lea trgtab,a0 | check trigger table entry 623 623 tst.b 0(a0,d0.W) | ... 624 624 bne act0 | if trigger is active, continue … … 656 656 movem.l d1-d2/a0-a2,-(a7) | get ranged random number 657 657 move.w d0,-(a7) | ... 658 jsr _irand | ...658 jsr irand | ... 659 659 tst.w (a7)+ | ... 660 660 movem.l (a7)+,d1-d2/a0-a2 | ... … … 677 677 | act5 -- AC_KYUP -- jump if key is up 678 678 | ---- ---------------------------- 679 act5: move.w _fpuifnc,d0 | get voice as a word index679 act5: move.w fpuifnc,d0 | get voice as a word index 680 680 lsr.w #3,d0 | ... 681 681 andi.w #0x001E,d0 | ... 682 lea _vce2trg,a0 | check to see if voice is free682 lea vce2trg,a0 | check to see if voice is free 683 683 move.w 0(a0,d0.W),d0 | ... 684 684 cmpi.w #-1,d0 | ... … … 691 691 bne act0 | ... 692 692 693 lea _trgtab,a0 | check trigger table entry693 lea trgtab,a0 | check trigger table entry 694 694 tst.b 0(a0,d0.W) | see if the trigger is active 695 695 beq act3 | if not, do the jump … … 702 702 | act6 -- AC_KYDN -- jump if key is down 703 703 | ---- ------------------------------ 704 act6: move.w _fpuifnc,d0 | get voice as a word index704 act6: move.w fpuifnc,d0 | get voice as a word index 705 705 lsr.w #3,d0 | ... 706 706 andi.w #0x001E,d0 | ... 707 lea _vce2trg,a0 | check to see if voice is free707 lea vce2trg,a0 | check to see if voice is free 708 708 move.w 0(a0,d0.W),d0 | ... 709 709 cmpi.w #-1,d0 | ... … … 716 716 bne act3 | ... 717 717 718 lea _trgtab,a0 | check trigger table entry718 lea trgtab,a0 | check trigger table entry 719 719 tst.b 0(a0,d0.W) | see if the trigger is active 720 720 bne act3 | if so, do the jump … … 730 730 | ------------------------------------------------------------------------------ 731 731 732 | _fpuclr -- clear the FPU733 | ------ --------------732 | fpuclr -- clear the FPU 733 | ------ ------------- 734 734 735 735 | void … … 740 740 | ------------------------------------------------------------------------------ 741 741 742 _fpuclr:link a6,#0 | link stack frames742 fpuclr: link a6,#0 | link stack frames 743 743 move.w sr,-(a7) | save the interrupt level 744 744 ori.w #0x0700,sr | turn off interrupts 745 745 746 746 lea FPUFUNC,a0 | point at the first function 747 lea _fp_resv,a2 | point at reset value table747 lea fp_resv,a2 | point at reset value table 748 748 move.w #11,d1 | set the outer loop count 749 749 … … 854 854 .page 855 855 856 | _clrvce -- quiet a voice857 | ------ --------------856 | clrvce -- quiet a voice 857 | ------ ------------- 858 858 859 859 | void … … 863 863 | Quiet the voice by resetting the FPU functions it uses. 864 864 865 _clrvce:link a6,#0 | link stack frames865 clrvce: link a6,#0 | link stack frames 866 866 move.w sr,-(a7) | save the interrupt level 867 867 ori.w #0x0700,sr | turn off interrupts … … 964 964 | ------------------------------------------------------------------------------ 965 965 966 _fp_resv: .ds.w 12 | fpu spare function reset values967 _fpuifnc: .ds.w 1 | interrupting function number from FPU966 fp_resv: .ds.w 12 | fpu spare function reset values 967 fpuifnc: .ds.w 1 | interrupting function number from FPU 968 968 969 969 .end -
ram/procpfl.s
r84c0125 r8325447 5 5 .text 6 6 7 .xdef _procpfl7 .xdef procpfl 8 8 9 9 .xdef _curpf_f | current function (v/p) … … 11 11 .xdef _curpf_t | current trigger 12 12 13 .xref _irand14 .xref _xgetran15 16 .xref _expbit17 .xref _funcndx18 .xref _pflist19 .xref _pfqhdr20 .xref _prstab21 .xref _ptoftab22 .xref _timemlt23 .xref _trgtab24 .xref _valents25 .xref _vce2grp26 .xref _vce2trg27 .xref _veltab13 .xref irand 14 .xref xgetran 15 16 .xref expbit 17 .xref funcndx 18 .xref pflist 19 .xref pfqhdr 20 .xref prstab 21 .xref ptoftab 22 .xref timemlt 23 .xref trgtab 24 .xref valents 25 .xref vce2grp 26 .xref vce2trg 27 .xref veltab 28 28 29 29 .page … … 196 196 .page 197 197 | ------------------------------------------------------------------------------ 198 | _procpfl() -- process pendant functions198 | procpfl() -- process pendant functions 199 199 200 200 | void … … 208 208 | ------------------------------------------------------------------------------ 209 209 210 _procpfl: nop | FOR DEBUGGING PATCH210 procpfl: nop | FOR DEBUGGING PATCH 211 211 212 212 link a6,#0 | allocate stack frame … … 218 218 move.w TRIG(a6),d6 | get trigger we're processing 219 219 move.w d6,_curpf_t | ... 220 movea.l # _pflist,RPRV | point at 'previous' pflist entry220 movea.l #pflist,RPRV | point at 'previous' pflist entry 221 221 bra pfscan | go scan the chain 222 222 … … 241 241 242 242 pfnext: move.l (RCUR),(RPRV) | remove entry from pflist 243 move.l _pfqhdr,(RCUR) | chain entry to free list244 move.l RCUR, _pfqhdr | ...243 move.l pfqhdr,(RCUR) | chain entry to free list 244 move.l RCUR,pfqhdr | ... 245 245 bra pfscan | go look at next entry 246 246 … … 319 319 move.w d3,d0 | extract mantissa 320 320 andi.w #MSK_MNT,d0 | ... 321 mulu _timemlt,d0 | multiply by panel time pot value321 mulu timemlt,d0 | multiply by panel time pot value 322 322 lsr.l #8,d0 | ... and scale it 323 323 lsr.l #7,d0 | ... … … 325 325 andi.w #MSK_EXP,d3 | extract exponent code 326 326 add.w d3,d3 | look up decoded exponent 327 lea _expbit,a0 | ... in expbit327 lea expbit,a0 | ... in expbit 328 328 move.w 0(a0,d3.W),F_EXP(a3,d1.W) | send exponent to FPU 329 329 move.w PT_VAL(a2,d2.W),d3 | get the function value … … 348 348 movem.l d1-d2/a0-a2,-(a7) | preserve registers around call 349 349 move.w PT_VMLT(a2,d2.W),-(a7) | pass multiplier to xgetran() 350 jsr _xgetran| call for a random number350 jsr xgetran | call for a random number 351 351 tst.w (a7)+ | clean up stack 352 352 movem.l (a7)+,d1-d2/a0-a2 | restore registers … … 364 364 lsr.w #6,d0 | shift to a word index 365 365 andi.w #0x01FE,d0 | mask out extraneous bits 366 lea _ptoftab,a0 | get entry from ptoftab[]366 lea ptoftab,a0 | get entry from ptoftab[] 367 367 move.w 0(a0,d0.W),d5 | ... 368 368 bra applym | go apply the multiplier … … 385 385 move.w FH_TRG(a1),d0 | get the trigger number 386 386 add.w d0,d0 | ... as a word index 387 lea _veltab,a0 | ... into veltab[]387 lea veltab,a0 | ... into veltab[] 388 388 move.w 0(a0,d0.W),d5 | get the velocity from veltab[trg] 389 389 bra applym | go apply the multiplier … … 397 397 move.w FH_TRG(a1),d0 | get the trigger number 398 398 add.w d0,d0 | ... as a word index 399 lea _prstab,a0 | ... into prstab[]399 lea prstab,a0 | ... into prstab[] 400 400 move.w 0(a0,d0.W),d5 | get the pressure from prstab[trg] 401 401 bra applym | go apply the multiplier … … 405 405 | all other sources come out of the valents[] array 406 406 | ------------------------------------------------------------------------------ 407 srctyp4: lea _vce2grp,a0 | point at vce2grp[]407 srctyp4: lea vce2grp,a0 | point at vce2grp[] 408 408 move.w _curpf_f,d5 | get voice number in d5 409 409 lsr.w #3,d5 | ... … … 417 417 lsl.w #2,d0 | ... via shift and add) 418 418 add.w d5,d0 | ... 419 lea _valents,a0 | get base of valents[]419 lea valents,a0 | get base of valents[] 420 420 move.w VT_VAL(a0,d0.W),d5 | get value 421 421 … … 559 559 lsr.w #3,d0 | ... 560 560 andi.w #0x001E,d0 | ... 561 lea _vce2trg,a0 | check to see if voice is free561 lea vce2trg,a0 | check to see if voice is free 562 562 move.w 0(a0,d0.W),d0 | ... 563 563 cmpi.w #-1,d0 | ... … … 570 570 bne act0 | ... 571 571 572 lea _trgtab,a0 | check trigger table entry572 lea trgtab,a0 | check trigger table entry 573 573 tst.b 0(a0,d0.W) | ... 574 574 bne act0 | if trigger is active, continue … … 606 606 movem.l d1-d2/a0-a2,-(a7) | get ranged random number 607 607 move.w d0,-(a7) | ... 608 jsr _irand | ...608 jsr irand | ... 609 609 tst.w (a7)+ | ... 610 610 movem.l (a7)+,d1-d2/a0-a2 | ... … … 630 630 lsr.w #3,d0 | ... 631 631 andi.w #0x001E,d0 | ... 632 lea _vce2trg,a0 | check to see if voice is free632 lea vce2trg,a0 | check to see if voice is free 633 633 move.w 0(a0,d0.W),d0 | ... 634 634 cmpi.w #-1,d0 | ... … … 641 641 bne act0 | ... 642 642 643 lea _trgtab,a0 | check trigger table entry643 lea trgtab,a0 | check trigger table entry 644 644 tst.b 0(a0,d0.W) | see if the trigger is active 645 645 beq act3 | if not, do the jump … … 655 655 lsr.w #3,d0 | ... 656 656 andi.w #0x001E,d0 | ... 657 lea _vce2trg,a0 | check to see if voice is free657 lea vce2trg,a0 | check to see if voice is free 658 658 move.w 0(a0,d0.W),d0 | ... 659 659 cmpi.w #-1,d0 | ... … … 666 666 bne act3 | ... 667 667 668 lea _trgtab,a0 | check trigger table entry668 lea trgtab,a0 | check trigger table entry 669 669 tst.b 0(a0,d0.W) | see if the trigger is active 670 670 bne act3 | if so, do the jump … … 682 682 lsr.w #3,d0 | ... 683 683 andi.w #0x001E,d0 | ... 684 lea _vce2trg,a0 | point at voice to trigger table684 lea vce2trg,a0 | point at voice to trigger table 685 685 move.w 0(a0,d0.W),d0 | get trigger table entry 686 686 cmpi.w #-1,d0 | see if voice is free … … 693 693 bne act1a | sustain if so 694 694 695 lea _trgtab,a0 | point at trigger table695 lea trgtab,a0 | point at trigger table 696 696 tst.b 0(a0,d0.W) | check trigger status 697 697 beq act0 | continue if not active 698 698 699 act1a: move.l _pfqhdr,d3 | see if any pflist entries remain699 act1a: move.l pfqhdr,d3 | see if any pflist entries remain 700 700 beq act0 | no-op if not (shouldn't happen ...) 701 701 … … 709 709 addi.w #PT_LEN,d2 | update point index 710 710 movea.l d3,a0 | acquire a new pflist entry 711 move.l (a0), _pfqhdr | ...712 move.l _pflist,(a0) | ...713 move.l a0, _pflist | ...711 move.l (a0),pfqhdr | ... 712 move.l pflist,(a0) | ... 713 move.l a0,pflist | ... 714 714 move.w FH_TRG(a1),PF_TRIG(a0) | set trigger number in entry 715 715 move.w _curpf_f,PF_FUNC(a0) | set v/p word in entry -
ram/sedisp.s
r84c0125 r8325447 17 17 .text 18 18 19 .xdef _se_disp20 21 .xdef _ac_code19 .xdef se_disp 20 21 .xdef ac_code 22 22 .xdef numstr 23 23 24 .xref _dclkmd25 .xref _dsgmodz26 .xref _fromfpu27 .xref _mpcupd28 .xref _vputa29 .xref _vputc30 .xref _vputs31 32 .xref _angroup33 .xref _ctrsw34 .xref _grpstat35 .xref _ins2grp36 .xref _ndisp37 .xref _obj838 .xref _gdfsep39 .xref _lastvel40 .xref _nsvtab41 .xref _velflag42 .xref _vrbw0843 .xref _vrbw0944 .xref _vrbw1045 .xref _vrbw1146 .xref _vrbw1247 .xref _vrbw1348 .xref _vrbw1449 .xref _vrbw1550 .xref _vrcw24 .xref dclkmd 25 .xref dsgmodz 26 .xref fromfpu 27 .xref mpcupd 28 .xref vputa 29 .xref vputc 30 .xref vputs 31 32 .xref angroup 33 .xref ctrsw 34 .xref grpstat 35 .xref ins2grp 36 .xref ndisp 37 .xref obj8 38 .xref gdfsep 39 .xref lastvel 40 .xref nsvtab 41 .xref velflag 42 .xref vrbw08 43 .xref vrbw09 44 .xref vrbw10 45 .xref vrbw11 46 .xref vrbw12 47 .xref vrbw13 48 .xref vrbw14 49 .xref vrbw15 50 .xref vrcw 51 51 52 52 .page … … 132 132 | hardware limited by the maximum rate of the timer, and the VSDD update rate. 133 133 134 _se_disp: link a6,#0 | allocate and link stack frame134 se_disp: link a6,#0 | allocate and link stack frame 135 135 movea.l P_EP(a6),a0 | get event pointer 'ep' into a0 136 136 move.b E_TYPE(a0),d1 | get event type into d1.W … … 170 170 move.w d0,d1 | save group in d1 171 171 add.w d0,d0 | make d0 a word offset 172 lea _grpstat,a1 | check grpstat[grp]172 lea grpstat,a1 | check grpstat[grp] 173 173 tst.w 0(a1,d0.W) | ... 174 174 beq dsexit | done if not enabled … … 177 177 beq dsnb0 | jump if not center slice 178 178 179 tst.w _velflag| see if we display velocity179 tst.w velflag | see if we display velocity 180 180 beq dsnvx | jump if not 181 181 … … 185 185 move.w d1,d2 | point into lastvel[] 186 186 add.w d2,d2 | ... 187 lea _lastvel,a1 | ...187 lea lastvel,a1 | ... 188 188 move.w d0,0(a1,d2.W) | update lastvel[group] 189 189 ext.l d0 | scale … … 214 214 move.w d0,-(a7) | put column on stack 215 215 move.w #5,-(a7) | put row on stack 216 move.l _obj8,-(a7) | put VSDD address on stack217 jsr _vputs | update the screen216 move.l obj8,-(a7) | put VSDD address on stack 217 jsr vputs | update the screen 218 218 add.l #14,a7 | clean up stack 219 219 movea.l (a7)+,a0 | restore event pointer … … 225 225 bcc dsnv2 | jump if in MS byte 226 226 227 bset d0, _vrbw12+1 | set group bit in LS byte227 bset d0,vrbw12+1 | set group bit in LS byte 228 228 bra dsnv3 | ... 229 229 230 dsnv2: bset d0, _vrbw12 | set group bit in MS byte231 232 dsnv3: bset #4, _vrcw| set video reset type bit230 dsnv2: bset d0,vrbw12 | set group bit in MS byte 231 232 dsnv3: bset #4,vrcw | set video reset type bit 233 233 move.w (a7)+,d2 | get new-note flag from stack 234 234 … … 244 244 bgt dsexit | done if not displayable 245 245 246 move.l _gdfsep,d0 | quit if no elements left247 beq dsexit | ... 248 249 movea.l d0,a1 | a1 = gdsp 250 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next246 move.l gdfsep,d0 | quit if no elements left 247 beq dsexit | ... 248 249 movea.l d0,a1 | a1 = gdsp 250 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 251 251 clr.w d2 | d2 = ep->group 252 252 move.b E_GROUP(a0),d2 | ... … … 256 256 move.l a1,0(a2,d2.W) | gdstb[ep->group] = gdsp 257 257 move.w d1,G_NOTE(a1) | gdsp->note = nn 258 lea _nsvtab,a2 | a2 points at nsvtab258 lea nsvtab,a2 | a2 points at nsvtab 259 259 tst.b 0(a2,d1.W) | check nsvtab[nn] 260 260 beq dsnb1 | jump if natural note 261 261 262 move.b _ac_code,d1 | setup for an accidental note262 move.b ac_code,d1 | setup for an accidental note 263 263 bra dsnb2 | ... 264 264 … … 284 284 move.b E_GROUP(a0),d0 | ... in d0 285 285 add.w d0,d0 | ... as a word offset 286 lea _grpstat,a1 | check grpstat[grp]286 lea grpstat,a1 | check grpstat[grp] 287 287 tst.w 0(a1,d0.W) | ... 288 288 beq dsexit | done if not enabled … … 341 341 move.w #6,-(a7) | put column on stack 342 342 move.w #0,-(a7) | put row on stack 343 move.l _obj8,-(a7) | put sbase on stack344 jsr _vputs | update the screen343 move.l obj8,-(a7) | put sbase on stack 344 jsr vputs | update the screen 345 345 add.l #14,a7 | clean up stack 346 bset #4, _vrcw+1 | set video reset type bit347 tst.w _ctrsw | update center for scupd ?348 beq dsexit | done if not 349 350 dsbgn0: move.l _gdfsep,d0 | quit if no elements left351 beq dsexit | ... 352 353 movea.l d0,a1 | a1 = gdsp 354 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next346 bset #4,vrcw+1 | set video reset type bit 347 tst.w ctrsw | update center for scupd ? 348 beq dsexit | done if not 349 350 dsbgn0: move.l gdfsep,d0 | quit if no elements left 351 beq dsexit | ... 352 353 movea.l d0,a1 | a1 = gdsp 354 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 355 355 move.w #48,d2 | d2 = event PRIORITY * 4 356 356 movea.l P_SL(a6),a2 | a2 points at gdstb … … 368 368 beq dssend0 | jump if not 369 369 370 tst.w _ctrsw | update center for scupd ?371 beq dsexit | done if not 372 373 dssend0: move.l _gdfsep,d0 | quit if no elements left374 beq dsexit | ... 375 376 movea.l d0,a1 | a1 = gdsp 377 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next370 tst.w ctrsw | update center for scupd ? 371 beq dsexit | done if not 372 373 dssend0: move.l gdfsep,d0 | quit if no elements left 374 beq dsexit | ... 375 376 movea.l d0,a1 | a1 = gdsp 377 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 378 378 move.w #48,d2 | d2 = event PRIORITY * 4 379 379 movea.l P_SL(a6),a2 | a2 points at gdstb … … 389 389 bne dsexit | done if so 390 390 391 move.l _gdfsep,d0 | quit if no elements left392 beq dsexit | ... 393 394 movea.l d0,a1 | a1 = gdsp 395 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next391 move.l gdfsep,d0 | quit if no elements left 392 beq dsexit | ... 393 394 movea.l d0,a1 | a1 = gdsp 395 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 396 396 move.w #48,d2 | d2 = event PRIORITY * 4 397 397 movea.l P_SL(a6),a2 | a2 points at gdstb … … 416 416 move.w #19,-(a7) | put column on stack 417 417 move.w #1,-(a7) | put row on stack 418 move.l _obj8,-(a7) | put sbase on stack419 jsr _vputc | display character418 move.l obj8,-(a7) | put sbase on stack 419 jsr vputc | display character 420 420 add.l #12,a7 | clean up stack 421 bset #1, _vrcw+1 | set video reset type bit422 tst.w _ctrsw | update center for scupd ?423 beq dsexit | done if not 424 425 dstune0: move.l _gdfsep,d0 | quit if no elements left426 beq dsexit | ... 427 428 movea.l d0,a1 | a1 = gdsp 429 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next421 bset #1,vrcw+1 | set video reset type bit 422 tst.w ctrsw | update center for scupd ? 423 beq dsexit | done if not 424 425 dstune0: move.l gdfsep,d0 | quit if no elements left 426 beq dsexit | ... 427 428 movea.l d0,a1 | a1 = gdsp 429 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 430 430 move.w #52,d2 | d2 = event PRIORITY * 4 431 431 movea.l P_SL(a6),a2 | a2 points at gdstb … … 443 443 move.b E_DATA1(a0),d0 | ... in d0 444 444 add.w d0,d0 | ... as a word offset 445 lea _grpstat,a1 | check grpstat[grp]445 lea grpstat,a1 | check grpstat[grp] 446 446 tst.w 0(a1,d0.W) | ... 447 447 beq dsexit | done if not enabled … … 497 497 move.w d1,-(a7) | ... 498 498 move.w #3,-(a7) | ... 499 move.l _obj8,-(a7) | ...500 jsr _vputs | ...499 move.l obj8,-(a7) | ... 500 jsr vputs | ... 501 501 add.l #14,a7 | ... 502 502 move.w (a7)+,d0 | get group number … … 504 504 bcc dstrns5 | jump if in MS byte 505 505 506 bset d0, _vrbw09+1 | set group bit in LS byte506 bset d0,vrbw09+1 | set group bit in LS byte 507 507 bra dstrns6 | ... 508 508 509 509 dstrns5: sub.w #8,d0 | adjust for byte 510 bset d0, _vrbw09 | set group bit in MS byte511 512 dstrns6: bset #1, _vrcw| set video reset type bit513 tst.w _ctrsw | update center for scupd ?514 beq dsexit | done if not 515 516 dstrns0: move.l _gdfsep,d0 | quit if no elements left517 beq dsexit | ... 518 519 movea.l d0,a1 | a1 = gdsp 520 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next510 bset d0,vrbw09 | set group bit in MS byte 511 512 dstrns6: bset #1,vrcw | set video reset type bit 513 tst.w ctrsw | update center for scupd ? 514 beq dsexit | done if not 515 516 dstrns0: move.l gdfsep,d0 | quit if no elements left 517 beq dsexit | ... 518 519 movea.l d0,a1 | a1 = gdsp 520 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 521 521 move.w #52,d2 | d2 = event PRIORITY * 4 522 522 movea.l P_SL(a6),a2 | a2 points at gdstb … … 534 534 move.b E_DATA1(a0),d0 | ... in d0 535 535 add.w d0,d0 | ... as a word offset 536 lea _grpstat,a1 | check grpstat[grp]536 lea grpstat,a1 | check grpstat[grp] 537 537 tst.w 0(a1,d0.W) | ... 538 538 beq dsexit | done if not enabled … … 560 560 move.w d0,-(a7) | put column on stack 561 561 move.w #4,-(a7) | put row on stack 562 move.l _obj8,-(a7) | put object address on stack563 jsr _vputc | update the screen562 move.l obj8,-(a7) | put object address on stack 563 jsr vputc | update the screen 564 564 add.l #12,a7 | clean up stack 565 565 move.w (a7)+,d0 | get group number … … 567 567 bcc dsdyn1 | jump if in MS word 568 568 569 bset d0, _vrbw10+1 | set group bit in LS byte569 bset d0,vrbw10+1 | set group bit in LS byte 570 570 bra dsdyn2 | ... 571 571 572 572 dsdyn1: sub.w #8,d0 | adjust for for byte 573 bset d0, _vrbw10 | set group bit in MS byte574 575 dsdyn2: bset #2, _vrcw| set video reset type bit576 tst.w _ctrsw | update center for scupd ?577 beq dsexit | done if not 578 579 .page 580 dsdyn00: move.l _gdfsep,d0 | quit if no elements left581 beq dsexit | ... 582 583 movea.l d0,a1 | a1 = gdsp 584 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next573 bset d0,vrbw10 | set group bit in MS byte 574 575 dsdyn2: bset #2,vrcw | set video reset type bit 576 tst.w ctrsw | update center for scupd ? 577 beq dsexit | done if not 578 579 .page 580 dsdyn00: move.l gdfsep,d0 | quit if no elements left 581 beq dsexit | ... 582 583 movea.l d0,a1 | a1 = gdsp 584 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 585 585 move.w #52,d2 | d2 = event PRIORITY * 4 586 586 movea.l P_SL(a6),a2 | a2 points at gdstb … … 598 598 move.b E_DATA1(a0),d0 | ... in d0 599 599 add.w d0,d0 | ... as a word offset 600 lea _grpstat,a1 | check grpstat[grp]600 lea grpstat,a1 | check grpstat[grp] 601 601 tst.w 0(a1,d0.W) | ... 602 602 beq dsexit | done if not enabled … … 624 624 move.w d0,-(a7) | put column on stack 625 625 move.w #4,-(a7) | put row on stack 626 move.l _obj8,-(a7) | put object address on stack627 jsr _vputc | update the screen626 move.l obj8,-(a7) | put object address on stack 627 jsr vputc | update the screen 628 628 add.l #12,a7 | clean up stack 629 629 move.w (a7)+,d0 | get group number … … 631 631 bcc dslocn1 | jump if in MS word 632 632 633 bset d0, _vrbw11+1 | set group bit in LS byte633 bset d0,vrbw11+1 | set group bit in LS byte 634 634 bra dslocn2 | ... 635 635 636 636 dslocn1: sub.w #8,d0 | adjust for for byte 637 bset d0, _vrbw11 | set group bit in MS byte638 639 dslocn2: bset #3, _vrcw| set video reset type bit640 tst.w _ctrsw | update center for scupd ?641 beq dsexit | done if not 642 643 .page 644 dsloc00: move.l _gdfsep,d0 | quit if no elements left645 beq dsexit | ... 646 647 movea.l d0,a1 | a1 = gdsp 648 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next637 bset d0,vrbw11 | set group bit in MS byte 638 639 dslocn2: bset #3,vrcw | set video reset type bit 640 tst.w ctrsw | update center for scupd ? 641 beq dsexit | done if not 642 643 .page 644 dsloc00: move.l gdfsep,d0 | quit if no elements left 645 beq dsexit | ... 646 647 movea.l d0,a1 | a1 = gdsp 648 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 649 649 move.w #52,d2 | d2 = event PRIORITY * 4 650 650 movea.l P_SL(a6),a2 | a2 points at gdstb … … 663 663 andi.w #0x000F,d0 | ... in d0 664 664 add.w d0,d0 | ... as a word offset 665 lea _grpstat,a1 | check grpstat[grp]665 lea grpstat,a1 | check grpstat[grp] 666 666 tst.w 0(a1,d0.W) | ... 667 667 beq dsexit | done if not enabled … … 670 670 beq dsanrs0 | jump if not 671 671 672 move.w _angroup,d2 | see if we display672 move.w angroup,d2 | see if we display 673 673 bmi dsexit | jump if not 674 674 … … 692 692 move.w d1,-(a7) | put column on stack 693 693 move.w #7,-(a7) | put row on stack 694 move.l _obj8,-(a7) | put sbase on stack695 jsr _vputc | update the screen694 move.l obj8,-(a7) | put sbase on stack 695 jsr vputc | update the screen 696 696 add.l #12,a7 | clean up stack 697 697 move.w (a7)+,d0 | get variable number 698 bset d0, _vrbw13+1 | set variable bit699 bset #5, _vrcw| set video reset type bit700 tst.w _ctrsw | update center for scupd ?701 beq dsexit | done if not 702 703 .page 704 dsanrs0: move.l _gdfsep,d0 | quit if no elements left705 beq dsexit | ... 706 707 movea.l d0,a1 | a1 = gdsp 708 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next698 bset d0,vrbw13+1 | set variable bit 699 bset #5,vrcw | set video reset type bit 700 tst.w ctrsw | update center for scupd ? 701 beq dsexit | done if not 702 703 .page 704 dsanrs0: move.l gdfsep,d0 | quit if no elements left 705 beq dsexit | ... 706 707 movea.l d0,a1 | a1 = gdsp 708 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 709 709 move.w #52,d2 | d2 = event PRIORITY * 4 710 710 movea.l P_SL(a6),a2 | a2 points at gdstb … … 719 719 | dsanvl -- display analog value 720 720 | ------ -------------------- 721 dsanvl: move.w _angroup,d2 | see if we display721 dsanvl: move.w angroup,d2 | see if we display 722 722 bmi dsexit | jump if not 723 723 … … 726 726 andi.w #0x000F,d0 | ... in d0 727 727 add.w d0,d0 | ... as a word offset 728 lea _grpstat,a1 | check grpstat[grp]728 lea grpstat,a1 | check grpstat[grp] 729 729 tst.w 0(a1,d0.W) | ... 730 730 beq dsexit | done if not enabled … … 777 777 move.w d1,-(a7) | put column on stack 778 778 move.w #7,-(a7) | put row on stack 779 move.l _obj8,-(a7) | put sbase on stack780 jsr _vputs | update the screen779 move.l obj8,-(a7) | put sbase on stack 780 jsr vputs | update the screen 781 781 add.l #14,a7 | clean up stack 782 782 move.w (a7)+,d0 | get variable number 783 bset d0, _vrbw14+1 | set variable bit784 bset #6, _vrcw| set video reset type bit785 tst.w _ctrsw | update center for scupd ?786 beq dsexit | done if not 787 788 dsanvl0: move.l _gdfsep,d0 | quit if no elements left789 beq dsexit | ... 790 791 movea.l d0,a1 | a1 = gdsp 792 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next783 bset d0,vrbw14+1 | set variable bit 784 bset #6,vrcw | set video reset type bit 785 tst.w ctrsw | update center for scupd ? 786 beq dsexit | done if not 787 788 dsanvl0: move.l gdfsep,d0 | quit if no elements left 789 beq dsexit | ... 790 791 movea.l d0,a1 | a1 = gdsp 792 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 793 793 move.w #52,d2 | d2 = event PRIORITY * 4 794 794 movea.l P_SL(a6),a2 | a2 points at gdstb … … 807 807 808 808 move.l a0,-(a7) | stash a0 809 jsr _mpcupd | update changed stuff809 jsr mpcupd | update changed stuff 810 810 movea.l (a7)+,a0 | restore a0 811 811 clr.w d1 | get assignment … … 822 822 move.w #11,-(a7) | put column on stack 823 823 move.w #1,-(a7) | put row on stack 824 move.l _obj8,-(a7) | put sbase on stack825 jsr _vputs | update the screen824 move.l obj8,-(a7) | put sbase on stack 825 jsr vputs | update the screen 826 826 add.l #14,a7 | clean up stack 827 bset #0, _vrcw+1 | set video reset type bit828 tst.w _ctrsw | update center for scupd ?829 beq dsexit | done if not 830 831 dsasgn0: move.l _gdfsep,d0 | quit if no elements left832 beq dsexit | ... 833 834 movea.l d0,a1 | a1 = gdsp 835 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next827 bset #0,vrcw+1 | set video reset type bit 828 tst.w ctrsw | update center for scupd ? 829 beq dsexit | done if not 830 831 dsasgn0: move.l gdfsep,d0 | quit if no elements left 832 beq dsexit | ... 833 834 movea.l d0,a1 | a1 = gdsp 835 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 836 836 move.w #56,d2 | d2 = event PRIORITY * 4 837 837 movea.l P_SL(a6),a2 | a2 points at gdstb … … 868 868 move.w #27,-(a7) | put column on stack 869 869 move.w #1,-(a7) | put row on stack 870 move.l _obj8,-(a7) | put sbase on stack871 jsr _vputs | display tempo870 move.l obj8,-(a7) | put sbase on stack 871 jsr vputs | display tempo 872 872 add.l #14,a7 | clean up stack 873 bset #2, _vrcw+1 | set video reset type bit874 tst.w _ctrsw | update center for scupd ?875 beq dsexit | done if not 876 877 dstmpo0: move.l _gdfsep,d0 | quit if no elements left878 beq dsexit | ... 879 880 movea.l d0,a1 | a1 = gdsp 881 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next873 bset #2,vrcw+1 | set video reset type bit 874 tst.w ctrsw | update center for scupd ? 875 beq dsexit | done if not 876 877 dstmpo0: move.l gdfsep,d0 | quit if no elements left 878 beq dsexit | ... 879 880 movea.l d0,a1 | a1 = gdsp 881 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 882 882 move.w #56,d2 | d2 = event PRIORITY * 4 883 883 movea.l P_SL(a6),a2 | a2 points at gdstb … … 895 895 beq dsstop0 | jump if not 896 896 897 jsr _dclkmd | show that clock is stopped897 jsr dclkmd | show that clock is stopped 898 898 move.w #AT08,-(a7) | put attribute on stack 899 899 move.w #40,-(a7) | put 1st column on stack 900 900 move.w #1,-(a7) | put row on stack 901 move.l _obj8,-(a7) | put sbase on stack902 jsr _vputa | hilite first column901 move.l obj8,-(a7) | put sbase on stack 902 jsr vputa | hilite first column 903 903 move.w #41,COL(a7) | put 2nd column on stack 904 jsr _vputa | hilite second column904 jsr vputa | hilite second column 905 905 move.w #42,COL(a7) | put 3rd column on stack 906 jsr _vputa | hilite third column906 jsr vputa | hilite third column 907 907 move.w #43,COL(a7) | put 4th column on stack 908 jsr _vputa | hilite fourth column908 jsr vputa | hilite fourth column 909 909 add.l #10,a7 | clean up stack 910 bset #7, _vrcw| set video reset type bits911 bset #0, _vrbw15 | ...912 tst.w _ctrsw | update center for scupd ?913 beq dsexit | done if not 914 915 dsstop0: move.l _gdfsep,d0 | quit if no elements left916 beq dsexit | ... 917 918 movea.l d0,a1 | a1 = gdsp 919 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next910 bset #7,vrcw | set video reset type bits 911 bset #0,vrbw15 | ... 912 tst.w ctrsw | update center for scupd ? 913 beq dsexit | done if not 914 915 dsstop0: move.l gdfsep,d0 | quit if no elements left 916 beq dsexit | ... 917 918 movea.l d0,a1 | a1 = gdsp 919 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 920 920 move.w #56,d2 | d2 = event PRIORITY * 4 921 921 movea.l P_SL(a6),a2 | a2 points at gdstb … … 936 936 move.w #45,-(a7) | put 1st column on stack 937 937 move.w #1,-(a7) | put row on stack 938 move.l _obj8,-(a7) | put sbase on stack939 jsr _vputa | hilite first column938 move.l obj8,-(a7) | put sbase on stack 939 jsr vputa | hilite first column 940 940 move.w #46,COL(a7) | put 2nd column on stack 941 jsr _vputa | hilite second column941 jsr vputa | hilite second column 942 942 move.w #47,COL(a7) | put 3rd column on stack 943 jsr _vputa | hilite third column943 jsr vputa | hilite third column 944 944 move.w #48,COL(a7) | put 4th column on stack 945 jsr _vputa | hilite fourth column945 jsr vputa | hilite fourth column 946 946 add.l #10,a7 | clean up stack 947 bset #7, _vrcw| set video reset type bits948 bset #1, _vrbw15 | ...949 tst.w _ctrsw | update center for scupd ?950 beq dsexit | done if not 951 952 dsnext0: move.l _gdfsep,d0 | quit if no elements left953 beq dsexit | ... 954 955 movea.l d0,a1 | a1 = gdsp 956 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next947 bset #7,vrcw | set video reset type bits 948 bset #1,vrbw15 | ... 949 tst.w ctrsw | update center for scupd ? 950 beq dsexit | done if not 951 952 dsnext0: move.l gdfsep,d0 | quit if no elements left 953 beq dsexit | ... 954 955 movea.l d0,a1 | a1 = gdsp 956 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 957 957 move.w #56,d2 | d2 = event PRIORITY * 4 958 958 movea.l P_SL(a6),a2 | a2 points at gdstb … … 970 970 beq dsgrp0 | jump if not 971 971 972 tst.w _ctrsw | update center for scupd ?973 beq dsexit | done if not 974 975 dsgrp0: move.l _gdfsep,d0 | quit if no elements left976 beq dsexit | ... 977 978 movea.l d0,a1 | a1 = gdsp 979 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next972 tst.w ctrsw | update center for scupd ? 973 beq dsexit | done if not 974 975 dsgrp0: move.l gdfsep,d0 | quit if no elements left 976 beq dsexit | ... 977 978 movea.l d0,a1 | a1 = gdsp 979 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 980 980 move.w #60,d2 | d2 = event PRIORITY * 4 981 981 movea.l P_SL(a6),a2 | a2 points at gdstb … … 993 993 move.b E_DATA1(a0),d0 | ... in d0 994 994 add.w d0,d0 | ... as a word offset 995 lea _grpstat,a1 | check grpstat[grp]995 lea grpstat,a1 | check grpstat[grp] 996 996 tst.w 0(a1,d0.W) | ... 997 997 beq dsexit | done if not enabled … … 1000 1000 beq dsins00 | jump if not 1001 1001 1002 lea _ins2grp,a1 | point at ins2grp[]1002 lea ins2grp,a1 | point at ins2grp[] 1003 1003 clr.w d0 | get instrument number 1004 1004 move.b E_DATA2(a0),d0 | ... in d0 … … 1026 1026 move.w d0,-(a7) | put column on stack 1027 1027 move.w #2,-(a7) | put row on stack 1028 move.l _obj8,-(a7) | put object address on stack1029 jsr _vputs | update the screen1028 move.l obj8,-(a7) | put object address on stack 1029 jsr vputs | update the screen 1030 1030 add.l #14,a7 | clean up stack 1031 1031 … … 1035 1035 bcc dsinst1 | jump if in MS word 1036 1036 1037 bset d0, _vrbw08+1 | set group bit in LS byte1037 bset d0,vrbw08+1 | set group bit in LS byte 1038 1038 bra dsinst2 | ... 1039 1039 1040 1040 dsinst1: sub.w #8,d0 | adjust for for byte 1041 bset d0, _vrbw08 | set group bit in MS byte1042 1043 dsinst2: bset #0, _vrcw| set video reset type bit1044 tst.w _ctrsw | update center for scupd ?1045 beq dsexit | done if not 1046 1047 dsins00: move.l _gdfsep,d0 | quit if no elements left1048 beq dsexit | ... 1049 1050 movea.l d0,a1 | a1 = gdsp 1051 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next1041 bset d0,vrbw08 | set group bit in MS byte 1042 1043 dsinst2: bset #0,vrcw | set video reset type bit 1044 tst.w ctrsw | update center for scupd ? 1045 beq dsexit | done if not 1046 1047 dsins00: move.l gdfsep,d0 | quit if no elements left 1048 beq dsexit | ... 1049 1050 movea.l d0,a1 | a1 = gdsp 1051 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 1052 1052 move.w #60,d2 | d2 = event PRIORITY * 4 1053 1053 movea.l P_SL(a6),a2 | a2 points at gdstb … … 1066 1066 1067 1067 move.w E_DATA1(a0),-(a7) | get interpolate value 1068 jsr _fromfpu| convert to milliseconds1068 jsr fromfpu | convert to milliseconds 1069 1069 tst.w (a7)+ | ... 1070 1070 andi.l #0x0000FFFF,d0 | clear high bits … … 1088 1088 move.w #35,-(a7) | ... 1089 1089 move.w #1,-(a7) | ... 1090 move.l _obj8,-(a7) | ...1091 jsr _vputs | ...1090 move.l obj8,-(a7) | ... 1091 jsr vputs | ... 1092 1092 add.l #14,a7 | ... 1093 bset #3, _vrcw+1 | set video reset bit1094 tst.w _ctrsw | update center for scupd ?1095 beq dsexit | done if not 1096 1097 dsintp0: move.l _gdfsep,d0 | quit if no elements left1098 beq dsexit | ... 1099 1100 movea.l d0,a1 | a1 = gdsp 1101 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next1093 bset #3,vrcw+1 | set video reset bit 1094 tst.w ctrsw | update center for scupd ? 1095 beq dsexit | done if not 1096 1097 dsintp0: move.l gdfsep,d0 | quit if no elements left 1098 beq dsexit | ... 1099 1100 movea.l d0,a1 | a1 = gdsp 1101 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 1102 1102 move.w #60,d2 | d2 = event PRIORITY * 4 1103 1103 movea.l P_SL(a6),a2 | a2 points at gdstb … … 1121 1121 move.w #50,-(a7) | put 1st col on stack 1122 1122 move.w #1,-(a7) | put row on stack 1123 move.l _obj8,-(a7) | put object address on stack1124 jsr _vputa | highlight 1st column1123 move.l obj8,-(a7) | put object address on stack 1124 jsr vputa | highlight 1st column 1125 1125 move.w #51,COL(a7) | put 2nd col on stack 1126 jsr _vputa | highlight 2nd col1126 jsr vputa | highlight 2nd col 1127 1127 add.l #10,a7 | clean up stack 1128 bset #5, _vrcw+1 | set video reset bit1128 bset #5,vrcw+1 | set video reset bit 1129 1129 bra dspnch2 | go do maker update 1130 1130 … … 1132 1132 move.w #53,-(a7) | put 1st col on stack 1133 1133 move.w #1,-(a7) | put row on stack 1134 move.l _obj8,-(a7) | put object address on stack1135 jsr _vputa | highlight 1st column1134 move.l obj8,-(a7) | put object address on stack 1135 jsr vputa | highlight 1st column 1136 1136 move.w #54,COL(a7) | put 2nd col on stack 1137 jsr _vputa | highlight 2nd column1137 jsr vputa | highlight 2nd column 1138 1138 move.w #55,COL(a7) | put 3rd col on stack 1139 jsr _vputa | highlight 3rd column1139 jsr vputa | highlight 3rd column 1140 1140 add.l #10,a7 | clean up stack 1141 bset #6, _vrcw+1 | set video reset bit1142 1143 dspnch2: jsr _dsgmodz| display updated modes1144 tst.w _ctrsw | update center for scupd ?1145 beq dsexit | done if not 1146 1147 dspnch0: move.l _gdfsep,d0 | quit if no elements left1148 beq dsexit | ... 1149 1150 movea.l d0,a1 | a1 = gdsp 1151 move.l G_NEXT(a1), _gdfsep | gdfsep = gdsp->next1141 bset #6,vrcw+1 | set video reset bit 1142 1143 dspnch2: jsr dsgmodz | display updated modes 1144 tst.w ctrsw | update center for scupd ? 1145 beq dsexit | done if not 1146 1147 dspnch0: move.l gdfsep,d0 | quit if no elements left 1148 beq dsexit | ... 1149 1150 movea.l d0,a1 | a1 = gdsp 1151 move.l G_NEXT(a1),gdfsep | gdfsep = gdsp->next 1152 1152 move.w #60,d2 | d2 = event PRIORITY * 4 1153 1153 movea.l P_SL(a6),a2 | a2 points at gdstb … … 1172 1172 beq dsbar0 | jump if not 1173 1173 1174 tst.w _ctrsw | update center for scupd ?1174 tst.w ctrsw | update center for scupd ? 1175 1175 beq dsexit | done if not 1176 1176 … … 1219 1219 | globals: 1220 1220 | -------- 1221 _ac_code: .ds.b 1 | accidental code1221 ac_code: .ds.b 1 | accidental code 1222 1222 1223 1223 | locals: -
ram/seexec.s
r84c0125 r8325447 13 13 .text 14 14 15 .xdef _se_exec15 .xdef se_exec 16 16 17 17 .xdef BadEvnt 18 18 19 .xdef _xevent20 21 .xref _asgvce22 .xref _clkset23 .xref _getasg24 .xref _gettun25 .xref _procpfl26 .xref _selscor27 .xref _setdyn28 .xref _setloc29 .xref _setsv30 .xref _settmpo31 .xref _settune32 .xref _setv2gi33 34 .xref _anrs35 .xref _var2src36 .xref _curasg37 .xref _curintp38 .xref _cursect39 .xref _grpmode40 .xref _grpstat41 .xref _ins2grp42 .xref _nxtflag43 .xref _recsw44 .xref _s_trns45 .xref _trgtab46 .xref _varmode47 .xref _vce2grp48 .xref _vce2trg49 .xref _veltab19 .xdef xevent 20 21 .xref asgvce 22 .xref clkset 23 .xref getasg 24 .xref gettun 25 .xref procpfl 26 .xref selscor 27 .xref setdyn 28 .xref setloc 29 .xref setsv 30 .xref settmpo 31 .xref settune 32 .xref setv2gi 33 34 .xref anrs 35 .xref var2src 36 .xref curasg 37 .xref curintp 38 .xref cursect 39 .xref grpmode 40 .xref grpstat 41 .xref ins2grp 42 .xref nxtflag 43 .xref recsw 44 .xref s_trns 45 .xref trgtab 46 .xref varmode 47 .xref vce2grp 48 .xref vce2trg 49 .xref veltab 50 50 51 51 .page … … 98 98 | hardware limited by the timer. 99 99 100 _se_exec: link a6,#0 | link stack frames100 se_exec: link a6,#0 | link stack frames 101 101 movea.l P_EP(a6),a0 | get event pointer 'ep' into a0 102 102 move.l a0,_xevent | save in xevent … … 144 144 move.b E_GROUP(a0),d1 | get group number 145 145 add.w d1,d1 | ... * 2 146 lea _grpstat,a1 | point at grpstat146 lea grpstat,a1 | point at grpstat 147 147 tst.w 0(a1,d1.W) | see if group is enabled 148 148 beq exexit | done if not … … 151 151 move.w #LCL_PCH,d2 | put port and channel in d2 152 152 add.w d1,d2 | d2 = trg 153 lea _trgtab,a1 | point at trgtab[trg]153 lea trgtab,a1 | point at trgtab[trg] 154 154 move.b 0(a1,d2.W),d0 | ... 155 155 or.b #M_KSTATE,d0 | set trigger table entry on 156 156 move.b d0,0(a1,d2.W) | ... 157 lea _veltab,a1 | point at veltab157 lea veltab,a1 | point at veltab 158 158 add.w d2,d2 | ... 159 159 move.w E_VEL(a0),0(a1,d2.W) | put velocity in veltab … … 164 164 move.b E_GROUP(a0),d1 | d1 = group number (0..11) 165 165 move.w d1,-(a7) | put group number on the stack 166 jsr _asgvce | start the note166 jsr asgvce | start the note 167 167 add.l #10,a7 | clean up the stack 168 168 bra exexit | done … … 182 182 move.b E_GROUP(a0),d1 | get group number 183 183 add.w d1,d1 | ... * 2 184 lea _grpstat,a1 | point at grpstat184 lea grpstat,a1 | point at grpstat 185 185 tst.w 0(a1,d1.W) | check group status 186 186 beq exexit | done if disabled … … 190 190 add.w d1,d2 | d2 = trg * 2 191 191 add.w d2,d2 | ... 192 lea _trgtab,a1 | set trigger table entry off192 lea trgtab,a1 | set trigger table entry off 193 193 move.b 0(a1,d2.W),d0 | ... 194 194 and.b #N_KSTATE,d0 | ... … … 200 200 lsr.w #1,d2 | adjust d2 201 201 clr.w d1 | set loop index 202 lea _vce2trg,a2 | point at vce2trg table202 lea vce2trg,a2 | point at vce2trg table 203 203 204 204 exnend1: cmp.w (a2),d2 | see if this voice uses trg … … 209 209 move.w d1,-(a7) | save d1 on stack 210 210 move.w d2,-(a7) | save d2 on stack 211 lea _vce2grp,a1 | put group on stack211 lea vce2grp,a1 | put group on stack 212 212 move.w d1,d0 | ... 213 213 add.w d0,d0 | ... 214 214 move.w 0(a1,d0.W),-(a7) | ... 215 215 move.w d2,-(a7) | put trg on stack 216 jsr _procpfl| process sustained voices216 jsr procpfl | process sustained voices 217 217 addq.l #4,a7 | clean up stack 218 218 move.w (a7)+,d2 | restore d2 … … 233 233 exsbgn: clr.w d0 | get section number 234 234 move.b E_DATA1(a0),d0 | ... 235 move.w d0, _cursect | set section number235 move.w d0,cursect | set section number 236 236 bra exexit | done 237 237 … … 241 241 move.b E_DATA1(a0),d0 | ... 242 242 move.w d0,-(a7) | getasg(curasg = asgn) 243 move.w d0, _curasg | ...244 jsr _getasg | ...243 move.w d0,curasg | ... 244 jsr getasg | ... 245 245 tst.w (a7)+ | ... 246 246 bra exexit | done … … 251 251 move.b E_DATA1(a0),d0 | ... 252 252 move.w d0,-(a7) | gettun(tuning) 253 jsr _gettun | ...253 jsr gettun | ... 254 254 tst.w (a7)+ | ... 255 255 bra exexit | done … … 260 260 move.b E_DATA1(a0),d0 | ... 261 261 add.w d0,d0 | ... as an index in d0 262 lea _grpstat,a1 | check grpstat[grp]262 lea grpstat,a1 | check grpstat[grp] 263 263 tst.w 0(a1,d0.W) | ... 264 264 beq exexit | done if disabled 265 265 266 lea _s_trns,a1 | set group transposition266 lea s_trns,a1 | set group transposition 267 267 move.w E_LFT(a0),0(a1,d0.W) | ... 268 jsr _settune| ...268 jsr settune | ... 269 269 bra exexit | done 270 270 … … 276 276 move.b E_DATA1(a0),d0 | ... 277 277 move.w d0,-(a7) | settmpo(tempo) 278 jsr _settmpo| ...278 jsr settmpo | ... 279 279 tst.w (a7)+ | ... 280 280 bra exexit | done … … 283 283 | ------ ------------------ 284 284 exstop: clr.w -(a7) | stop the clock 285 jsr _clkset | ...285 jsr clkset | ... 286 286 tst.w (a7)+ | ... 287 287 bra exexit | that's all, folks … … 289 289 | exintp -- execute interpolate event 290 290 | ------ ------------------------- 291 exintp: move.w E_DATA1(a0), _curintp | set interpolate value291 exintp: move.w E_DATA1(a0),curintp | set interpolate value 292 292 bra exexit | done 293 293 … … 299 299 move.b E_DATA1(a0),d0 | ... in d0 300 300 add.w d0,d0 | ... as a word offset 301 lea _grpstat,a1 | check grpstat[grp]301 lea grpstat,a1 | check grpstat[grp] 302 302 tst.w 0(a1,d0.W) | ... 303 303 beq exexit | done if not enabled 304 304 305 lea _ins2grp,a1 | point at ins2grp[]305 lea ins2grp,a1 | point at ins2grp[] 306 306 clr.w d0 | get instrument number 307 307 move.b E_DATA2(a0),d0 | ... in d0 … … 314 314 or.w d0,d2 | OR in new instrument number 315 315 move.w d2,0(a1,d1.W) | set ins2grp[group] 316 jsr _setv2gi| setv2gi(group)316 jsr setv2gi | setv2gi(group) 317 317 tst.w (a7)+ | clean up stack 318 318 bra exexit | done … … 325 325 move.b E_DATA1(a0),d0 | ... in d0 326 326 add.w d0,d0 | ... as a word offset 327 lea _grpstat,a1 | check grpstat[grp]327 lea grpstat,a1 | check grpstat[grp] 328 328 tst.w 0(a1,d0.W) | ... 329 329 beq exexit | done if not enabled … … 335 335 move.w d0,-(a7) | setdyn(group, dyn) 336 336 move.w d1,-(a7) | ... 337 jsr _setdyn | ...337 jsr setdyn | ... 338 338 adda.l #4,a7 | clean up stack 339 339 bra exexit | done … … 344 344 move.b E_DATA1(a0),d0 | ... in d0 345 345 add.w d0,d0 | ... as a word offset 346 lea _grpstat,a1 | check grpstat[grp]346 lea grpstat,a1 | check grpstat[grp] 347 347 tst.w 0(a1,d0.W) | ... 348 348 beq exexit | done if not enabled … … 354 354 move.w d0,-(a7) | setloc(group, loc) 355 355 move.w d1,-(a7) | ... 356 jsr _setloc | ...356 jsr setloc | ... 357 357 adda.l #4,a7 | clean up stack 358 358 bra exexit | done … … 365 365 andi.w #0x000F,d0 | ... in d0 366 366 add.w d0,d0 | ... as a word offset 367 lea _grpstat,a1 | check grpstat[grp]367 lea grpstat,a1 | check grpstat[grp] 368 368 tst.w 0(a1,d0.W) | ... 369 369 beq exexit | done if not enabled … … 374 374 clr.w d0 | get resolution 375 375 move.b E_DATA2(a0),d0 | ... in d0 376 lea _anrs,a1| point at resolution table base376 lea anrs,a1 | point at resolution table base 377 377 move.w d0,0(a1,d1.W) | save resolution in table 378 378 bra exexit | done … … 383 383 andi.w #0x000F,d0 | ... in d0 384 384 add.w d0,d0 | ... as a word offset 385 lea _grpstat,a1 | check grpstat[grp]385 lea grpstat,a1 | check grpstat[grp] 386 386 tst.w 0(a1,d0.W) | ... 387 387 beq exexit | done if not enabled … … 394 394 lsr.w #3,d2 | extract variable number 395 395 andi.w #0x001E,d2 | ... as a word index in d2 396 lea _var2src,a1 | point at variable map396 lea var2src,a1 | point at variable map 397 397 move.w 0(a1,d2.W),-(a7) | put source number on stack 398 398 move.w d1,-(a7) | put group number on stack 399 jsr _setsv | setsv(group, src, val)399 jsr setsv | setsv(group, src, val) 400 400 adda.l #6,a7 | clean up stack 401 401 bra exexit | done … … 403 403 | exnext -- next score 404 404 | ------ ---------- 405 exnext: move.w #1, _nxtflag | set next score flag405 exnext: move.w #1,nxtflag | set next score flag 406 406 bra exexit | done 407 407 … … 410 410 | expnch -- execute punch in/out 411 411 | ------ -------------------- 412 expnch: tst.w _recsw | recording ?412 expnch: tst.w recsw | recording ? 413 413 beq exexit | ignore if not 414 414 … … 418 418 | punch out 419 419 420 lea _grpmode,a1 | setup for group modes420 lea grpmode,a1 | setup for group modes 421 421 move.w #11,d0 | ... 422 422 … … 429 429 dbra d0,expnch0 | loop through all groups 430 430 431 lea _varmode,a1 | setup for variable modes431 lea varmode,a1 | setup for variable modes 432 432 move.w #5,d1 | set variable count 433 433 … … 452 452 | punch in 453 453 454 expnch5: lea _grpmode,a1 | setup for group modes454 expnch5: lea grpmode,a1 | setup for group modes 455 455 move.w #11,d0 | ... 456 456 … … 463 463 dbra d0,expnch6 | loop through all groups 464 464 465 lea _varmode,a1 | setup for variable modes465 lea varmode,a1 | setup for variable modes 466 466 move.w #5,d1 | set variable count 467 467 -
ram/serintr.s
r84c0125 r8325447 13 13 .text 14 14 15 .xdef _setsio16 17 .xdef _foot118 .xdef _foot219 .xdef _pulse120 .xdef _pulse215 .xdef setsio 16 17 .xdef foot1 18 .xdef foot2 19 .xdef pulse1 20 .xdef pulse2 21 21 22 22 .xdef serintr … … 108 108 lea SR1IOREC,a0 | Point at Serial-1 iorec 109 109 lea SR1ACIA,a1 | Point at Serial-1 ACIA 110 movea.l _foot1,a2 | Point at foot sw. 1 processor110 movea.l foot1,a2 | Point at foot sw. 1 processor 111 111 bsr serint | Go process (possible) int. 112 112 113 113 lea SR2IOREC,a0 | Point at Serial-2 iorec 114 114 lea SR2ACIA,a1 | Point at Serial-2 ACIA 115 movea.l _foot2,a2 | Point at foot sw. 2 processor115 movea.l foot2,a2 | Point at foot sw. 2 processor 116 116 bsr serint | Go process (possible) int. 117 117 118 118 lea MC1IOREC,a0 | Point at MIDI-1 iorec 119 119 lea MC1ACIA,a1 | Point at MIDI-1 ACIA 120 movea.l _pulse1,a2 | Point at pulse 1 processor120 movea.l pulse1,a2 | Point at pulse 1 processor 121 121 bsr midint | Go process (possible) int. 122 122 123 123 lea MC2IOREC,a0 | Point at MIDI-2 iorec 124 124 lea MC2ACIA,a1 | Point at MIDI-2 ACIA 125 movea.l _pulse2,a2 | Point at pulse 2 processor125 movea.l pulse2,a2 | Point at pulse 2 processor 126 126 bsr midint | Go process (possible) int. 127 127 … … 490 490 .page 491 491 492 | _setsio -- setsio() -- initialize serial I/O vectors and DCD interrupts493 | ------ -------------------------------------------------------------494 _setsio:move.w sr,-(a7) | Preserve status register492 | setsio -- setsio() -- initialize serial I/O vectors and DCD interrupts 493 | ------ ------------------------------------------------------------ 494 setsio: move.w sr,-(a7) | Preserve status register 495 495 ori.w #IPL7,sr | DISABLE INTERRUPTS 496 496 497 497 lea nulsiox,a0 | Get null return address 498 move.l a0, _foot1 | Initialize foot1 vector499 move.l a0, _foot2 | Initialize foot2 vector500 move.l a0, _pulse1 | Initialize pulse1 vector501 move.l a0, _pulse2 | Initialize pulse2 vector498 move.l a0,foot1 | Initialize foot1 vector 499 move.l a0,foot2 | Initialize foot2 vector 500 move.l a0,pulse1 | Initialize pulse1 vector 501 move.l a0,pulse2 | Initialize pulse2 vector 502 502 503 503 lea SR1ACIA,a1 | Point at Serial-1 ACIA … … 524 524 | DCD interrupt processor vectors 525 525 | ------------------------------- 526 _foot1: .ds.l 1 | short (*foot1)();527 _foot2: .ds.l 1 | short (*foot2)();528 _pulse1:.ds.l 1 | short (*pulse1)();529 _pulse2:.ds.l 1 | short (*pulse2)();526 foot1: .ds.l 1 | short (*foot1)(); 527 foot2: .ds.l 1 | short (*foot2)(); 528 pulse1: .ds.l 1 | short (*pulse1)(); 529 pulse2: .ds.l 1 | short (*pulse2)(); 530 530 531 531 .end -
ram/sreset.s
r84c0125 r8325447 5 5 .text 6 6 7 .xdef _sreset | sreset()8 9 .xref _vputa | vputa(sbase, row, col, attrib)10 11 .xref _ndisp | WORD - display number12 .xref _obj8 | LONG - object base address13 .xref _vrbw08 | WORD - detail word for bit 814 .xref _vrbw09 | WORD - detail word for bit 915 .xref _vrbw10 | WORD - detail word for bit 1016 .xref _vrbw11 | WORD - detail word for bit 1117 .xref _vrbw12 | WORD - detail word for bit 1218 .xref _vrbw13 | WORD - detail word for bit 1319 .xref _vrbw14 | WORD - detail word for bit 1420 .xref _vrbw15 | WORD - detail word for bit 1521 .xref _vrcw | WORD - video reset control word7 .xdef sreset | sreset() 8 9 .xref vputa | vputa(sbase, row, col, attrib) 10 11 .xref ndisp | WORD - display number 12 .xref obj8 | LONG - object base address 13 .xref vrbw08 | WORD - detail word for bit 8 14 .xref vrbw09 | WORD - detail word for bit 9 15 .xref vrbw10 | WORD - detail word for bit 10 16 .xref vrbw11 | WORD - detail word for bit 11 17 .xref vrbw12 | WORD - detail word for bit 12 18 .xref vrbw13 | WORD - detail word for bit 13 19 .xref vrbw14 | WORD - detail word for bit 14 20 .xref vrbw15 | WORD - detail word for bit 15 21 .xref vrcw | WORD - video reset control word 22 22 23 23 ROW = 4 … … 40 40 | sreset() -- reset highlighting 41 41 | -------- ------------------ 42 _sreset:link a6,#0 | link stack frame43 cmp.w #2, _ndisp | see if we should update display42 sreset: link a6,#0 | link stack frame 43 cmp.w #2,ndisp | see if we should update display 44 44 bne srsexit | jump if not 45 45 46 move.w _vrcw,d0| get and check vrcw46 move.w vrcw,d0 | get and check vrcw 47 47 bne srs0 | jump if something to do 48 48 … … 53 53 ori.w #0x0700,sr | ... 54 54 55 move.w _vrcw,vrcw | make local copies of control variables56 clr.w _vrcw | ... and clear them for the next pass57 move.w _vrbw08,vrbw08 | ...58 clr.w _vrbw08 | ...59 move.w _vrbw09,vrbw09 | ...60 clr.w _vrbw09 | ...61 move.w _vrbw10,vrbw10 | ...62 clr.w _vrbw10 | ...63 move.w _vrbw11,vrbw11 | ...64 clr.w _vrbw11 | ...65 move.w _vrbw12,vrbw12 | ...66 clr.w _vrbw12 | ...67 move.w _vrbw13,vrbw13 | ...68 clr.w _vrbw13 | ...69 move.w _vrbw14,vrbw14 | ...70 clr.w _vrbw14 | ...71 move.w _vrbw15,vrbw15 | ...72 clr.w _vrbw15 | ...55 move.w vrcw,vrcw | make local copies of control variables 56 clr.w vrcw | ... and clear them for the next pass 57 move.w vrbw08,vrbw08 | ... 58 clr.w vrbw08 | ... 59 move.w vrbw09,vrbw09 | ... 60 clr.w vrbw09 | ... 61 move.w vrbw10,vrbw10 | ... 62 clr.w vrbw10 | ... 63 move.w vrbw11,vrbw11 | ... 64 clr.w vrbw11 | ... 65 move.w vrbw12,vrbw12 | ... 66 clr.w vrbw12 | ... 67 move.w vrbw13,vrbw13 | ... 68 clr.w vrbw13 | ... 69 move.w vrbw14,vrbw14 | ... 70 clr.w vrbw14 | ... 71 move.w vrbw15,vrbw15 | ... 72 clr.w vrbw15 | ... 73 73 74 74 move.w d1,sr | <<<<< restore interrupts >>>>> … … 85 85 clr.w -(a7) | put dummy column on stack 86 86 clr.w -(a7) | put dummy row on stack 87 move.l _obj8,-(a7) | put sbase on stack87 move.l obj8,-(a7) | put sbase on stack 88 88 89 89 .page … … 97 97 move.w #1,ROW(a7) | put row on stack 98 98 move.w #11,COL(a7) | put 1st column on stack 99 jsr _vputa | reset first column99 jsr vputa | reset first column 100 100 move.w #12,COL(a7) | put 2nd column on stack 101 jsr _vputa | reset second column101 jsr vputa | reset second column 102 102 move.w vrcw,d0 | restore vrcw to d0 103 103 … … 110 110 move.w #1,ROW(a7) | put row on stack 111 111 move.w #19,COL(a7) | put column on stack 112 jsr _vputa | reset column112 jsr vputa | reset column 113 113 move.w vrcw,d0 | restore vrcw to d0 114 114 … … 121 121 move.w #1,ROW(a7) | put row on stack 122 122 move.w #27,COL(a7) | put 1st column on stack 123 jsr _vputa | reset first column123 jsr vputa | reset first column 124 124 move.w #28,COL(a7) | put 2nd column on stack 125 jsr _vputa | reset second column125 jsr vputa | reset second column 126 126 move.w #29,COL(a7) | put 3rd column on stack 127 jsr _vputa | reset third column127 jsr vputa | reset third column 128 128 move.w vrcw,d0 | restore vrcw to d0 129 129 … … 138 138 move.w #1,ROW(a7) | put row on stack 139 139 move.w #35,COL(a7) | put 1st column on stack 140 jsr _vputa | reset first column140 jsr vputa | reset first column 141 141 move.w #36,COL(a7) | put 2nd column on stack 142 jsr _vputa | reset second column142 jsr vputa | reset second column 143 143 move.w #37,COL(a7) | put 3rd column on stack 144 jsr _vputa | reset third column144 jsr vputa | reset third column 145 145 move.w #38,COL(a7) | put 4th column on stack 146 jsr _vputa | reset fourth column146 jsr vputa | reset fourth column 147 147 move.w vrcw,d0 | restore vrcw to d0 148 148 … … 155 155 move.w #0,ROW(a7) | put row on stack 156 156 move.w #6,COL(a7) | put 1st column on stack 157 jsr _vputa | reset first column157 jsr vputa | reset first column 158 158 move.w #7,COL(a7) | put 2nd column on stack 159 jsr _vputa | reset second column159 jsr vputa | reset second column 160 160 161 161 .page … … 169 169 move.w #1,ROW(a7) | put row on stack 170 170 move.w #50,COL(a7) | put 1st column on stack 171 jsr _vputa | reset first column171 jsr vputa | reset first column 172 172 move.w #51,COL(a7) | put 2nd column on stack 173 jsr _vputa | reset second column173 jsr vputa | reset second column 174 174 move.w vrcw,d0 | restore vrcw to d0 175 175 … … 182 182 move.w #1,ROW(a7) | put row on stack 183 183 move.w #53,COL(a7) | put 1st column on stack 184 jsr _vputa | reset first column184 jsr vputa | reset first column 185 185 move.w #54,COL(a7) | put 2nd column on stack 186 jsr _vputa | reset second column186 jsr vputa | reset second column 187 187 move.w #55,COL(a7) | put 3rd column on stack 188 jsr _vputa | reset third column188 jsr vputa | reset third column 189 189 move.w vrcw,d0 | restore vrcw to d0 190 190 … … 197 197 move.w #1,ROW(a7) | put row on stack 198 198 move.w #57,COL(a7) | put 1st column on stack 199 jsr _vputa | reset first column199 jsr vputa | reset first column 200 200 move.w #58,COL(a7) | put 2nd column on stack 201 jsr _vputa | reset second column201 jsr vputa | reset second column 202 202 move.w #59,COL(a7) | put 3rd column on stack 203 jsr _vputa | reset third column203 jsr vputa | reset third column 204 204 move.w #60,COL(a7) | put 4th column on stack 205 jsr _vputa | reset fourth column205 jsr vputa | reset fourth column 206 206 move.w #61,COL(a7) | put 5th column on stack 207 jsr _vputa | reset fifth column207 jsr vputa | reset fifth column 208 208 move.w #62,COL(a7) | put 6th column on stack 209 jsr _vputa | reset sixth column209 jsr vputa | reset sixth column 210 210 move.w vrcw,d0 | restore vrcw to d0 211 211 … … 223 223 224 224 move.w #7,COL(a7) | put 1st column on stack 225 jsr _vputa | reset first column225 jsr vputa | reset first column 226 226 move.w #8,COL(a7) | put 2nd column on stack 227 jsr _vputa | reset second column227 jsr vputa | reset second column 228 228 229 229 srs8a: btst #1,vrbw08+1 | group 2 ? … … 231 231 232 232 move.w #12,COL(a7) | put 1st column on stack 233 jsr _vputa | reset first character233 jsr vputa | reset first character 234 234 move.w #13,COL(a7) | put 2nd column on stack 235 jsr _vputa | reset second character235 jsr vputa | reset second character 236 236 237 237 srs8b: btst #2,vrbw08+1 | group 3 ? … … 239 239 240 240 move.w #17,COL(a7) | put 1st column on stack 241 jsr _vputa | reset first character241 jsr vputa | reset first character 242 242 move.w #18,COL(a7) | put 2nd column on stack 243 jsr _vputa | reset second character243 jsr vputa | reset second character 244 244 245 245 srs8c: btst #3,vrbw08+1 | group 4 ? … … 247 247 248 248 move.w #22,COL(a7) | put 1st column on stack 249 jsr _vputa | reset first character249 jsr vputa | reset first character 250 250 move.w #23,COL(a7) | put 2nd column on stack 251 jsr _vputa | reset second character251 jsr vputa | reset second character 252 252 253 253 .page … … 257 257 258 258 move.w #27,COL(a7) | put 1st column on stack 259 jsr _vputa | reset first character259 jsr vputa | reset first character 260 260 move.w #28,COL(a7) | put 2nd column on stack 261 jsr _vputa | reset second character261 jsr vputa | reset second character 262 262 263 263 srs8e: btst #5,vrbw08+1 | group 6 ? … … 265 265 266 266 move.w #32,COL(a7) | put 1st column on stack 267 jsr _vputa | reset first character267 jsr vputa | reset first character 268 268 move.w #33,COL(a7) | put 2nd column on stack 269 jsr _vputa | reset second character269 jsr vputa | reset second character 270 270 271 271 srs8f: btst #6,vrbw08+1 | group 7 ? … … 273 273 274 274 move.w #37,COL(a7) | put 1st column on stack 275 jsr _vputa | reset first character275 jsr vputa | reset first character 276 276 move.w #38,COL(a7) | put 2nd column on stack 277 jsr _vputa | reset second character277 jsr vputa | reset second character 278 278 279 279 srs8g: btst #7,vrbw08+1 | group 8 ? … … 281 281 282 282 move.w #42,COL(a7) | put 1st column on stack 283 jsr _vputa | reset first character283 jsr vputa | reset first character 284 284 move.w #43,COL(a7) | put 2nd column on stack 285 jsr _vputa | reset second character285 jsr vputa | reset second character 286 286 287 287 .page … … 291 291 292 292 move.w #47,COL(a7) | put 1st column on stack 293 jsr _vputa | reset first character293 jsr vputa | reset first character 294 294 move.w #48,COL(a7) | put 2nd column on stack 295 jsr _vputa | reset second character295 jsr vputa | reset second character 296 296 297 297 srs8j: btst #1,vrbw08 | group 10 … … 299 299 300 300 move.w #52,COL(a7) | put 1st column on stack 301 jsr _vputa | reset first character301 jsr vputa | reset first character 302 302 move.w #53,COL(a7) | put 2nd column on stack 303 jsr _vputa | reset second character303 jsr vputa | reset second character 304 304 305 305 srs8k: btst #2,vrbw08 | group 11 … … 307 307 308 308 move.w #57,COL(a7) | put 1st column on stack 309 jsr _vputa | reset first character309 jsr vputa | reset first character 310 310 move.w #58,COL(a7) | put 2nd column on stack 311 jsr _vputa | reset second character311 jsr vputa | reset second character 312 312 313 313 srs8m: btst #3,vrbw08 | group 12 … … 315 315 316 316 move.w #62,COL(a7) | put 1st column on stack 317 jsr _vputa | reset first character317 jsr vputa | reset first character 318 318 move.w #63,COL(a7) | put 2nd column on stack 319 jsr _vputa | reset second character319 jsr vputa | reset second character 320 320 321 321 srs8x: move.w vrcw,d0 | restore vrcw to d0 … … 334 334 335 335 move.w #5,COL(a7) | put 1st column on stack 336 jsr _vputa | reset first column336 jsr vputa | reset first column 337 337 move.w #6,COL(a7) | put 2nd column on stack 338 jsr _vputa | reset second column338 jsr vputa | reset second column 339 339 move.w #7,COL(a7) | put 3rd column on stack 340 jsr _vputa | reset third column340 jsr vputa | reset third column 341 341 move.w #8,COL(a7) | put 4th column on stack 342 jsr _vputa | reset fourth column342 jsr vputa | reset fourth column 343 343 344 344 srs9a: btst #1,vrbw09+1 | group 2 ? … … 346 346 347 347 move.w #10,COL(a7) | put 1st column on stack 348 jsr _vputa | reset first column348 jsr vputa | reset first column 349 349 move.w #11,COL(a7) | put 2nd column on stack 350 jsr _vputa | reset second column350 jsr vputa | reset second column 351 351 move.w #12,COL(a7) | put 3rd column on stack 352 jsr _vputa | reset third column352 jsr vputa | reset third column 353 353 move.w #13,COL(a7) | put 4th column on stack 354 jsr _vputa | reset fourth column354 jsr vputa | reset fourth column 355 355 356 356 srs9b: btst #2,vrbw09+1 | group 3 ? … … 358 358 359 359 move.w #15,COL(a7) | put 1st column on stack 360 jsr _vputa | reset first column360 jsr vputa | reset first column 361 361 move.w #16,COL(a7) | put 2nd column on stack 362 jsr _vputa | reset second column362 jsr vputa | reset second column 363 363 move.w #17,COL(a7) | put 3rd column on stack 364 jsr _vputa | reset third column364 jsr vputa | reset third column 365 365 move.w #18,COL(a7) | put 4th column on stack 366 jsr _vputa | reset fourth column366 jsr vputa | reset fourth column 367 367 368 368 .page … … 372 372 373 373 move.w #20,COL(a7) | put 1st column on stack 374 jsr _vputa | reset first column374 jsr vputa | reset first column 375 375 move.w #21,COL(a7) | put 2nd column on stack 376 jsr _vputa | reset second column376 jsr vputa | reset second column 377 377 move.w #22,COL(a7) | put 3rd column on stack 378 jsr _vputa | reset third column378 jsr vputa | reset third column 379 379 move.w #23,COL(a7) | put 4th column on stack 380 jsr _vputa | reset fourth column380 jsr vputa | reset fourth column 381 381 382 382 srs9d: btst #4,vrbw09+1 | group 5 ? … … 384 384 385 385 move.w #25,COL(a7) | put 1st column on stack 386 jsr _vputa | reset first column386 jsr vputa | reset first column 387 387 move.w #26,COL(a7) | put 2nd column on stack 388 jsr _vputa | reset second column388 jsr vputa | reset second column 389 389 move.w #27,COL(a7) | put 3rd column on stack 390 jsr _vputa | reset third column390 jsr vputa | reset third column 391 391 move.w #28,COL(a7) | put 4th column on stack 392 jsr _vputa | reset fourth column392 jsr vputa | reset fourth column 393 393 394 394 srs9e: btst #5,vrbw09+1 | group 6 ? … … 396 396 397 397 move.w #30,COL(a7) | put 1st column on stack 398 jsr _vputa | reset first column398 jsr vputa | reset first column 399 399 move.w #31,COL(a7) | put 2nd column on stack 400 jsr _vputa | reset second column400 jsr vputa | reset second column 401 401 move.w #32,COL(a7) | put 3rd column on stack 402 jsr _vputa | reset third column402 jsr vputa | reset third column 403 403 move.w #33,COL(a7) | put 4th column on stack 404 jsr _vputa | reset fourth column404 jsr vputa | reset fourth column 405 405 406 406 .page … … 410 410 411 411 move.w #35,COL(a7) | put 1st column on stack 412 jsr _vputa | reset first column412 jsr vputa | reset first column 413 413 move.w #36,COL(a7) | put 2nd column on stack 414 jsr _vputa | reset second column414 jsr vputa | reset second column 415 415 move.w #37,COL(a7) | put 3rd column on stack 416 jsr _vputa | reset third column416 jsr vputa | reset third column 417 417 move.w #38,COL(a7) | put 4th column on stack 418 jsr _vputa | reset fourth column418 jsr vputa | reset fourth column 419 419 420 420 srs9g: btst #7,vrbw09+1 | group 8 ? … … 422 422 423 423 move.w #40,COL(a7) | put 1st column on stack 424 jsr _vputa | reset first column424 jsr vputa | reset first column 425 425 move.w #41,COL(a7) | put 2nd column on stack 426 jsr _vputa | reset second column426 jsr vputa | reset second column 427 427 move.w #42,COL(a7) | put 3rd column on stack 428 jsr _vputa | reset third column428 jsr vputa | reset third column 429 429 move.w #43,COL(a7) | put 4th column on stack 430 jsr _vputa | reset fourth column430 jsr vputa | reset fourth column 431 431 432 432 srs9h: btst #0,vrbw09 | group 9 … … 434 434 435 435 move.w #45,COL(a7) | put 1st column on stack 436 jsr _vputa | reset first column436 jsr vputa | reset first column 437 437 move.w #46,COL(a7) | put 2nd column on stack 438 jsr _vputa | reset second column438 jsr vputa | reset second column 439 439 move.w #47,COL(a7) | put 3rd column on stack 440 jsr _vputa | reset third column440 jsr vputa | reset third column 441 441 move.w #48,COL(a7) | put 4th column on stack 442 jsr _vputa | reset fourth column442 jsr vputa | reset fourth column 443 443 444 444 .page … … 448 448 449 449 move.w #50,COL(a7) | put 1st column on stack 450 jsr _vputa | reset first column450 jsr vputa | reset first column 451 451 move.w #51,COL(a7) | put 2nd column on stack 452 jsr _vputa | reset second column452 jsr vputa | reset second column 453 453 move.w #52,COL(a7) | put 3rd column on stack 454 jsr _vputa | reset third column454 jsr vputa | reset third column 455 455 move.w #53,COL(a7) | put 4th column on stack 456 jsr _vputa | reset fourth column456 jsr vputa | reset fourth column 457 457 458 458 srs9k: btst #2,vrbw09 | group 11 … … 460 460 461 461 move.w #55,COL(a7) | put 1st column on stack 462 jsr _vputa | reset first column462 jsr vputa | reset first column 463 463 move.w #56,COL(a7) | put 2nd column on stack 464 jsr _vputa | reset second column464 jsr vputa | reset second column 465 465 move.w #57,COL(a7) | put 3rd column on stack 466 jsr _vputa | reset third column466 jsr vputa | reset third column 467 467 move.w #58,COL(a7) | put 4th column on stack 468 jsr _vputa | reset fourth column468 jsr vputa | reset fourth column 469 469 470 470 srs9m: btst #3,vrbw09 | group 12 … … 472 472 473 473 move.w #60,COL(a7) | put 1st column on stack 474 jsr _vputa | reset first column474 jsr vputa | reset first column 475 475 move.w #61,COL(a7) | put 2nd column on stack 476 jsr _vputa | reset second column476 jsr vputa | reset second column 477 477 move.w #62,COL(a7) | put 3rd column on stack 478 jsr _vputa | reset third column478 jsr vputa | reset third column 479 479 move.w #63,COL(a7) | put 4th column on stack 480 jsr _vputa | reset fourth column480 jsr vputa | reset fourth column 481 481 482 482 srs9x: move.w vrcw,d0 | restore vrcw to d0 … … 495 495 496 496 move.w #6,COL(a7) | put column on stack 497 jsr _vputa | reset column497 jsr vputa | reset column 498 498 499 499 srs10a: btst #1,vrbw10+1 | group 2 ? … … 501 501 502 502 move.w #11,COL(a7) | put column on stack 503 jsr _vputa | reset column503 jsr vputa | reset column 504 504 505 505 srs10b: btst #2,vrbw10+1 | group 3 ? … … 507 507 508 508 move.w #16,COL(a7) | put column on stack 509 jsr _vputa | reset column509 jsr vputa | reset column 510 510 511 511 srs10c: btst #3,vrbw10+1 | group 4 ? … … 513 513 514 514 move.w #21,COL(a7) | put column on stack 515 jsr _vputa | reset column515 jsr vputa | reset column 516 516 517 517 .page … … 521 521 522 522 move.w #26,COL(a7) | put column on stack 523 jsr _vputa | reset column523 jsr vputa | reset column 524 524 525 525 srs10e: btst #5,vrbw10+1 | group 6 ? … … 527 527 528 528 move.w #31,COL(a7) | put column on stack 529 jsr _vputa | reset column529 jsr vputa | reset column 530 530 531 531 srs10f: btst #6,vrbw10+1 | group 7 ? … … 533 533 534 534 move.w #36,COL(a7) | put column on stack 535 jsr _vputa | reset column535 jsr vputa | reset column 536 536 537 537 srs10g: btst #7,vrbw10+1 | group 8 ? … … 539 539 540 540 move.w #41,COL(a7) | put column on stack 541 jsr _vputa | reset column541 jsr vputa | reset column 542 542 543 543 .page … … 547 547 548 548 move.w #46,COL(a7) | put column on stack 549 jsr _vputa | reset column549 jsr vputa | reset column 550 550 551 551 srs10j: btst #1,vrbw10 | group 10 … … 553 553 554 554 move.w #51,COL(a7) | put column on stack 555 jsr _vputa | reset column555 jsr vputa | reset column 556 556 557 557 srs10k: btst #2,vrbw10 | group 11 … … 559 559 560 560 move.w #56,COL(a7) | put column on stack 561 jsr _vputa | reset column561 jsr vputa | reset column 562 562 563 563 srs10m: btst #3,vrbw10 | group 12 … … 565 565 566 566 move.w #61,COL(a7) | put column on stack 567 jsr _vputa | reset column567 jsr vputa | reset column 568 568 569 569 srs10x: move.w vrcw,d0 | restore vrcw to d0 … … 582 582 583 583 move.w #8,COL(a7) | put column on stack 584 jsr _vputa | reset column584 jsr vputa | reset column 585 585 586 586 srs11a: btst #1,vrbw11+1 | group 2 ? … … 588 588 589 589 move.w #13,COL(a7) | put column on stack 590 jsr _vputa | reset column590 jsr vputa | reset column 591 591 592 592 srs11b: btst #2,vrbw11+1 | group 3 ? … … 594 594 595 595 move.w #18,COL(a7) | put column on stack 596 jsr _vputa | reset column596 jsr vputa | reset column 597 597 598 598 srs11c: btst #3,vrbw11+1 | group 4 ? … … 600 600 601 601 move.w #23,COL(a7) | put column on stack 602 jsr _vputa | reset column602 jsr vputa | reset column 603 603 604 604 .page … … 608 608 609 609 move.w #28,COL(a7) | put column on stack 610 jsr _vputa | reset column610 jsr vputa | reset column 611 611 612 612 srs11e: btst #5,vrbw11+1 | group 6 ? … … 614 614 615 615 move.w #33,COL(a7) | put column on stack 616 jsr _vputa | reset column616 jsr vputa | reset column 617 617 618 618 srs11f: btst #6,vrbw11+1 | group 7 ? … … 620 620 621 621 move.w #38,COL(a7) | put column on stack 622 jsr _vputa | reset column622 jsr vputa | reset column 623 623 624 624 srs11g: btst #7,vrbw11+1 | group 8 ? … … 626 626 627 627 move.w #43,COL(a7) | put column on stack 628 jsr _vputa | reset column628 jsr vputa | reset column 629 629 630 630 .page … … 634 634 635 635 move.w #48,COL(a7) | put column on stack 636 jsr _vputa | reset column636 jsr vputa | reset column 637 637 638 638 srs11j: btst #1,vrbw11 | group 10 … … 640 640 641 641 move.w #53,COL(a7) | put column on stack 642 jsr _vputa | reset column642 jsr vputa | reset column 643 643 644 644 srs11k: btst #2,vrbw11 | group 11 … … 646 646 647 647 move.w #58,COL(a7) | put column on stack 648 jsr _vputa | reset column648 jsr vputa | reset column 649 649 650 650 srs11m: btst #3,vrbw11 | group 12 … … 652 652 653 653 move.w #63,COL(a7) | put column on stack 654 jsr _vputa | reset column654 jsr vputa | reset column 655 655 656 656 srs11x: move.w vrcw,d0 | restore vrcw to d0 … … 669 669 670 670 move.w #6,COL(a7) | put 1st column on stack 671 jsr _vputa | reset first column671 jsr vputa | reset first column 672 672 move.w #7,COL(a7) | put 2nd column on stack 673 jsr _vputa | reset second column673 jsr vputa | reset second column 674 674 move.w #8,COL(a7) | put 3rd column on stack 675 jsr _vputa | reset third column675 jsr vputa | reset third column 676 676 677 677 srs12a: btst #1,vrbw12+1 | group 2 ? … … 679 679 680 680 move.w #11,COL(a7) | put 1st column on stack 681 jsr _vputa | reset first column681 jsr vputa | reset first column 682 682 move.w #12,COL(a7) | put 2nd column on stack 683 jsr _vputa | reset second column683 jsr vputa | reset second column 684 684 move.w #13,COL(a7) | put 3rd column on stack 685 jsr _vputa | reset third column685 jsr vputa | reset third column 686 686 687 687 srs12b: btst #2,vrbw12+1 | group 3 ? … … 689 689 690 690 move.w #16,COL(a7) | put 1st column on stack 691 jsr _vputa | reset first column691 jsr vputa | reset first column 692 692 move.w #17,COL(a7) | put 2nd column on stack 693 jsr _vputa | reset second column693 jsr vputa | reset second column 694 694 move.w #18,COL(a7) | put 3rd column on stack 695 jsr _vputa | reset third column695 jsr vputa | reset third column 696 696 697 697 .page … … 701 701 702 702 move.w #21,COL(a7) | put 1st column on stack 703 jsr _vputa | reset first column703 jsr vputa | reset first column 704 704 move.w #22,COL(a7) | put 2nd column on stack 705 jsr _vputa | reset second column705 jsr vputa | reset second column 706 706 move.w #23,COL(a7) | put 3rd column on stack 707 jsr _vputa | reset third column707 jsr vputa | reset third column 708 708 709 709 srs12d: btst #4,vrbw12+1 | group 5 ? … … 711 711 712 712 move.w #26,COL(a7) | put 1st column on stack 713 jsr _vputa | reset first column713 jsr vputa | reset first column 714 714 move.w #27,COL(a7) | put 2nd column on stack 715 jsr _vputa | reset second column715 jsr vputa | reset second column 716 716 move.w #28,COL(a7) | put 3rd column on stack 717 jsr _vputa | reset third column717 jsr vputa | reset third column 718 718 719 719 srs12e: btst #5,vrbw12+1 | group 6 ? … … 721 721 722 722 move.w #31,COL(a7) | put 1st column on stack 723 jsr _vputa | reset first column723 jsr vputa | reset first column 724 724 move.w #32,COL(a7) | put 2nd column on stack 725 jsr _vputa | reset second column725 jsr vputa | reset second column 726 726 move.w #33,COL(a7) | put 3rd column on stack 727 jsr _vputa | reset third column727 jsr vputa | reset third column 728 728 729 729 .page … … 733 733 734 734 move.w #36,COL(a7) | put 1st column on stack 735 jsr _vputa | reset first column735 jsr vputa | reset first column 736 736 move.w #37,COL(a7) | put 2nd column on stack 737 jsr _vputa | reset second column737 jsr vputa | reset second column 738 738 move.w #38,COL(a7) | put 3rd column on stack 739 jsr _vputa | reset third column739 jsr vputa | reset third column 740 740 741 741 srs12g: btst #7,vrbw12+1 | group 8 ? … … 743 743 744 744 move.w #41,COL(a7) | put 1st column on stack 745 jsr _vputa | reset first column745 jsr vputa | reset first column 746 746 move.w #42,COL(a7) | put 2nd column on stack 747 jsr _vputa | reset second column747 jsr vputa | reset second column 748 748 move.w #43,COL(a7) | put 3rd column on stack 749 jsr _vputa | reset third column749 jsr vputa | reset third column 750 750 751 751 srs12h: btst #0,vrbw12 | group 9 … … 753 753 754 754 move.w #46,COL(a7) | put 1st column on stack 755 jsr _vputa | reset first column755 jsr vputa | reset first column 756 756 move.w #47,COL(a7) | put 2nd column on stack 757 jsr _vputa | reset second column757 jsr vputa | reset second column 758 758 move.w #48,COL(a7) | put 3rd column on stack 759 jsr _vputa | reset third column759 jsr vputa | reset third column 760 760 761 761 .page … … 765 765 766 766 move.w #51,COL(a7) | put 1st column on stack 767 jsr _vputa | reset first column767 jsr vputa | reset first column 768 768 move.w #52,COL(a7) | put 2nd column on stack 769 jsr _vputa | reset second column769 jsr vputa | reset second column 770 770 move.w #53,COL(a7) | put 3rd column on stack 771 jsr _vputa | reset third column771 jsr vputa | reset third column 772 772 773 773 srs12k: btst #2,vrbw12 | group 11 … … 775 775 776 776 move.w #56,COL(a7) | put 1st column on stack 777 jsr _vputa | reset first column777 jsr vputa | reset first column 778 778 move.w #57,COL(a7) | put 2nd column on stack 779 jsr _vputa | reset second column779 jsr vputa | reset second column 780 780 move.w #58,COL(a7) | put 3rd column on stack 781 jsr _vputa | reset third column781 jsr vputa | reset third column 782 782 783 783 srs12m: btst #3,vrbw12 | group 12 … … 785 785 786 786 move.w #61,COL(a7) | put 1st column on stack 787 jsr _vputa | reset first column787 jsr vputa | reset first column 788 788 move.w #62,COL(a7) | put 2nd column on stack 789 jsr _vputa | reset second column789 jsr vputa | reset second column 790 790 move.w #63,COL(a7) | put 3rd column on stack 791 jsr _vputa | reset third column791 jsr vputa | reset third column 792 792 793 793 srs12x: move.w vrcw,d0 | restore vrcw to d0 … … 806 806 807 807 move.w #6,COL(a7) | put column on stack 808 jsr _vputa | reset column808 jsr vputa | reset column 809 809 810 810 srs13a: btst #1,vrbw13+1 | variable 2 ? … … 812 812 813 813 move.w #15,COL(a7) | put column on stack 814 jsr _vputa | reset column814 jsr vputa | reset column 815 815 816 816 srs13b: btst #2,vrbw13+1 | variable 3 ? … … 818 818 819 819 move.w #24,COL(a7) | put column on stack 820 jsr _vputa | reset column820 jsr vputa | reset column 821 821 822 822 srs13c: btst #3,vrbw13+1 | variable 4 ? … … 824 824 825 825 move.w #33,COL(a7) | put column on stack 826 jsr _vputa | reset column826 jsr vputa | reset column 827 827 828 828 srs13d: btst #4,vrbw13+1 | variable 5 ? … … 830 830 831 831 move.w #42,COL(a7) | put column on stack 832 jsr _vputa | reset column832 jsr vputa | reset column 833 833 834 834 srs13e: btst #5,vrbw13+1 | variable 6 ? … … 836 836 837 837 move.w #51,COL(a7) | put column on stack 838 jsr _vputa | reset column838 jsr vputa | reset column 839 839 840 840 srs13x: move.w vrcw,d0 | restore vrcw to d0 … … 853 853 854 854 move.w #8,COL(a7) | put 1st column on stack 855 jsr _vputa | reset first column855 jsr vputa | reset first column 856 856 move.w #9,COL(a7) | put 2nd column on stack 857 jsr _vputa | reset second column857 jsr vputa | reset second column 858 858 move.w #10,COL(a7) | put 3rd column on stack 859 jsr _vputa | reset third column859 jsr vputa | reset third column 860 860 move.w #11,COL(a7) | put 4th column on stack 861 jsr _vputa | reset fourth column861 jsr vputa | reset fourth column 862 862 move.w #12,COL(a7) | put 5th column on stack 863 jsr _vputa | reset fifth column863 jsr vputa | reset fifth column 864 864 865 865 srs14a: btst #1,vrbw14+1 | variable 2 ? … … 867 867 868 868 move.w #17,COL(a7) | put 1st column on stack 869 jsr _vputa | reset first column869 jsr vputa | reset first column 870 870 move.w #18,COL(a7) | put 2nd column on stack 871 jsr _vputa | reset second column871 jsr vputa | reset second column 872 872 move.w #19,COL(a7) | put 3rd column on stack 873 jsr _vputa | reset third column873 jsr vputa | reset third column 874 874 move.w #20,COL(a7) | put 4th column on stack 875 jsr _vputa | reset fourth column875 jsr vputa | reset fourth column 876 876 move.w #21,COL(a7) | put 5th column on stack 877 jsr _vputa | reset fifth column877 jsr vputa | reset fifth column 878 878 879 879 .page … … 883 883 884 884 move.w #26,COL(a7) | put 1st column on stack 885 jsr _vputa | reset first column885 jsr vputa | reset first column 886 886 move.w #27,COL(a7) | put 2nd column on stack 887 jsr _vputa | reset second column887 jsr vputa | reset second column 888 888 move.w #28,COL(a7) | put 3rd column on stack 889 jsr _vputa | reset third column889 jsr vputa | reset third column 890 890 move.w #29,COL(a7) | put 4th column on stack 891 jsr _vputa | reset fourth column891 jsr vputa | reset fourth column 892 892 move.w #30,COL(a7) | put 5th column on stack 893 jsr _vputa | reset fifth column893 jsr vputa | reset fifth column 894 894 895 895 srs14c: btst #3,vrbw14+1 | variable 4 ? … … 897 897 898 898 move.w #35,COL(a7) | put 1st column on stack 899 jsr _vputa | reset first column899 jsr vputa | reset first column 900 900 move.w #36,COL(a7) | put 2nd column on stack 901 jsr _vputa | reset second column901 jsr vputa | reset second column 902 902 move.w #37,COL(a7) | put 3rd column on stack 903 jsr _vputa | reset third column903 jsr vputa | reset third column 904 904 move.w #38,COL(a7) | put 4th column on stack 905 jsr _vputa | reset fourth column905 jsr vputa | reset fourth column 906 906 move.w #39,COL(a7) | put 5th column on stack 907 jsr _vputa | reset fifth column907 jsr vputa | reset fifth column 908 908 909 909 .page … … 913 913 914 914 move.w #44,COL(a7) | put 1st column on stack 915 jsr _vputa | reset first column915 jsr vputa | reset first column 916 916 move.w #45,COL(a7) | put 2nd column on stack 917 jsr _vputa | reset second column917 jsr vputa | reset second column 918 918 move.w #46,COL(a7) | put 3rd column on stack 919 jsr _vputa | reset third column919 jsr vputa | reset third column 920 920 move.w #47,COL(a7) | put 4th column on stack 921 jsr _vputa | reset fourth column921 jsr vputa | reset fourth column 922 922 move.w #48,COL(a7) | put 5th column on stack 923 jsr _vputa | reset fifth column923 jsr vputa | reset fifth column 924 924 925 925 srs14e: btst #5,vrbw14+1 | variable 6 ? … … 927 927 928 928 move.w #53,COL(a7) | put 1st column on stack 929 jsr _vputa | reset first column929 jsr vputa | reset first column 930 930 move.w #54,COL(a7) | put 2nd column on stack 931 jsr _vputa | reset second column931 jsr vputa | reset second column 932 932 move.w #55,COL(a7) | put 3rd column on stack 933 jsr _vputa | reset third column933 jsr vputa | reset third column 934 934 move.w #56,COL(a7) | put 4th column on stack 935 jsr _vputa | reset fourth column935 jsr vputa | reset fourth column 936 936 move.w #57,COL(a7) | put 5th column on stack 937 jsr _vputa | reset fifth column937 jsr vputa | reset fifth column 938 938 939 939 srs14x: move.w vrcw,d0 | restore vrcw to d0 … … 952 952 move.w #1,ROW(a7) | put row on stack 953 953 move.w #40,COL(a7) | put 1st column on stack 954 jsr _vputa | reset first column954 jsr vputa | reset first column 955 955 move.w #41,COL(a7) | put 2nd column on stack 956 jsr _vputa | reset second column956 jsr vputa | reset second column 957 957 move.w #42,COL(a7) | put 3rd column on stack 958 jsr _vputa | reset third column958 jsr vputa | reset third column 959 959 move.w #43,COL(a7) | put 4th column on stack 960 jsr _vputa | reset fourth column960 jsr vputa | reset fourth column 961 961 962 962 srs15a: btst #1,vrbw15 | next ? … … 966 966 move.w #1,ROW(a7) | put row on stack 967 967 move.w #45,COL(a7) | put 1st column on stack 968 jsr _vputa | reset first column968 jsr vputa | reset first column 969 969 move.w #46,COL(a7) | put 2nd column on stack 970 jsr _vputa | reset second column970 jsr vputa | reset second column 971 971 move.w #47,COL(a7) | put 3rd column on stack 972 jsr _vputa | reset third column972 jsr vputa | reset third column 973 973 move.w #48,COL(a7) | put 4th column on stack 974 jsr _vputa | reset fourth column974 jsr vputa | reset fourth column 975 975 976 976 srs16: add.l #10,a7 | clean up stack … … 981 981 .bss 982 982 983 | local copies of _vrcw, _vrbw08.._vrbw15983 | local copies of vrcw, vrbw08..vrbw15 984 984 985 985 vrcw: .ds.w 1 -
ram/timeint.s
r84c0125 r8325447 26 26 .text 27 27 28 .xdef _tsetup | tsetup() -- timer setup function28 .xdef tsetup | tsetup() -- timer setup function 29 29 .xdef timeint | timer interrupt handler 30 30 31 .xdef _M1IoRec| MIDI channel 1 IoRec32 .xdef _M2IoRec| MIDI channel 2 IoRec33 .xdef _S1IoRec| RS232 channel 1 IoRec34 .xdef _S2IoRec| RS232 channel 2 IoRec35 .xdef _timers | timer array -- short timers[NTIMERS]36 .xdef _vi_clk | VSDD scroll delay timer37 .xdef _vi_tag | VSDD VI tag31 .xdef M1IoRec | MIDI channel 1 IoRec 32 .xdef M2IoRec | MIDI channel 2 IoRec 33 .xdef S1IoRec | RS232 channel 1 IoRec 34 .xdef S2IoRec | RS232 channel 2 IoRec 35 .xdef timers | timer array -- short timers[NTIMERS] 36 .xdef vi_clk | VSDD scroll delay timer 37 .xdef vi_tag | VSDD VI tag 38 38 39 39 .xref lclsadr | score object base address 40 40 .xref lclscrl | score object scroll offset 41 .xref _v_odtab| VSDD object descriptor table41 .xref v_odtab | VSDD object descriptor table 42 42 43 43 .page … … 130 130 .page 131 131 | ============================================================================== 132 | _tsetup -- tsetup() -- timer setup function133 | ============================================================================== 134 135 _tsetup:move.w sr,-(a7) | Save old interrupt mask132 | tsetup -- tsetup() -- timer setup function 133 | ============================================================================== 134 135 tsetup: move.w sr,-(a7) | Save old interrupt mask 136 136 ori.w #IPL7,sr | Disable interrupts 137 137 … … 140 140 trap #XBIOS | ... 141 141 add.l #4,a7 | ... 142 move.l d0, _S1IoRec | ...142 move.l d0,S1IoRec | ... 143 143 144 144 move.w #SR2_DEV,-(a7) | Establish S2IoRec … … 146 146 trap #XBIOS | ... 147 147 add.l #4,a7 | ... 148 move.l d0, _S2IoRec | ...148 move.l d0,S2IoRec | ... 149 149 150 150 move.w #MC1_DEV,-(a7) | Establish M1IoRec … … 152 152 trap #XBIOS | ... 153 153 add.l #4,a7 | ... 154 move.l d0, _M1IoRec | ...154 move.l d0,M1IoRec | ... 155 155 156 156 move.w #MC2_DEV,-(a7) | Establish M2IoRec … … 158 158 trap #XBIOS | ... 159 159 add.l #4,a7 | ... 160 move.l d0, _M2IoRec | ...160 move.l d0,M2IoRec | ... 161 161 162 162 .page … … 164 164 clr.w FC_SW | Stop the frame clock 165 165 clr.l FC_VAL | ... and reset it 166 clr.w _vi_tag | Clear VSDD VI tag167 clr.w _vi_clk | Clear VSDD delay timer166 clr.w vi_tag | Clear VSDD VI tag 167 clr.w vi_clk | Clear VSDD delay timer 168 168 clr.w lclsadr | Clear score scroll address 169 169 clr.w lclscrl | Clear score scroll offset 170 170 171 lea _timers,a0 | Point at timer array171 lea timers,a0 | Point at timer array 172 172 move.w #NTIMERS-1,d0 | Setup to clear timer array 173 173 … … 217 217 | process VSDD timer 218 218 | ------------------------------------------------------------------------------ 219 tst.w _vi_tag | Does the VSDD need service ?219 tst.w vi_tag | Does the VSDD need service ? 220 220 beq updtime | Jump if not 221 221 222 move.w _vi_clk,d0 | Get VSDD scroll delay timer222 move.w vi_clk,d0 | Get VSDD scroll delay timer 223 223 subq.w #1,d0 | Decrement timer 224 move.w d0, _vi_clk | Update timer224 move.w d0,vi_clk | Update timer 225 225 bne updtime | Jump if it's not zero yet 226 226 227 move.w lclsadr, _v_odtab+12 | Update scroll address228 move.w lclscrl, _v_odtab+10 | Update scroll offset229 clr.w _vi_tag | Reset the tag227 move.w lclsadr,v_odtab+12 | Update scroll address 228 move.w lclscrl,v_odtab+10 | Update scroll offset 229 clr.w vi_tag | Reset the tag 230 230 231 231 .page … … 236 236 237 237 updtime: move.w #NTIMERS-1,d0 | Setup timer array counter 238 lea _timers,a0 | Point at timer array238 lea timers,a0 | Point at timer array 239 239 240 240 tdcr: move.w (a0),d1 | Get timer array entry … … 325 325 ori.w #0x0700,sr | Disable interrupts 326 326 327 movea.l _M1IoRec,a0 | Point at M1IoRec327 movea.l M1IoRec,a0 | Point at M1IoRec 328 328 move.b IO_CFR1(a0),d0 | Get MIDI-1 CFR1 value 329 329 or.b #0x80,d0 | Force MSB = 1 for CFR1 output … … 372 372 | ------------------------------------------------------------------------------ 373 373 374 _timers:.ds.w NTIMERS | Timer array -- short timers[NTIMERS];375 376 _vi_clk:.ds.w 1 | VSDD scroll delay timer377 _vi_tag:.ds.w 1 | VSDD VI 'needs service' tag378 379 _S1IoRec: .ds.l 1 | address of RS232 channel 1 IoRec380 _S2IoRec: .ds.l 1 | address of RS232 channel 2 IoRec381 _M1IoRec: .ds.l 1 | address of MIDI channel 1 IoRec382 _M2IoRec: .ds.l 1 | address of MIDI channel 2 IoRec374 timers: .ds.w NTIMERS | Timer array -- short timers[NTIMERS]; 375 376 vi_clk: .ds.w 1 | VSDD scroll delay timer 377 vi_tag: .ds.w 1 | VSDD VI 'needs service' tag 378 379 S1IoRec: .ds.l 1 | address of RS232 channel 1 IoRec 380 S2IoRec: .ds.l 1 | address of RS232 channel 2 IoRec 381 M1IoRec: .ds.l 1 | address of MIDI channel 1 IoRec 382 M2IoRec: .ds.l 1 | address of MIDI channel 2 IoRec 383 383 | ============================================================================== 384 384 -
ram/tofpu.s
r84c0125 r8325447 17 17 .text 18 18 19 .xdef _tofpu20 .xdef _fromfpu19 .xdef tofpu 20 .xdef fromfpu 21 21 22 22 TIME = 8 | WORD - time argument (either format) … … 25 25 26 26 .page 27 _tofpu: link a6,#0 | link stack frames27 tofpu: link a6,#0 | link stack frames 28 28 move.w TIME(a6),d1 | get time interval 29 29 beq notime | jump if zero time … … 51 51 52 52 .page 53 _fromfpu: link a6,#0 | link stack frames53 fromfpu: link a6,#0 | link stack frames 54 54 move.w TIME(a6),d1 | get FPU formatted time 55 55 beq zerotime | done if it's zero -
ram/verdate.s
r84c0125 r8325447 21 21 .data 22 22 23 .xdef _VerDate23 .xdef VerDate 24 24 25 _VerDate: .asciz "19881027.01" | Date and version number25 VerDate: .asciz "19881027.01" | Date and version number 26 26 27 27 .end
Note:
See TracChangeset
for help on using the changeset viewer.