Annotation of doom/music.gas, revision 1.1.1.1

1.1       root        1:  .long
                      2:        .dc.l   codeend-_music_dspcode
                      3: _music_dspcode::
                      4:  .dsp
                      5:        .org $f1b140
                      6: 
                      7: S_LE   .ccdef  $14     ; PL
                      8: U_LE   .ccdef  $04     ; CC
                      9: S_GT    .ccdef $18     ; MI
                     10: U_GT    .ccdef $08     ; CS
                     11: 
                     12: S_LT   .ccdef  $15             ; PL+NE
                     13: U_LT   .ccdef  $05             ; CC+NE
                     14: 
                     15: FP .equr r14
                     16: scratch .equr r10
                     17: scratch2 .equr r11
                     18: RETURNVALUE .equr r29
                     19: RETURNPOINT .equr r28
                     20: MATH_A .equr r27
                     21: MATH_B .equr r26
                     22: MATH_C .equr r25
                     23: MATH_RTS .equr r24
                     24: MATH_SIGN .equr r23
                     25: 
                     26:        movei   #codestart,scratch
                     27:        jump    T,(scratch)
                     28:        nop
                     29: 
                     30: 
                     31: GPU_IMUL:
                     32:  move MATH_A,MATH_SIGN
                     33:  xor MATH_B,MATH_SIGN
                     34:  abs MATH_A
                     35:  abs MATH_B
                     36:  move MATH_A,MATH_C
                     37:  mult MATH_B,MATH_C
                     38:  move MATH_B,scratch2
                     39:  shrq #16,scratch2
                     40:  mult MATH_A,scratch2
                     41:  shlq #16,scratch2
                     42:  add scratch2,MATH_C
                     43:  move MATH_A,scratch2
                     44:  shrq #16,scratch2
                     45:  mult MATH_B,scratch2
                     46:  shlq #16,scratch2
                     47:  add scratch2, MATH_C
                     48:  btst #31,MATH_SIGN
                     49:  jump EQ,(MATH_RTS)
                     50:  nop
                     51:  jump T,(MATH_RTS)
                     52:  neg MATH_C
                     53:        
                     54: ;===========================================================================
                     55: ;      
                     56: _M_WriteOutSamples:
                     57: ;
                     58: ;===========================================================================
                     59: 
                     60: sw_source      .equr   r16
                     61: sw_samples     .equr   r17
                     62: sw_dest                .equr   r18
                     63: sw_sample      .equr   r19
                     64: sw_combined    .equr   r20
                     65: sw_zero                .equr   r21
                     66: sw_looppoint .equr     r22
                     67: 
                     68:        .extern _musictime
                     69: 
                     70:        load    (FP),sw_samples
                     71:        
                     72:        moveq   #0,sw_zero
                     73:        
                     74:        movei   #_musictime,scratch2
                     75:        load    (scratch2),sw_dest
                     76: 
                     77:        shlq    #1,sw_dest
                     78:        movei   #$1fff,scratch
                     79:        and             scratch,sw_dest
                     80:        movei   #$1f0000,scratch
                     81:        add             scratch,sw_dest                         ; sw_dest = externbuffer[sfxtime*2]
                     82:        
                     83:        movei   #_internal_buffer,sw_source
                     84:        movei   #satloop,sw_looppoint
                     85:        
                     86:        load    (sw_source),sw_sample           ; delay slotted
                     87: satloop:
                     88:        store   sw_zero,(sw_source)
                     89:        sharq   #8,sw_sample
                     90:        addq    #4,sw_source
                     91:        sat16s  sw_sample
                     92: 
                     93:        storew  sw_sample,(sw_dest)
                     94:        addqmod #2,sw_dest
                     95:                
                     96:        subq    #1,sw_samples
                     97:        jump    NE,(sw_looppoint)
                     98:        load    (sw_source),sw_sample           ; delay slot
                     99:        
                    100:        jump    T,(RETURNPOINT)
                    101:        nop
                    102:        
                    103: ;===========================================================================
                    104: 
                    105: ;====================
                    106: _M_PaintSingleChannel::
                    107: ;3 dag registers  8 register variables
                    108: ;localoffset:0  regoffset:4  argoffset:4
                    109: ;====================
                    110: ps_channel     .equr   r15
                    111: ps_samples     .equr   r16
                    112: ps_dest                .equr   r17
                    113: ps_source      .equr   r18
                    114: ps_sourcefrac  .equr   r19
                    115: ps_sourcestep  .equr   r20
                    116: ps_vol                 .equr   r21
                    117: ps_data                        .equr   r24
                    118: ps_looppoint   .equr   r25
                    119: ps_128                 .equr   r26
                    120: ps_ffff                        .equr   r27
                    121: 
                    122:        load    (FP),ps_channel
                    123:        load    (FP+1),ps_samples
                    124:        movei   #_internal_buffer,ps_dest
                    125: 
                    126:        load    (FP+2), scratch ; get new 
                    127:        shlq    #2, scratch
                    128:        add             scratch, ps_dest
                    129:        
                    130:        load    (ps_channel+1),ps_source
                    131:        load    (ps_channel+4),ps_sourcefrac
                    132:        load    (ps_channel+3),ps_sourcestep
                    133:        load    (ps_channel+2),ps_vol
                    134: 
                    135:        shrq    #1, ps_vol
                    136: 
                    137:        movei   #addloop,ps_looppoint
                    138:        movei   #128,ps_128
                    139:        movei   #$ffff,ps_ffff
                    140: 
                    141:        loadb   (ps_source),ps_data             ; delay slotted
                    142: addloop:
                    143:        add             ps_sourcestep,ps_sourcefrac
                    144:        move    ps_sourcefrac,scratch
                    145:        sub             ps_128,ps_data
                    146:        shrq    #16,scratch
                    147:        imult   ps_vol,ps_data
                    148: 
                    149:        load    (ps_dest),scratch2
                    150:        and             ps_ffff,ps_sourcefrac
                    151:        add             ps_data,scratch2
                    152:        add             scratch,ps_source
                    153:        store   scratch2,(ps_dest)
                    154:        
                    155:        subq    #1,ps_samples
                    156:        addqt   #4,ps_dest
                    157:        jump    NE,(ps_looppoint)       
                    158:        loadb   (ps_source),ps_data             ; delay slot
                    159: 
                    160:        store   ps_source,(ps_channel+1)
                    161:        jump    T,(RETURNPOINT)
                    162:        store   ps_sourcefrac,(ps_channel+4)    ; delay slot
                    163:        
                    164: 
                    165: codestart:
                    166: 
                    167: ;====================
                    168: _M_PaintMusic::
                    169: ;6 dag registers  3 register variables
                    170: ;localoffset:4  regoffset:4  argoffset:44
                    171: ;====================
                    172:  movei #44,scratch
                    173:  sub scratch,FP
                    174: 
                    175:  movei #_samplecount,r0
                    176:  load (r0),r0
                    177:  movei #8192,r1
                    178:  add r1,r0
                    179:  move r0,r17 ;(actual_endtime)
                    180: 
                    181:  movei #L43,r0
                    182:  jump T,(r0)
                    183:  nop
                    184: 
                    185: L42:
                    186: 
                    187:  movei #_musictime,r0
                    188:  load (r0),r0
                    189:  movei #_next_eventtime,r1
                    190:  load (r1),r1
                    191:  cmp r0,r1
                    192:  movei #L45,scratch
                    193:  jump NE,(scratch)
                    194:  nop
                    195: 
                    196:  movei #_next_eventtime,r0
                    197:  load (r0),r1
                    198:  movei #_music,r2
                    199:  load (r2),r3
                    200:  loadb (r3),r4
                    201:  movei #_samples_per_midiclock,r5
                    202:  load (r5),r5
                    203:  move r4,MATH_A
                    204:  movei #L60,MATH_RTS
                    205:  movei #GPU_IMUL,scratch
                    206:  jump T,(scratch)
                    207:  move r5,MATH_B ; delay slot
                    208: L60:
                    209:  move MATH_C,r4
                    210:  add r4,r1
                    211:  store r1,(r0)
                    212:  move r3,r0
                    213:  addq #1,r0
                    214:  store r0,(r2)
                    215: 
                    216: L45:
                    217: 
                    218:  movei #_next_eventtime,r0
                    219:  load (r0),r0
                    220:  cmp r17,r0 ;(actual_endtime)
                    221:  movei #L47,scratch
                    222:  jump EQ,(scratch)
                    223:  nop
                    224:  jump MI,(scratch)
                    225:  nop
                    226: 
                    227:  move r17,r16 ;(actual_endtime)(stop_time)
                    228: 
                    229:  movei #L48,r0
                    230:  jump T,(r0)
                    231:  nop
                    232: 
                    233: L47:
                    234: 
                    235:  movei #_next_eventtime,r0
                    236:  load (r0),r0
                    237:  move r0,r16 ;(stop_time)
                    238: 
                    239: L48:
                    240: 
                    241:  movei #256,r0
                    242:  move r0,r15 ;(samples)
                    243: 
                    244:  movei #L50,r0
                    245:  jump T,(r0)
                    246:  nop
                    247: 
                    248: L49:
                    249: 
                    250:  movei #_musictime,r0
                    251:  load (r0),r0
                    252:  move r16,r1 ;(stop_time)
                    253:  sub r0,r1
                    254:  cmp r1,r15 ;(samples)
                    255:  movei #L52,scratch
                    256:  jump EQ,(scratch)
                    257:  nop
                    258:  jump MI,(scratch)
                    259:  nop
                    260: 
                    261:  movei #_musictime,r0
                    262:  load (r0),r0
                    263:  move r16,r1 ;(stop_time)
                    264:  sub r0,r1
                    265:  move r1,r15 ;(samples)
                    266: 
                    267: L52:
                    268: 
                    269:  store r15,(FP) ; arg[] ;(samples)
                    270:  movei #_M_PaintUnsatSound,r0
                    271:  store r28,(FP+1) ; push ;(RETURNPOINT)
                    272:  store r17,(FP+2) ; push ;(actual_endtime)
                    273:  store r16,(FP+3) ; push ;(stop_time)
                    274:  movei #L61,RETURNPOINT
                    275:  jump T,(r0)
                    276:  store r15,(FP+4) ; delay slot push ;(samples)
                    277: L61:
                    278:  load (FP+2),r17 ; pop ;(actual_endtime)
                    279:  load (FP+3),r16 ; pop ;(stop_time)
                    280:  load (FP+4),r15 ; pop ;(samples)
                    281:  load (FP+1), RETURNPOINT ; pop
                    282: 
                    283:  store r15,(FP) ; arg[] ;(samples)
                    284:  movei #_M_WriteOutSamples,r0
                    285:  store r28,(FP+1) ; push ;(RETURNPOINT)
                    286:  store r17,(FP+2) ; push ;(actual_endtime)
                    287:  store r16,(FP+3) ; push ;(stop_time)
                    288:  movei #L62,RETURNPOINT
                    289:  jump T,(r0)
                    290:  store r15,(FP+4) ; delay slot push ;(samples)
                    291: L62:
                    292:  load (FP+2),r17 ; pop ;(actual_endtime)
                    293:  load (FP+3),r16 ; pop ;(stop_time)
                    294:  load (FP+4),r15 ; pop ;(samples)
                    295:  load (FP+1), RETURNPOINT ; pop
                    296: 
                    297:  movei #_musictime,r0
                    298:  load (r0),r1
                    299:  add r15,r1 ;(samples)
                    300:  store r1,(r0)
                    301: 
                    302: L50:
                    303: 
                    304:  movei #_musictime,r0
                    305:  load (r0),r0
                    306:  cmp r0,r16 ;(stop_time)
                    307:  movei #L49,scratch
                    308:  jump NE,(scratch)
                    309:  nop
                    310: 
                    311:  movei #_music,r0
                    312:  load (r0),r0
                    313:  movei #_music_end,r1
                    314:  load (r1),r1
                    315:  cmp r0,r1
                    316:  movei #L54,scratch
                    317:  jump NE,(scratch)
                    318:  nop
                    319: 
                    320:  movei #_music,r0
                    321:  movei #_music_start,r1
                    322:  load (r1),r1
                    323:  store r1,(r0)
                    324:  load (r0),r0
                    325:  moveq #0,r1
                    326:  cmp r0,r1
                    327:  movei #L56,scratch
                    328:  jump EQ,(scratch)
                    329:  nop
                    330: 
                    331:  movei #_music,r0
                    332:  load (r0),r1
                    333:  addq #1,r1
                    334:  store r1,(r0)
                    335: 
                    336: L56:
                    337: 
                    338: L54:
                    339: 
                    340:  movei #_musictime,r0
                    341:  load (r0),r0
                    342:  movei #_next_eventtime,r1
                    343:  load (r1),r1
                    344:  cmp r0,r1
                    345:  movei #L58,scratch
                    346:  jump NE,(scratch)
                    347:  nop
                    348:  movei #_M_GetEvent,r0
                    349:  store r28,(FP+1) ; push ;(RETURNPOINT)
                    350:  store r17,(FP+2) ; push ;(actual_endtime)
                    351:  store r16,(FP+3) ; push ;(stop_time)
                    352:  movei #L63,RETURNPOINT
                    353:  jump T,(r0)
                    354:  store r15,(FP+4) ; delay slot push ;(samples)
                    355: L63:
                    356:  load (FP+2),r17 ; pop ;(actual_endtime)
                    357:  load (FP+3),r16 ; pop ;(stop_time)
                    358:  load (FP+4),r15 ; pop ;(samples)
                    359:  load (FP+1), RETURNPOINT ; pop
                    360:  moveq #0,r0
                    361:  cmp r29,r0 ;(RETURNVALUE)
                    362:  movei #L58,scratch
                    363:  jump EQ,(scratch)
                    364:  nop
                    365: 
                    366:  movei #L44,r0
                    367:  jump T,(r0)
                    368:  nop
                    369: 
                    370: L58:
                    371: 
                    372: L43:
                    373: 
                    374:  movei #_musictime,r0
                    375:  load (r0),r0
                    376:  cmp r0,r17 ;(actual_endtime)
                    377:  movei #L42,scratch
                    378:  jump NE,(scratch)
                    379:  nop
                    380: 
                    381: L44:
                    382: 
                    383: 
                    384: L41:
                    385:  movei #44,scratch
                    386:  jump T,(RETURNPOINT)
                    387:  add scratch,FP ; delay slot
                    388: 
                    389: ;====================
                    390: _M_GetEvent::
                    391: ;6 dag registers  2 register variables
                    392: ;localoffset:8  regoffset:12  argoffset:48
                    393: ;====================
                    394:  movei #48,scratch
                    395:  sub scratch,FP
                    396: 
                    397:  movei #_music,r0
                    398:  load (r0),r1
                    399:  loadb (r1),r2
                    400:  move r2,r15 ;(cmd)
                    401:  moveq #28,r2
                    402:  move r15,r3 ;(cmd)
                    403:  moveq #15,r4
                    404:  move r3,r5
                    405:  and r4,r5
                    406:  move r5,r4
                    407:  move r2,MATH_A
                    408:  movei #L83,MATH_RTS
                    409:  movei #GPU_IMUL,scratch
                    410:  jump T,(scratch)
                    411:  move r4,MATH_B ; delay slot
                    412: L83:
                    413:  move MATH_C,r2
                    414:  movei #_music_channels,r4
                    415:  add r4,r2
                    416:  move r2,r16 ;(ch)
                    417:  movei #240,r2
                    418:  and r2,r3
                    419:  move r3,r2
                    420:  move r2,r15 ;(cmd)
                    421:  addq #1,r1
                    422:  store r1,(r0)
                    423:  move r15,r0 ;(cmd)
                    424:  movei #48,r1
                    425:  cmp r0,r1
                    426:  movei #L65,scratch
                    427:  jump NE,(scratch)
                    428:  nop
                    429: 
                    430:  movei #_samples_per_midiclock,r0
                    431:  movei #_music,r1
                    432:  load (r1),r2
                    433:  loadb (r2),r3
                    434:  shlq #24,r3
                    435:  store r3,(r0)
                    436:  load (r0),r3
                    437:  move r2,r4
                    438:  addq #1,r4
                    439:  loadb (r4),r4
                    440:  shlq #16,r4
                    441:  add r4,r3
                    442:  store r3,(r0)
                    443:  load (r0),r3
                    444:  move r2,r4
                    445:  addq #2,r4
                    446:  loadb (r4),r4
                    447:  shlq #8,r4
                    448:  add r4,r3
                    449:  store r3,(r0)
                    450:  load (r0),r3
                    451:  move r2,r4
                    452:  addq #3,r4
                    453:  loadb (r4),r4
                    454:  add r4,r3
                    455:  store r3,(r0)
                    456:  move r2,r0
                    457:  addq #4,r0
                    458:  store r0,(r1)
                    459: 
                    460:  movei #L66,r0
                    461:  jump T,(r0)
                    462:  nop
                    463: 
                    464: L65:
                    465: 
                    466:  move r15,r0 ;(cmd)
                    467:  moveq #16,r1
                    468:  cmp r0,r1
                    469:  movei #L67,scratch
                    470:  jump NE,(scratch)
                    471:  nop
                    472: 
                    473:  move FP,r0
                    474:  addq #8,r0 ; &instrument
                    475:  movei #_music,r1
                    476:  load (r1),r2
                    477:  loadb (r2),r3
                    478:  store r3,(r0)
                    479:  addq #1,r2
                    480:  store r2,(r1)
                    481:  load (r0),r0
                    482:  shlq #2,r0
                    483:  movei #_instruments,r1
                    484:  add r1,r0
                    485:  load (r0),r0
                    486:  store r0,(r16) ;(ch)
                    487: 
                    488:  move r16,r0 ;(ch)
                    489:  addq #8,r0
                    490:  movei #_music,r1
                    491:  load (r1),r1
                    492:  loadb (r1),r1
                    493:  movei #_sfxvolume,r2
                    494:  load (r2),r2
                    495:  move r1,MATH_A
                    496:  movei #L84,MATH_RTS
                    497:  movei #GPU_IMUL,scratch
                    498:  jump T,(scratch)
                    499:  move r2,MATH_B ; delay slot
                    500: L84:
                    501:  move MATH_C,r1
                    502:  store r1,(r0)
                    503: 
                    504:  movei #_music,r0
                    505:  load (r0),r1
                    506:  moveq #1,r2
                    507:  add r2,r1
                    508:  store r1,(r0)
                    509:  load (r0),r1
                    510:  add r2,r1
                    511:  store r1,(r0)
                    512:  move r16,r1 ;(ch)
                    513:  addq #12,r1
                    514:  load (r0),r0
                    515:  loadb (r0),r3
                    516:  shlq #16,r3
                    517:  move r0,r4
                    518:  add r2,r4
                    519:  loadb (r4),r2
                    520:  shlq #8,r2
                    521:  add r2,r3
                    522:  addq #2,r0
                    523:  loadb (r0),r0
                    524:  move r3,r2
                    525:  add r0,r2
                    526:  store r2,(r1)
                    527: 
                    528:  movei #_music,r0
                    529:  load (r0),r1
                    530:  addq #3,r1
                    531:  store r1,(r0)
                    532:  move r16,r0 ;(ch)
                    533:  addq #4,r0
                    534:  load (r16),r1 ;(ch)
                    535:  addq #28,r1
                    536:  store r1,(r0)
                    537: 
                    538:  move r16,r0 ;(ch)
                    539:  addq #16,r0
                    540:  moveq #0,r1
                    541:  store r1,(r0)
                    542: 
                    543:  move r16,r0 ;(ch)
                    544:  addq #20,r0
                    545:  moveq #0,r1
                    546:  store r1,(r0)
                    547: 
                    548:  store r16,(FP) ; arg[] ;(ch)
                    549:  movei #_musictime,r0
                    550:  load (r0),r0
                    551:  or r0,scratch ; scoreboard bug
                    552:  store r0,(FP+1) ; arg[]
                    553:  movei #_M_CalculateEndTime,r0
                    554:  store r28,(FP+3) ; push ;(RETURNPOINT)
                    555:  store r16,(FP+4) ; push ;(ch)
                    556:  movei #L85,RETURNPOINT
                    557:  jump T,(r0)
                    558:  store r15,(FP+5) ; delay slot push ;(cmd)
                    559: L85:
                    560:  load (FP+4),r16 ; pop ;(ch)
                    561:  load (FP+5),r15 ; pop ;(cmd)
                    562:  load (FP+3), RETURNPOINT ; pop
                    563: 
                    564:  movei #L68,r0
                    565:  jump T,(r0)
                    566:  nop
                    567: 
                    568: L67:
                    569: 
                    570:  move r15,r0 ;(cmd)
                    571:  movei #32,r1
                    572:  cmp r0,r1
                    573:  movei #L69,scratch
                    574:  jump NE,(scratch)
                    575:  nop
                    576: 
                    577:  move r16,r0 ;(ch)
                    578:  addq #24,r0
                    579:  moveq #0,r1
                    580:  store r1,(r0)
                    581: 
                    582:  movei #L70,r0
                    583:  jump T,(r0)
                    584:  nop
                    585: 
                    586: L69:
                    587: 
                    588:  move r15,r0 ;(cmd)
                    589:  movei #64,r1
                    590:  cmp r0,r1
                    591:  movei #L71,scratch
                    592:  jump NE,(scratch)
                    593:  nop
                    594: 
                    595:  move r16,r0 ;(ch)
                    596:  addq #8,r0
                    597:  movei #_music,r1
                    598:  load (r1),r1
                    599:  loadb (r1),r1
                    600:  movei #_sfxvolume,r2
                    601:  load (r2),r2
                    602:  move r1,MATH_A
                    603:  movei #L86,MATH_RTS
                    604:  movei #GPU_IMUL,scratch
                    605:  jump T,(scratch)
                    606:  move r2,MATH_B ; delay slot
                    607: L86:
                    608:  move MATH_C,r1
                    609:  store r1,(r0)
                    610: 
                    611:  movei #_music,r0
                    612:  load (r0),r1
                    613:  addq #2,r1
                    614:  store r1,(r0)
                    615: 
                    616:  movei #L72,r0
                    617:  jump T,(r0)
                    618:  nop
                    619: 
                    620: L71:
                    621: 
                    622:  move r15,r0 ;(cmd)
                    623:  movei #80,r1
                    624:  cmp r0,r1
                    625:  movei #L73,scratch
                    626:  jump NE,(scratch)
                    627:  nop
                    628: 
                    629:  move r16,r0 ;(ch)
                    630:  addq #12,r0
                    631:  movei #_music,r1
                    632:  load (r1),r1
                    633:  loadb (r1),r2
                    634:  shlq #16,r2
                    635:  move r1,r3
                    636:  addq #1,r3
                    637:  loadb (r3),r3
                    638:  shlq #8,r3
                    639:  add r3,r2
                    640:  addq #2,r1
                    641:  loadb (r1),r1
                    642:  add r1,r2
                    643:  store r2,(r0)
                    644: 
                    645:  movei #_music,r0
                    646:  load (r0),r1
                    647:  addq #3,r1
                    648:  store r1,(r0)
                    649:  move r16,r0 ;(ch)
                    650:  addq #24,r0
                    651:  load (r0),r0
                    652:  movei #_musictime,r1
                    653:  load (r1),r1
                    654:  cmp r0,r1
                    655:  movei #L74,scratch
                    656:  jump CC,(scratch)
                    657:  nop
                    658: 
                    659:  store r16,(FP) ; arg[] ;(ch)
                    660:  movei #_musictime,r0
                    661:  load (r0),r0
                    662:  or r0,scratch ; scoreboard bug
                    663:  store r0,(FP+1) ; arg[]
                    664:  movei #_M_CalculateEndTime,r0
                    665:  store r28,(FP+3) ; push ;(RETURNPOINT)
                    666:  store r16,(FP+4) ; push ;(ch)
                    667:  movei #L87,RETURNPOINT
                    668:  jump T,(r0)
                    669:  store r15,(FP+5) ; delay slot push ;(cmd)
                    670: L87:
                    671:  load (FP+4),r16 ; pop ;(ch)
                    672:  load (FP+5),r15 ; pop ;(cmd)
                    673:  load (FP+3), RETURNPOINT ; pop
                    674: 
                    675:  movei #L74,r0
                    676:  jump T,(r0)
                    677:  nop
                    678: 
                    679: L73:
                    680: 
                    681:  move r15,r0 ;(cmd)
                    682:  moveq #0,r1
                    683:  cmp r0,r1
                    684:  movei #L77,scratch
                    685:  jump NE,(scratch)
                    686:  nop
                    687: 
                    688:  movei #L78,r0
                    689:  jump T,(r0)
                    690:  nop
                    691: 
                    692: L77:
                    693: 
                    694:  moveq #1,r0
                    695:  move r0,RETURNVALUE
                    696: 
                    697:  movei #L64,r0
                    698:  jump T,(r0)
                    699:  nop
                    700: 
                    701: L78:
                    702: 
                    703: L74:
                    704: 
                    705: L72:
                    706: 
                    707: L70:
                    708: 
                    709: L68:
                    710: 
                    711: L66:
                    712: 
                    713:  movei #_music,r0
                    714:  load (r0),r0
                    715:  movei #_music_end,r1
                    716:  load (r1),r1
                    717:  cmp r0,r1
                    718:  movei #L79,scratch
                    719:  jump NE,(scratch)
                    720:  nop
                    721: 
                    722:  movei #_music,r0
                    723:  movei #_music_start,r1
                    724:  load (r1),r1
                    725:  store r1,(r0)
                    726:  load (r0),r0
                    727:  moveq #0,r1
                    728:  cmp r0,r1
                    729:  movei #L81,scratch
                    730:  jump NE,(scratch)
                    731:  nop
                    732: 
                    733:  moveq #1,r0
                    734:  move r0,RETURNVALUE
                    735: 
                    736:  movei #L64,r0
                    737:  jump T,(r0)
                    738:  nop
                    739: 
                    740: L81:
                    741: 
                    742: L79:
                    743: 
                    744:  moveq #0,r0
                    745:  move r0,RETURNVALUE
                    746: 
                    747: L64:
                    748:  movei #48,scratch
                    749:  jump T,(RETURNPOINT)
                    750:  add scratch,FP ; delay slot
                    751: 
                    752: ;====================
                    753: _M_PaintUnsatSound::
                    754: ;5 dag registers  4 register variables
                    755: ;localoffset:12  regoffset:12  argoffset:52
                    756: ;====================
                    757:  movei #52,scratch
                    758:  sub scratch,FP
                    759: 
                    760:  movei #_music_channels,r0
                    761:  move r0,r16 ;(chan)
                    762:  movei #_musictime,r0
                    763:  load (r0),r0
                    764:  load (FP+13),r1 ; local samples
                    765:  add r1,r0
                    766:  move r0,r18 ;(endtime)
                    767: 
                    768:  movei #L90,r0
                    769:  jump T,(r0)
                    770:  nop
                    771: 
                    772: L89:
                    773: 
                    774:  movei #_musictime,r0
                    775:  load (r0),r0
                    776:  move r0,r15 ;(channeltime)
                    777:  move r16,r0 ;(chan)
                    778:  addq #24,r0
                    779:  load (r0),r0
                    780:  move r15,r1 ;(channeltime)
                    781:  cmp r0,r1
                    782:  movei #L93,scratch
                    783:  jump CC,(scratch)
                    784:  nop
                    785: 
                    786:  movei #L96,r0
                    787:  jump T,(r0)
                    788:  nop
                    789: 
                    790: L95:
                    791: 
                    792:  move r16,r0 ;(chan)
                    793:  addq #24,r0
                    794:  load (r0),r0
                    795:  move r18,r1 ;(endtime)
                    796:  cmp r0,r1
                    797:  movei #L98,scratch
                    798:  jump EQ,(scratch)
                    799:  nop
                    800:  jump CS,(scratch)
                    801:  nop
                    802: 
                    803:  move r16,r0 ;(chan)
                    804:  addq #24,r0
                    805:  load (r0),r0
                    806:  move r0,r17 ;(stoptime)
                    807: 
                    808:  movei #L99,r0
                    809:  jump T,(r0)
                    810:  nop
                    811: 
                    812: L98:
                    813: 
                    814:  move r18,r17 ;(endtime)(stoptime)
                    815: 
                    816: L99:
                    817: 
                    818:  store r16,(FP) ; arg[] ;(chan)
                    819:  move r17,r0 ;(stoptime)
                    820:  sub r15,r0 ;(channeltime)
                    821:  or r0,scratch ; scoreboard bug
                    822:  store r0,(FP+1) ; arg[]
                    823:  movei #_musictime,r0
                    824:  load (r0),r0
                    825:  move r15,r1 ;(channeltime)
                    826:  sub r0,r1
                    827:  or r1,scratch ; scoreboard bug
                    828:  store r1,(FP+2) ; arg[]
                    829:  movei #_M_PaintSingleChannel,r0
                    830:  store r28,(FP+3) ; push ;(RETURNPOINT)
                    831:  store r18,(FP+4) ; push ;(endtime)
                    832:  store r17,(FP+5) ; push ;(stoptime)
                    833:  store r16,(FP+6) ; push ;(chan)
                    834:  movei #L104,RETURNPOINT
                    835:  jump T,(r0)
                    836:  store r15,(FP+7) ; delay slot push ;(channeltime)
                    837: L104:
                    838:  load (FP+4),r18 ; pop ;(endtime)
                    839:  load (FP+5),r17 ; pop ;(stoptime)
                    840:  load (FP+6),r16 ; pop ;(chan)
                    841:  load (FP+7),r15 ; pop ;(channeltime)
                    842:  load (FP+3), RETURNPOINT ; pop
                    843: 
                    844:  move r17,r15 ;(stoptime)(channeltime)
                    845:  move r16,r0 ;(chan)
                    846:  addq #24,r0
                    847:  load (r0),r0
                    848:  move r15,r1 ;(channeltime)
                    849:  cmp r0,r1
                    850:  movei #L100,scratch
                    851:  jump NE,(scratch)
                    852:  nop
                    853: 
                    854:  load (r16),r0 ;(chan)
                    855:  addq #12,r0
                    856:  load (r0),r0
                    857:  moveq #2,r1
                    858:  and r1,r0
                    859:  moveq #0,r1
                    860:  cmp r0,r1
                    861:  movei #L102,scratch
                    862:  jump EQ,(scratch)
                    863:  nop
                    864: 
                    865:  moveq #4,r0
                    866:  move r16,r1 ;(chan)
                    867:  add r0,r1
                    868:  load (r1),r2
                    869:  load (r16),r3 ;(chan)
                    870:  move r3,r4
                    871:  addq #8,r4
                    872:  load (r4),r4
                    873:  add r0,r3
                    874:  load (r3),r0
                    875:  move r4,r3
                    876:  sub r0,r3
                    877:  move r2,r0
                    878:  sub r3,r0
                    879:  store r0,(r1)
                    880: 
                    881:  store r16,(FP) ; arg[] ;(chan)
                    882:  or r15,scratch ; scoreboard bug ;(channeltime)
                    883:  store r15,(FP+1) ; arg[] ;(channeltime)
                    884:  movei #_M_CalculateEndTime,r0
                    885:  store r28,(FP+3) ; push ;(RETURNPOINT)
                    886:  store r18,(FP+4) ; push ;(endtime)
                    887:  store r17,(FP+5) ; push ;(stoptime)
                    888:  store r16,(FP+6) ; push ;(chan)
                    889:  movei #L105,RETURNPOINT
                    890:  jump T,(r0)
                    891:  store r15,(FP+7) ; delay slot push ;(channeltime)
                    892: L105:
                    893:  load (FP+4),r18 ; pop ;(endtime)
                    894:  load (FP+5),r17 ; pop ;(stoptime)
                    895:  load (FP+6),r16 ; pop ;(chan)
                    896:  load (FP+7),r15 ; pop ;(channeltime)
                    897:  load (FP+3), RETURNPOINT ; pop
                    898: 
                    899:  movei #L103,r0
                    900:  jump T,(r0)
                    901:  nop
                    902: 
                    903: L102:
                    904: 
                    905:  move r18,r15 ;(endtime)(channeltime)
                    906: 
                    907: L103:
                    908: 
                    909: L100:
                    910: 
                    911: L96:
                    912: 
                    913:  cmp r15,r18 ;(channeltime)(endtime)
                    914:  movei #L95,scratch
                    915:  jump NE,(scratch)
                    916:  nop
                    917: 
                    918: L93:
                    919: 
                    920:  move r16,r0 ;(chan)
                    921:  addq #28,r0
                    922:  move r0,r16 ;(chan)
                    923: 
                    924: L90:
                    925: 
                    926:  move r16,r0 ;(chan)
                    927:  movei #_music_channels+280,r1
                    928:  cmp r0,r1
                    929:  movei #L89,scratch
                    930:  jump NE,(scratch)
                    931:  nop
                    932: 
                    933: 
                    934: L88:
                    935:  movei #52,scratch
                    936:  jump T,(RETURNPOINT)
                    937:  add scratch,FP ; delay slot
                    938: 
                    939: ;====================
                    940: _M_CalculateEndTime::
                    941: ;6 dag registers  1 register variables
                    942: ;localoffset:0  regoffset:0  argoffset:0
                    943: ;====================
                    944: 
                    945:  load (FP),r0 ; local channel
                    946:  move r0,r1
                    947:  addq #4,r1
                    948:  load (r1),r1
                    949:  load (r0),r2
                    950:  addq #28,r2
                    951:  sub r2,r1
                    952:  move r1,r15 ;(samples_left)
                    953:  load (r0),r0
                    954:  addq #12,r0
                    955:  load (r0),r0
                    956:  moveq #2,r1
                    957:  and r1,r0
                    958:  moveq #0,r1
                    959:  cmp r0,r1
                    960:  movei #L107,scratch
                    961:  jump EQ,(scratch)
                    962:  nop
                    963: 
                    964:  load (FP),r0 ; local channel
                    965:  load (r0),r0
                    966:  addq #8,r0
                    967:  load (r0),r0
                    968:  sub r15,r0 ;(samples_left)
                    969:  shlq #15,r0
                    970:  move r0,r15 ;(samples_left)
                    971: 
                    972:  movei #L108,r0
                    973:  jump T,(r0)
                    974:  nop
                    975: 
                    976: L107:
                    977: 
                    978:  load (FP),r0 ; local channel
                    979:  load (r0),r0
                    980:  load (r0),r0
                    981:  sub r15,r0 ;(samples_left)
                    982:  shlq #15,r0
                    983:  move r0,r15 ;(samples_left)
                    984: 
                    985: L108:
                    986: 
                    987:  load (FP),r0 ; local channel
                    988:  move r0,r1
                    989:  addq #24,r1
                    990:  load (FP+1),r2 ; local t
                    991:  move r15,r3 ;(samples_left)
                    992:  move r0,r4
                    993:  addq #16,r4
                    994:  load (r4),r4
                    995:  moveq #1,r5
                    996:  sha r5,r4
                    997:  sub r4,r3
                    998:  addq #12,r0
                    999:  load (r0),r0
                   1000:  add r5,r0
                   1001:  sha r5,r0
                   1002:  div r0,r3
                   1003:  move r2,r0
                   1004:  add r3,r0
                   1005:  store r0,(r1)
                   1006: 
                   1007: 
                   1008: L106:
                   1009:  jump T,(RETURNPOINT)
                   1010:  nop ; delay slot
                   1011: 
                   1012: ;=======================
                   1013: 
                   1014:  .long
                   1015: _internal_buffer::
                   1016:  .dc.l 0
                   1017:  .dc.l 0
                   1018:  .dc.l 0
                   1019:  .dc.l 0
                   1020:  .dc.l 0
                   1021:  .dc.l 0
                   1022:  .dc.l 0
                   1023:  .dc.l 0
                   1024:  .dc.l 0
                   1025:  .dc.l 0
                   1026:  .dc.l 0
                   1027:  .dc.l 0
                   1028:  .dc.l 0
                   1029:  .dc.l 0
                   1030:  .dc.l 0
                   1031:  .dc.l 0
                   1032:  .dc.l 0
                   1033:  .dc.l 0
                   1034:  .dc.l 0
                   1035:  .dc.l 0
                   1036:  .dc.l 0
                   1037:  .dc.l 0
                   1038:  .dc.l 0
                   1039:  .dc.l 0
                   1040:  .dc.l 0
                   1041:  .dc.l 0
                   1042:  .dc.l 0
                   1043:  .dc.l 0
                   1044:  .dc.l 0
                   1045:  .dc.l 0
                   1046:  .dc.l 0
                   1047:  .dc.l 0
                   1048:  .dc.l 0
                   1049:  .dc.l 0
                   1050:  .dc.l 0
                   1051:  .dc.l 0
                   1052:  .dc.l 0
                   1053:  .dc.l 0
                   1054:  .dc.l 0
                   1055:  .dc.l 0
                   1056:  .dc.l 0
                   1057:  .dc.l 0
                   1058:  .dc.l 0
                   1059:  .dc.l 0
                   1060:  .dc.l 0
                   1061:  .dc.l 0
                   1062:  .dc.l 0
                   1063:  .dc.l 0
                   1064:  .dc.l 0
                   1065:  .dc.l 0
                   1066:  .dc.l 0
                   1067:  .dc.l 0
                   1068:  .dc.l 0
                   1069:  .dc.l 0
                   1070:  .dc.l 0
                   1071:  .dc.l 0
                   1072:  .dc.l 0
                   1073:  .dc.l 0
                   1074:  .dc.l 0
                   1075:  .dc.l 0
                   1076:  .dc.l 0
                   1077:  .dc.l 0
                   1078:  .dc.l 0
                   1079:  .dc.l 0
                   1080:  .dc.l 0
                   1081:  .dc.l 0
                   1082:  .dc.l 0
                   1083:  .dc.l 0
                   1084:  .dc.l 0
                   1085:  .dc.l 0
                   1086:  .dc.l 0
                   1087:  .dc.l 0
                   1088:  .dc.l 0
                   1089:  .dc.l 0
                   1090:  .dc.l 0
                   1091:  .dc.l 0
                   1092:  .dc.l 0
                   1093:  .dc.l 0
                   1094:  .dc.l 0
                   1095:  .dc.l 0
                   1096:  .dc.l 0
                   1097:  .dc.l 0
                   1098:  .dc.l 0
                   1099:  .dc.l 0
                   1100:  .dc.l 0
                   1101:  .dc.l 0
                   1102:  .dc.l 0
                   1103:  .dc.l 0
                   1104:  .dc.l 0
                   1105:  .dc.l 0
                   1106:  .dc.l 0
                   1107:  .dc.l 0
                   1108:  .dc.l 0
                   1109:  .dc.l 0
                   1110:  .dc.l 0
                   1111:  .dc.l 0
                   1112:  .dc.l 0
                   1113:  .dc.l 0
                   1114:  .dc.l 0
                   1115:  .dc.l 0
                   1116:  .dc.l 0
                   1117:  .dc.l 0
                   1118:  .dc.l 0
                   1119:  .dc.l 0
                   1120:  .dc.l 0
                   1121:  .dc.l 0
                   1122:  .dc.l 0
                   1123:  .dc.l 0
                   1124:  .dc.l 0
                   1125:  .dc.l 0
                   1126:  .dc.l 0
                   1127:  .dc.l 0
                   1128:  .dc.l 0
                   1129:  .dc.l 0
                   1130:  .dc.l 0
                   1131:  .dc.l 0
                   1132:  .dc.l 0
                   1133:  .dc.l 0
                   1134:  .dc.l 0
                   1135:  .dc.l 0
                   1136:  .dc.l 0
                   1137:  .dc.l 0
                   1138:  .dc.l 0
                   1139:  .dc.l 0
                   1140:  .dc.l 0
                   1141:  .dc.l 0
                   1142:  .dc.l 0
                   1143:  .dc.l 0
                   1144:  .dc.l 0
                   1145:  .dc.l 0
                   1146:  .dc.l 0
                   1147:  .dc.l 0
                   1148:  .dc.l 0
                   1149:  .dc.l 0
                   1150:  .dc.l 0
                   1151:  .dc.l 0
                   1152:  .dc.l 0
                   1153:  .dc.l 0
                   1154:  .dc.l 0
                   1155:  .dc.l 0
                   1156:  .dc.l 0
                   1157:  .dc.l 0
                   1158:  .dc.l 0
                   1159:  .dc.l 0
                   1160:  .dc.l 0
                   1161:  .dc.l 0
                   1162:  .dc.l 0
                   1163:  .dc.l 0
                   1164:  .dc.l 0
                   1165:  .dc.l 0
                   1166:  .dc.l 0
                   1167:  .dc.l 0
                   1168:  .dc.l 0
                   1169:  .dc.l 0
                   1170:  .dc.l 0
                   1171:  .dc.l 0
                   1172:  .dc.l 0
                   1173:  .dc.l 0
                   1174:  .dc.l 0
                   1175:  .dc.l 0
                   1176:  .dc.l 0
                   1177:  .dc.l 0
                   1178:  .dc.l 0
                   1179:  .dc.l 0
                   1180:  .dc.l 0
                   1181:  .dc.l 0
                   1182:  .dc.l 0
                   1183:  .dc.l 0
                   1184:  .dc.l 0
                   1185:  .dc.l 0
                   1186:  .dc.l 0
                   1187:  .dc.l 0
                   1188:  .dc.l 0
                   1189:  .dc.l 0
                   1190:  .dc.l 0
                   1191:  .dc.l 0
                   1192:  .dc.l 0
                   1193:  .dc.l 0
                   1194:  .dc.l 0
                   1195:  .dc.l 0
                   1196:  .dc.l 0
                   1197:  .dc.l 0
                   1198:  .dc.l 0
                   1199:  .dc.l 0
                   1200:  .dc.l 0
                   1201:  .dc.l 0
                   1202:  .dc.l 0
                   1203:  .dc.l 0
                   1204:  .dc.l 0
                   1205:  .dc.l 0
                   1206:  .dc.l 0
                   1207:  .dc.l 0
                   1208:  .dc.l 0
                   1209:  .dc.l 0
                   1210:  .dc.l 0
                   1211:  .dc.l 0
                   1212:  .dc.l 0
                   1213:  .dc.l 0
                   1214:  .dc.l 0
                   1215:  .dc.l 0
                   1216:  .dc.l 0
                   1217:  .dc.l 0
                   1218:  .dc.l 0
                   1219:  .dc.l 0
                   1220:  .dc.l 0
                   1221:  .dc.l 0
                   1222:  .dc.l 0
                   1223:  .dc.l 0
                   1224:  .dc.l 0
                   1225:  .dc.l 0
                   1226:  .dc.l 0
                   1227:  .dc.l 0
                   1228:  .dc.l 0
                   1229:  .dc.l 0
                   1230:  .dc.l 0
                   1231:  .dc.l 0
                   1232:  .dc.l 0
                   1233:  .dc.l 0
                   1234:  .dc.l 0
                   1235:  .dc.l 0
                   1236:  .dc.l 0
                   1237:  .dc.l 0
                   1238:  .dc.l 0
                   1239:  .dc.l 0
                   1240:  .dc.l 0
                   1241:  .dc.l 0
                   1242:  .dc.l 0
                   1243:  .dc.l 0
                   1244:  .dc.l 0
                   1245:  .dc.l 0
                   1246:  .dc.l 0
                   1247:  .dc.l 0
                   1248:  .dc.l 0
                   1249:  .dc.l 0
                   1250:  .dc.l 0
                   1251:  .dc.l 0
                   1252:  .dc.l 0
                   1253:  .dc.l 0
                   1254:  .dc.l 0
                   1255:  .dc.l 0
                   1256:  .dc.l 0
                   1257:  .dc.l 0
                   1258:  .dc.l 0
                   1259:  .dc.l 0
                   1260:  .dc.l 0
                   1261:  .dc.l 0
                   1262:  .dc.l 0
                   1263:  .dc.l 0
                   1264:  .dc.l 0
                   1265:  .dc.l 0
                   1266:  .dc.l 0
                   1267:  .dc.l 0
                   1268:  .dc.l 0
                   1269:  .dc.l 0
                   1270:  .dc.l 0
                   1271:  .dc.l 0
                   1272:  .extern _M_WriteOutSamples
                   1273:  .extern _samples_per_midiclock
                   1274:  .extern _music_end
                   1275:  .extern _music_start
                   1276:  .extern _music
                   1277:  .extern _next_eventtime
                   1278:  .extern _musictime
                   1279:  .extern _music_channels
                   1280:  .extern _instruments
                   1281:  .extern _samplecount
                   1282:  .extern _sfxvolume
                   1283:  .extern _M_PaintSingleChannel
                   1284: 
                   1285:        .phrase
                   1286:        .68000
                   1287: codeend:

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.