Changeset 8325447 in buchla-68k for ram/sedisp.s
- Timestamp:
- 08/07/2017 02:04:35 PM (7 years ago)
- Branches:
- master
- Children:
- 27c8d40
- Parents:
- 84c0125
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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:
Note:
See TracChangeset
for help on using the changeset viewer.