Metropoli BBS
VIEWER: drumlst.asm MODE: TEXT (CP437)
  BEANTOOL Handle versio 0.000000000000000000000000000000000000000000000001 :)
  
      If you want to know what the "--"-values is, you should call to any
                              SBC-Connection BBSs
    
      Offcourse you can test those values too :), like I did, grrrr... it
                    ): takes a little bit too much time :(

     ┌───────────────────────┐
     │   Resetmixer proc near│
     └─────────┬─────────────┘
     ┌─────────┴──────────┐
     │   mov     dx,addres│
     │   add     dx,--h   │
     │   mov     al,--h   │
     │   out     dx,al    │
     │   inc     dx       │
     │   mov     al,--h   │
     │   out     dx,al    │
     └─────────┬──────────┘
     ┌─────────┴──────────┐
     │   ret              │
     └────────────────────┘
     ┌────────────────────┐
     │   Resetmixer endp  │
     └────────────────────┘


     ┌────────────────────────┐
     │   Irkkuluuppi proc near│
     └──────────┬─────────────┘
     ┌──────────┴──────────┐
     │   cld               │
     │   sti               │
     │   mov     booleani,1│
     │   mov     dx,addres │
     │   add     dx,0Eh    │
     │   in      al,dx     │
     └──────────┬──────────┘
     ┌──────────┴──────────┐
     *   cmp     IRQ,10    │
     └──────────┬──────────┘
                ^
             /     \  eka
           <    je   >─────────────┐
             \     /               │
                v                  │
     ┌──────────┴──────────┐       │
     │   mov     dx,020h   │       │
     └──────────┬──────────┘       │
     ┌──────────┴──────────┐       │
     │   jmp     toka      ├────┐  │
     └─────────────────────┘    │  │
     eka:                       │  │
                ┌───────────────┼──┘
     ┌──────────┴──────────┐    │
     │   mov     dx,0A0h   │    │
     └──────────┬──────────┘    │
     toka:      │               │
     ┌──────────┴──────────┐    │
     │   mov     al,20h    │<───┘
     │   out     dx,al     │
     └──────────┬──────────┘
     ┌──────────┴──────────┐
     │   iret              │
     └─────────────────────┘
     ┌─────────────────────┐
     │   Irkkuluuppi endp  │
     └─────────────────────┘



     ┌────────────────────────────────┐
     │   Waitdma proc near            │  ; !!!!!!!!!!  NOT READY YET !!!!!!!!!!
     └───────────────┬────────────────┘
     ┌───────────────┴────────────────┐
     │   mov     Booleani,0           │
     │   mov     dx,021h              │
     │   in      al,dx                │
     │   mov     Irqmask,al           │
     └───────────────┬────────────────┘
     ┌───────────────┴────────────────┐
     *   cmp     IRQ,10               │
     └───────────────┬────────────────┘
                     ^
                  /     \  ir2
                <   jne   >──────────────────────────┐
                  \     /                            │
                     v                               │
     ┌───────────────┴────────────────┐              │
     │   mov     Interr,72h           │              │
     └───────────────┬────────────────┘              │
     ┌───────────────┴────────────────┐              │
     │   jmp     irkkuok              ├─────────────┐│
     └────────────────────────────────┘             ││
     ir2:                                           ││
                     ┌──────────────────────────────┼┘
     ┌───────────────┴────────────────┐             │
     *   cmp     IRQ,2                │             │
     └───────────────┬────────────────┘             │
                     ^                              │
                  /     \  ir3                      │
                <   jne   >────────────────────────┐│
                  \     /                          ││
                     v                             ││
     ┌───────────────┴────────────────┐            ││
     │   mov     interr,0Ah           │            ││
     └───────────────┬────────────────┘            ││
     ┌───────────────┴────────────────┐            ││
     │   jmp     irkkuok              ├───────────┐││
     └────────────────────────────────┘           │││
     ir3:                                         │││
                     ┌────────────────────────────┼┘│
     ┌───────────────┴────────────────┐           │ │
     *   cmp     IRQ,3                │           │ │
     └───────────────┬────────────────┘           │ │
                     ^                            │ │
                  /     \  ir5                    │ │
                <   jne   >──────────────────────┐│ │
                  \     /                        ││ │
                     v                           ││ │
     ┌───────────────┴────────────────┐          ││ │
     │   mov     interr,0Bh           │          ││ │
     └───────────────┬────────────────┘          ││ │
     ┌───────────────┴────────────────┐          ││ │
     │   jmp     irkkuok              ├─────────┐││ │
     └────────────────────────────────┘         │││ │
     ir5:                                       │││ │
                     ┌──────────────────────────┼┘│ │
     ┌───────────────┴────────────────┐         │ │ │
     *   cmp     IRQ,5                │         │ │ │
     └───────────────┬────────────────┘         │ │ │
                     ^                          │ │ │
                  /     \  ir7                  │ │ │
                <   jne   >────────────────────┐│ │ │
                  \     /                      ││ │ │
                     v                         ││ │ │
     ┌───────────────┴────────────────┐        ││ │ │
     │   mov     interr,0Dh           │        ││ │ │
     └───────────────┬────────────────┘        ││ │ │
     ┌───────────────┴────────────────┐        ││ │ │
     │   jmp     irkkuok              ├───────┐││ │ │
     └────────────────────────────────┘       │││ │ │
     ir7:                                     │││ │ │
                     ┌────────────────────────┼┘│ │ │
     ┌───────────────┴────────────────┐       │ │ │ │
     *   cmp     IRQ,7                │       │ │ │ │
     └───────────────┬────────────────┘       │ │ │ │
                     ^                        │ │ │ │
                  /     \  hittolainen        │ │ │ │
                <   jne   >──────────────────┐│ │ │ │
                  \     /                    ││ │ │ │
                     v                       ││ │ │ │
     ┌───────────────┴────────────────┐      ││ │ │ │
     │   mov     interr,0Fh           │      ││ │ │ │
     └───────────────┬────────────────┘      ││ │ │ │
     ┌───────────────┴────────────────┐      ││ │ │ │
     │   jmp     irkkuok              ├─────┐││ │ │ │
     └────────────────────────────────┘     │││ │ │ │
     hittolainen:                           │││ │ │ │
                     ┌──────────────────────┼┘│ │ │ │
     ┌───────────────┴────────────────┐     │ │ │ │ │
     │   call    errorscreen          │     │ │ │ │ │
     └───────────────┬────────────────┘     │ │ │ │ │
     ┌───────────────┴────────────────┐     │ │ │ │ │
     │   jmp     poispois             ├────┐│ │ │ │ │
     └────────────────────────────────┘    ││ │ │ │ │
     Irkkuok:                              ││ │ │ │ │
                     ┌─────────────────────┼┴─┴─┴─┴─┘
     ┌───────────────┴────────────────┐    │
     │   mov     dx,addres            │    │
     │   add     dx,0Eh               │    │
     │   in      al,dx                │    │
     │   in      al,dx                │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     *   cmp     IRQ,10               │    │
     └───────────────┬────────────────┘    │
                     ^                     │
                  /     \  eka2            │
                <    je   >───────────────┐│
                  \     /                 ││
                     v                    ││
     ┌───────────────┴────────────────┐   ││
     │   mov     dx,020h              │   ││
     └───────────────┬────────────────┘   ││
     ┌───────────────┴────────────────┐   ││
     │   jmp     toka2                ├──┐││
     └────────────────────────────────┘  │││
     eka2:                               │││
                     ┌───────────────────┼┘│
     ┌───────────────┴────────────────┐  │ │
     │   mov     dx,0A0h              │  │ │
     └───────────────┬────────────────┘  │ │
     toka2:          │                   │ │
     ┌───────────────┴────────────────┐  │ │
     │   mov     al,20h               │<─┘ │
     │   out     dx,al                │    │
     │   mov     al,0                 │    │
     │   mov     dx,021h              │    │
     │   out     dx,al                │    │
     │   cld                          │    │
     │   cli                          │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   push    es                   │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   mov     ah,35h               │    │               ; Get interrupt vector
     │   mov     al,interr            │    │
     │   int     21h                  │    │
     │   mov     ax,es                │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   pop     es                   │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   mov     Saveseg,ax           │    │
     │   mov     Saveofs,bx           │    │
     │   sti                          │    │
     │   mov     dx,OFFSET Irkkuluuppi│    │
     │   mov     ax,SEG Irkkuluuppi   │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   push    ds                   │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   mov     ds,ax                │    │
     │   mov     ah,25h               │    │
     │   mov     al,interr            │    │
     │   int     21h                  │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   pop     ds                   │    │
     └───────────────┬────────────────┘    │
     uusiks:         │                     │
     ┌───────────────┴────────────────┐    │
 ┌──>│   mov     ah,7h                │    │
 │   │   int     21h                  │    │
 │   └───────────────┬────────────────┘    │
 │   ┌───────────────┴────────────────┐    │
 │   *   cmp     al,'q'               │    │
 │   └───────────────┬────────────────┘    │
 │                   ^                     │
 │                /     \  uh              │
 │              <    je   >───────────────┐│
 │                \     /                 ││
 │                   v                    ││
 │   ┌───────────────┴────────────────┐   ││
 │   *   cmp     booleani,0           │   ││
 │   └───────────────┬────────────────┘   ││
 │                   ^                    ││
 │uusiks          /     \                 ││
 └──────────────<    je   >               ││
                  \     /                 ││
                     v                    ││
     uh:             │                    ││
     ┌───────────────┴────────────────┐   ││
     │   mov     al,ffh               │<──┘│
     │   mov     dx,021h              │    │
     │   out     dx,al                │    │
     │   mov     ax,Saveseg           │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   push    ds                   │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   mov     ds,ax                │    │
     │   mov     dx,Saveofs           │    │
     │   mov     ah,25h               │    │
     │   mov     al,interr            │    │
     │   int     21h                  │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   pop     ds                   │    │
     └───────────────┬────────────────┘    │
     ┌───────────────┴────────────────┐    │
     │   mov     al,Irqmask           │    │
     │   mov     dx,021h              │    │
     │   out     dx,al                │    │
     └───────────────┬────────────────┘    │
     poispois:       │                     │
     ┌───────────────┴────────────────┐    │
     │   ret                          │<───┘
     └────────────────────────────────┘
     ┌────────────────────────────────┐
     │   Waitdma endp                 │
     └────────────────────────────────┘



     ┌────────────────────────┐
     │   Setmixer proc near   │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push    bp           │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov     bp,sp        │
     │   mov     bx,ss:[bp]+6 │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     *   cmp     bx,1         │
     └───────────┬────────────┘
                 ^
              /     \  monoset
            <   jne   >───────────────┐
              \     /                 │
                 v                    │
     ┌───────────┴────────────┐       │
     │   mov     dx,addres    │       │
     │   add     dx,--h       │       │
     │   mov     al,--h       │       │
     │   out     dx,al        │       │
     │   inc     dx           │       │
     │   mov     al,--h       │       │
     │   out     dx,al        │       │
     └───────────┬────────────┘       │
     ┌───────────┴────────────┐       │
     │   jmp     oliretevo    ├────┐  │
     └────────────────────────┘    │  │
     monoset:                      │  │
                 ┌─────────────────┼──┘
     ┌───────────┴────────────┐    │
     │   mov     dx,addres    │    │
     │   add     dx,--h       │    │
     │   mov     al,--h       │    │
     │   out     dx,al        │    │
     │   inc     dx           │    │
     │   mov     al,--h       │    │
     │   out     dx,al        │    │
     └───────────┬────────────┘    │
     oliretevo:  │                 │
     ┌───────────┴────────────┐    │
     │   mov     bx,ss:[bp]+8 │<───┘
     │   mov     dx,addres    │
     │   add     dx,--h       │
     │   mov     al,--h       │
     │   out     dx,al        │
     │   inc     dx           │
     │   mov     ax,bx        │
     │   out     dx,al        │
     │   mov     bx,ss:[bp]+10│
     │   mov     dx,addres    │
     │   add     dx,--h       │
     │   mov     al,--h       │
     │   out     dx,al        │
     │   inc     dx           │
     │   mov     ax,bx        │
     │   out     dx,al        │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   pop     bp           │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   ret 6                │
     └────────────────────────┘
     ┌────────────────────────┐
     │   Setmixer endp        │
     └────────────────────────┘



     ┌──────────────────────┐
     │   Sub_2 proc near    │
     └──────────┬───────────┘
     ┌──────────┴───────────┐
     │   push      cx       │
     │   push      dx       │
     └──────────┬───────────┘
     ┌──────────┴───────────┐
     │   mov       dx,Addres│
     │   add       dl,0Eh   │
     │   mov       cx,200h  │
     └──────────┬───────────┘
     locloop_4: │   ;       <- Is this from sourcer re-asmed :) (CT-Voice.Drv)
     ┌──────────┴───────────┐
 ┌──>│   in        al,dx    │
 │   └──────────┬───────────┘
 │   ┌──────────┴───────────┐
 │   *   or        al,al    │
 │   └──────────┬───────────┘
 │              ^
 │           /     \  loc_5
 │         <    js   >──────────────┐
 │           \     /                │
 │              v                   │
 │   ┌──────────┴───────────┐       │
 └───┤   loop      locloop_4│       │
     └──────────┬───────────┘       │
     ┌──────────┴───────────┐       │
     │   stc                │       │
     └──────────┬───────────┘       │
     ┌──────────┴───────────┐       │
     │   jmp       loc_6    ├────┐  │
     └──────────────────────┘    │  │
     loc_5:                      │  │
                ┌────────────────┼──┘
     ┌──────────┴───────────┐    │
     │   sub       dl,4     │    │
     │   in        al,dx    │    │
     │   clc                │    │
     └──────────┬───────────┘    │
     loc_6:     │                │
     ┌──────────┴───────────┐    │
     │   pop       dx       │<───┘
     │   pop       cx       │
     └──────────┬───────────┘
     ┌──────────┴───────────┐
     │   retn               │
     └──────────────────────┘
     ┌──────────────────────┐
     │   Sub_2 endp         │
     └──────────────────────┘



        ┌────────────────────┐
        │   Bitti proc near  │
        └─────────┬──────────┘
        ┌─────────┴──────────┐
        │   jmp     biii     ├────┐
        └────────────────────┘    │
        kerpele:                  │
    ┌─────────────┐               │
    │   ┌─────────┴──────────┐    │
    │   │   mov     dx,Addres│    │
    │   │   add     dx,06h   │    │
    │   │   mov     al,1     │    │
    │   │   out     dx,al    │    │
    │   │   in      al,dx    │    │
    │   │   in      al,dx    │    │
    │   │   in      al,dx    │    │
    │   │   in      al,dx    │    │
    │   │   sub     al,al    │    │
    │   │   out     dx,al    │    │
    │   │   in      al,dx    │    │
    │   │   call    resetdma │    │
    │   └─────────┬──────────┘    │
    │   biii:     │               │
    │   ┌─────────┴──────────┐    │
    │   │   mov     cx,0FFFFh│<───┘
    │   │   mov     dx,addres│
    │   │   add     dx,0Ch   │
    │   └─────────┬──────────┘
    │   loc_8:    │
    │   ┌─────────┴──────────┐
 ┌──┼──>│   dec     cx       │
 │  │   └─────────┬──────────┘
 │  │   ┌─────────┴──────────┐
 │  │   *   cmp     cx,0     │
 │  │   └─────────┬──────────┘
 │  │             ^
 │  │          /     \
 │  └────────<    je   >
 │             \     /
 │                v
 │      ┌─────────┴──────────┐
 │      │   in      al,dx    │
 │      └─────────┬──────────┘
 │      ┌─────────┴──────────┐
 │      *   or      al,al    │
 │      └─────────┬──────────┘
 │                ^
 │loc_8        /     \
 └───────────<    js   >
               \     /
                  v
        ┌─────────┴──────────┐
        │   retn             │
        └────────────────────┘
        ┌────────────────────┐
        │   Bitti endp       │
        └────────────────────┘


     ┌─────────────────────────┐
     │   Resetdma proc near    │
     └────────────┬────────────┘
     ┌────────────┴────────────┐
     │   mov             dx,0Ah│
     │   mov             al,05h│
     │   out             dx,al │
     │   sub             al,al │
     │   add             dx,2  │
     │   out             dx,al │
     │   sub             dx,2  │
     │   out             dx,al │
     └────────────┬────────────┘
     ┌────────────┴────────────┐
     │   retn                  │
     └─────────────────────────┘
     ┌─────────────────────────┐
     │   Resetdma endp         │
     └─────────────────────────┘



     ┌────────────────────────┐
     │   Resetsb proc near    │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push    bp           │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov     bp,sp        │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push    ds           │
     │   push    es           │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov     bx,ss:[bp]+6 │
     │   mov     IRQ,bx       │
     │   mov     bx,ss:[bp]+8 │
     │   mov     Addres,bx    │
     │   mov     bx,ss:[bp]+10│
     │   mov     BufSeg,bx    │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     *   cmp     Addres,0220h │
     └───────────┬────────────┘
                 ^
              /     \  mee1
            <   jne   >─────────────────────────────────────────────────────────────────────────┐
              \     /                                                                           │
                 v                                                                              │
     ┌───────────┴────────────┐                                                                 │
     │   jmp     Sepase       ├───────────────────────────────────────────────────────────────┐ │
     └────────────────────────┘                                                               │ │
     mee1:                                                                                    │ │
                 ┌────────────────────────────────────────────────────────────────────────────┼─┘
     ┌───────────┴────────────┐                                                               │
     *   cmp     Addres,0240h │                                                               │
     └───────────┬────────────┘                                                               │
                 ^                                                                            │
              /     \  mee2                                                                   │
            <   jne   >─────────────────────────────────────────────────────────────────────┐ │
              \     /                                                                       │ │
                 v                                                                          │ │
     ┌───────────┴────────────┐                                                             │ │
     │   jmp     Sepase       ├───────────────────────────────────────────────────────────┐ │ │
     └────────────────────────┘                                                           │ │ │
     mee2:                                                                                │ │ │
                 ┌────────────────────────────────────────────────────────────────────────┼─┘ │
     ┌───────────┴────────────┐                                                           │   │
     │   call    Errorscreen  │                                                           │   │
     └───────────┬────────────┘                                                           │   │
     ┌───────────┴────────────┐                                                           │   │
     │   jmp     poies        ├─────────────────────────────────────────────────────────┐ │   │
     └────────────────────────┘                                                         │ │   │
     Sepase:                                                                            │ │   │
                 ┌──────────────────────────────────────────────────────────────────────┼─┴───┘
     ┌───────────┴────────────┐                                                         │
     *   cmp     BufSeg,04000h│                                                         │
     └───────────┬────────────┘                                                         │
                 ^                                                                      │
              /     \  mene1                                                            │
            <   jne   >───────────────────────────────────────────────────────────────┐ │
              \     /                                                                 │ │
                 v                                                                    │ │
     ┌───────────┴────────────┐                                                       │ │
     │   mov     BFSEG,04h    │                                                       │ │
     └───────────┬────────────┘                                                       │ │
     ┌───────────┴────────────┐                                                       │ │
     │   jmp     olise        ├─────────────────────────────────────────────────────┐ │ │
     └────────────────────────┘                                                     │ │ │
     mene1:                                                                         │ │ │
                 ┌──────────────────────────────────────────────────────────────────┼─┘ │
     ┌───────────┴────────────┐                                                     │   │
     *   cmp     BufSeg,05000h│                                                     │   │
     └───────────┬────────────┘                                                     │   │
                 ^                                                                  │   │
              /     \  mene2                                                        │   │
            <   jne   >───────────────────────────────────────────────────────────┐ │   │
              \     /                                                             │ │   │
                 v                                                                │ │   │
     ┌───────────┴────────────┐                                                   │ │   │
     │   mov     BFSEG,05h    │                                                   │ │   │
     └───────────┬────────────┘                                                   │ │   │
     ┌───────────┴────────────┐                                                   │ │   │
     │   jmp     olise        ├─────────────────────────────────────────────────┐ │ │   │
     └────────────────────────┘                                                 │ │ │   │
     mene2:                                                                     │ │ │   │
                 ┌──────────────────────────────────────────────────────────────┼─┘ │   │
     ┌───────────┴────────────┐                                                 │   │   │
     *   cmp     BufSeg,06000h│                                                 │   │   │
     └───────────┬────────────┘                                                 │   │   │
                 ^                                                              │   │   │
              /     \  mene3                                                    │   │   │
            <   jne   >───────────────────────────────────────────────────────┐ │   │   │
              \     /                                                         │ │   │   │
                 v                                                            │ │   │   │
     ┌───────────┴────────────┐                                               │ │   │   │
     │   mov     BFSEG,06h    │                                               │ │   │   │
     └───────────┬────────────┘                                               │ │   │   │
     ┌───────────┴────────────┐                                               │ │   │   │
     │   jmp     olise        ├─────────────────────────────────────────────┐ │ │   │   │
     └────────────────────────┘                                             │ │ │   │   │
     mene3:                                                                 │ │ │   │   │
                 ┌──────────────────────────────────────────────────────────┼─┘ │   │   │
     ┌───────────┴────────────┐                                             │   │   │   │
     *   cmp     BufSeg,07000h│                                             │   │   │   │
     └───────────┬────────────┘                                             │   │   │   │
                 ^                                                          │   │   │   │
              /     \  mene4                                                │   │   │   │
            <   jne   >───────────────────────────────────────────────────┐ │   │   │   │
              \     /                                                     │ │   │   │   │
                 v                                                        │ │   │   │   │
     ┌───────────┴────────────┐                                           │ │   │   │   │
     │   mov     BFSEG,07h    │                                           │ │   │   │   │
     └───────────┬────────────┘                                           │ │   │   │   │
     ┌───────────┴────────────┐                                           │ │   │   │   │
     │   jmp     olise        ├─────────────────────────────────────────┐ │ │   │   │   │
     └────────────────────────┘                                         │ │ │   │   │   │
     mene4:                                                             │ │ │   │   │   │
                 ┌──────────────────────────────────────────────────────┼─┘ │   │   │   │
     ┌───────────┴────────────┐                                         │   │   │   │   │
     *   cmp     BufSeg,08000h│                                         │   │   │   │   │
     └───────────┬────────────┘                                         │   │   │   │   │
                 ^                                                      │   │   │   │   │
              /     \  mene5                                            │   │   │   │   │
            <   jne   >───────────────────────────────────────────────┐ │   │   │   │   │
              \     /                                                 │ │   │   │   │   │
                 v                                                    │ │   │   │   │   │
     ┌───────────┴────────────┐                                       │ │   │   │   │   │
     │   mov     BFSEG,08h    │                                       │ │   │   │   │   │
     └───────────┬────────────┘                                       │ │   │   │   │   │
     ┌───────────┴────────────┐                                       │ │   │   │   │   │
     │   jmp     olise        ├─────────────────────────────────────┐ │ │   │   │   │   │
     └────────────────────────┘                                     │ │ │   │   │   │   │
     mene5:                                                         │ │ │   │   │   │   │
                 ┌──────────────────────────────────────────────────┼─┘ │   │   │   │   │
     ┌───────────┴────────────┐                                     │   │   │   │   │   │
     *   cmp     BufSeg,09000h│                                     │   │   │   │   │   │
     └───────────┬────────────┘                                     │   │   │   │   │   │
                 ^                                                  │   │   │   │   │   │
              /     \  mene6                                        │   │   │   │   │   │
            <   jne   >───────────────────────────────────────────┐ │   │   │   │   │   │
              \     /                                             │ │   │   │   │   │   │
                 v                                                │ │   │   │   │   │   │
     ┌───────────┴────────────┐                                   │ │   │   │   │   │   │
     │   mov     BFSEG,09h    │                                   │ │   │   │   │   │   │
     └───────────┬────────────┘                                   │ │   │   │   │   │   │
     ┌───────────┴────────────┐                                   │ │   │   │   │   │   │
     │   jmp     olise        ├─────────────────────────────────┐ │ │   │   │   │   │   │
     └────────────────────────┘                                 │ │ │   │   │   │   │   │
     mene6:                                                     │ │ │   │   │   │   │   │
                 ┌──────────────────────────────────────────────┼─┘ │   │   │   │   │   │
     ┌───────────┴────────────┐                                 │   │   │   │   │   │   │
     *   cmp     BufSeg,0a000h│                                 │   │   │   │   │   │   │
     └───────────┬────────────┘                                 │   │   │   │   │   │   │
                 ^                                              │   │   │   │   │   │   │
              /     \  mene7                                    │   │   │   │   │   │   │
            <   jne   >───────────────────────────────────────┐ │   │   │   │   │   │   │
              \     /                                         │ │   │   │   │   │   │   │
                 v                                            │ │   │   │   │   │   │   │
     ┌───────────┴────────────┐                               │ │   │   │   │   │   │   │
     │   mov     BFSEG,0ah    │                               │ │   │   │   │   │   │   │
     └───────────┬────────────┘                               │ │   │   │   │   │   │   │
     ┌───────────┴────────────┐                               │ │   │   │   │   │   │   │
     │   jmp     olise        ├─────────────────────────────┐ │ │   │   │   │   │   │   │
     └────────────────────────┘                             │ │ │   │   │   │   │   │   │
     mene7:                                                 │ │ │   │   │   │   │   │   │
                 ┌──────────────────────────────────────────┼─┘ │   │   │   │   │   │   │
     ┌───────────┴────────────┐                             │   │   │   │   │   │   │   │
     *   cmp     BufSeg,0b000h│                             │   │   │   │   │   │   │   │
     └───────────┬────────────┘                             │   │   │   │   │   │   │   │
                 ^                                          │   │   │   │   │   │   │   │
              /     \  mene8                                │   │   │   │   │   │   │   │
            <   jne   >───────────────────────────────────┐ │   │   │   │   │   │   │   │
              \     /                                     │ │   │   │   │   │   │   │   │
                 v                                        │ │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐                           │ │   │   │   │   │   │   │   │
     │   mov     BFSEG,0bh    │                           │ │   │   │   │   │   │   │   │
     └───────────┬────────────┘                           │ │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐                           │ │   │   │   │   │   │   │   │
     │   jmp     olise        ├─────────────────────────┐ │ │   │   │   │   │   │   │   │
     └────────────────────────┘                         │ │ │   │   │   │   │   │   │   │
     mene8:                                             │ │ │   │   │   │   │   │   │   │
                 ┌──────────────────────────────────────┼─┘ │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐                         │   │   │   │   │   │   │   │   │
     *   cmp     BufSeg,0c000h│                         │   │   │   │   │   │   │   │   │
     └───────────┬────────────┘                         │   │   │   │   │   │   │   │   │
                 ^                                      │   │   │   │   │   │   │   │   │
              /     \  mene9                            │   │   │   │   │   │   │   │   │
            <   jne   >───────────────────────────────┐ │   │   │   │   │   │   │   │   │
              \     /                                 │ │   │   │   │   │   │   │   │   │
                 v                                    │ │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐                       │ │   │   │   │   │   │   │   │   │
     │   mov     BFSEG,0ch    │                       │ │   │   │   │   │   │   │   │   │
     └───────────┬────────────┘                       │ │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐                       │ │   │   │   │   │   │   │   │   │
     │   jmp     olise        ├─────────────────────┐ │ │   │   │   │   │   │   │   │   │
     └────────────────────────┘                     │ │ │   │   │   │   │   │   │   │   │
     mene9:                                         │ │ │   │   │   │   │   │   │   │   │
                 ┌──────────────────────────────────┼─┘ │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐                     │   │   │   │   │   │   │   │   │   │
     *   cmp     BufSeg,0d000h│                     │   │   │   │   │   │   │   │   │   │
     └───────────┬────────────┘                     │   │   │   │   │   │   │   │   │   │
                 ^                                  │   │   │   │   │   │   │   │   │   │
              /     \  mene10                       │   │   │   │   │   │   │   │   │   │
            <   jne   >───────────────────────────┐ │   │   │   │   │   │   │   │   │   │
              \     /                             │ │   │   │   │   │   │   │   │   │   │
                 v                                │ │   │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐                   │ │   │   │   │   │   │   │   │   │   │
     │   mov     BFSEG,0dh    │                   │ │   │   │   │   │   │   │   │   │   │
     └───────────┬────────────┘                   │ │   │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐                   │ │   │   │   │   │   │   │   │   │   │
     │   jmp     olise        ├─────────────────┐ │ │   │   │   │   │   │   │   │   │   │
     └────────────────────────┘                 │ │ │   │   │   │   │   │   │   │   │   │
     mene10:                                    │ │ │   │   │   │   │   │   │   │   │   │
                 ┌──────────────────────────────┼─┘ │   │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐                 │   │   │   │   │   │   │   │   │   │   │
     *   cmp     BufSeg,0e000h│                 │   │   │   │   │   │   │   │   │   │   │
     └───────────┬────────────┘                 │   │   │   │   │   │   │   │   │   │   │
                 ^                              │   │   │   │   │   │   │   │   │   │   │
              /     \  mene11                   │   │   │   │   │   │   │   │   │   │   │
            <   jne   >───────────────────────┐ │   │   │   │   │   │   │   │   │   │   │
              \     /                         │ │   │   │   │   │   │   │   │   │   │   │
                 v                            │ │   │   │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐               │ │   │   │   │   │   │   │   │   │   │   │
     │   mov     BFSEG,0eh    │               │ │   │   │   │   │   │   │   │   │   │   │
     └───────────┬────────────┘               │ │   │   │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐               │ │   │   │   │   │   │   │   │   │   │   │
     │   jmp     olise        ├─────────────┐ │ │   │   │   │   │   │   │   │   │   │   │
     └────────────────────────┘             │ │ │   │   │   │   │   │   │   │   │   │   │
     mene11:                                │ │ │   │   │   │   │   │   │   │   │   │   │
                 ┌──────────────────────────┼─┘ │   │   │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐             │   │   │   │   │   │   │   │   │   │   │   │
     *   cmp     BufSeg,0f000h│             │   │   │   │   │   │   │   │   │   │   │   │
     └───────────┬────────────┘             │   │   │   │   │   │   │   │   │   │   │   │
                 ^                          │   │   │   │   │   │   │   │   │   │   │   │
              /     \  mene12               │   │   │   │   │   │   │   │   │   │   │   │
            <   jne   >───────────────────┐ │   │   │   │   │   │   │   │   │   │   │   │
              \     /                     │ │   │   │   │   │   │   │   │   │   │   │   │
                 v                        │ │   │   │   │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐           │ │   │   │   │   │   │   │   │   │   │   │   │
     │   mov     BFSEG,0fh    │           │ │   │   │   │   │   │   │   │   │   │   │   │
     └───────────┬────────────┘           │ │   │   │   │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐           │ │   │   │   │   │   │   │   │   │   │   │   │
     │   jmp     olise        ├─────────┐ │ │   │   │   │   │   │   │   │   │   │   │   │
     └────────────────────────┘         │ │ │   │   │   │   │   │   │   │   │   │   │   │
     mene12:                            │ │ │   │   │   │   │   │   │   │   │   │   │   │
                 ┌──────────────────────┼─┘ │   │   │   │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐         │   │   │   │   │   │   │   │   │   │   │   │   │
     │   call    errorscreen  │         │   │   │   │   │   │   │   │   │   │   │   │   │
     └───────────┬────────────┘         │   │   │   │   │   │   │   │   │   │   │   │   │
     ┌───────────┴────────────┐         │   │   │   │   │   │   │   │   │   │   │   │   │
     │   jmp     poies        ├───────┐ │   │   │   │   │   │   │   │   │   │   │   │   │
     └────────────────────────┘       │ │   │   │   │   │   │   │   │   │   │   │   │   │
     olise:                           │ │   │   │   │   │   │   │   │   │   │   │   │   │
                 ┌────────────────────┼─┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘   │
     hohhoi:     │                    │                                                 │
     ┌───────────┴────────────┐       │                                                 │
 ┌──>│   mov     dx,Addres    │       │                                                 │
 │   │   add     dx,06h       │       │                                                 │
 │   │   mov     al,1         │       │                                                 │
 │   │   out     dx,al        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   sub     al,al        │       │                                                 │
 │   │   out     dx,al        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   │   mov     dx,addres    │       │                                                 │
 │   │   add     dx,0Ch       │       │                                                 │
 │   │   in      al,dx        │       │                                                 │
 │   └───────────┬────────────┘       │                                                 │
 │   ┌───────────┴────────────┐       │                                                 │
 │   *   or      al,al        │       │                                                 │
 │   └───────────┬────────────┘       │                                                 │
 │               ^                    │                                                 │
 │hohhoi      /     \                 │                                                 │
 └──────────<    js   >               │                                                 │
              \     /                 │                                                 │
                 v                    │                                                 │
     ┌───────────┴────────────┐       │                                                 │
     │   mov     dl,10h       │       │                                                 │
     └───────────┬────────────┘       │                                                 │
     loc_9:      │                    │                                                 │
     ┌───────────┴────────────┐       │                                                 │
 ┌──>│   call    sub_2        │       │                                             │
 │   └───────────┬────────────┘       │                                                 │
 │   ┌───────────┴────────────┐       │                                                 │
 │   *   cmp     al,0aah      │       │                                                 │
 │   └───────────┬────────────┘       │                                                 │
 │               ^                    │                                                 │
 │            /     \  loc_10         │                                                 │
 │          <    je   >─────────────┐ │                                                 │
 │            \     /               │ │                                                 │
 │               v                  │ │                                                 │
 │   ┌───────────┴────────────┐     │ │                                                 │
 │   *   dec     bl           │     │ │                                                 │
 │   └───────────┬────────────┘     │ │                                                 │
 │               ^                  │ │                                                 │
 │loc_9       /     \               │ │                                                 │
 └──────────<   jnz   >             │ │                                                 │
              \     /               │ │                                                 │
                 v                  │ │                                                 │
     ┌───────────┴────────────┐     │ │                                                 │
     │   mov     ax,2         │     │ │                                                 │
     │   stc                  │     │ │                                                 │
     └───────────┬────────────┘     │ │                                                 │
     ┌───────────┴────────────┐     │ │                                                 │
     │   jmp     loc_11       ├───┐ │ │                                                 │
     └────────────────────────┘   │ │ │                                                 │
     loc_10:                      │ │ │                                                 │
                 ┌────────────────┼─┘ │                                                 │
     ┌───────────┴────────────┐   │   │                                                 │
     │   sub     ax,ax        │   │   │                                                 │
     └───────────┬────────────┘   │   │                                                 │
     loc_11:     │                │   │                                                 │
     ┌───────────┴────────────┐   │   │                                                 │
     │   or      ax,ax        │<──┘   │                                                 │
     │   CALL    resetdma     │       │                                                 │
     │   call bitti           │       │                                                 │
     │   mov     dx,addres    │       │                                                 │
     │   add     dx,0Ch       │       │                                                 │
     │   mov     al,0D1h      │       │                                                 │
     │   out     dx,al        │       │                                                 │
     └───────────┬────────────┘       │                                                 │
     poies:      │                    │                                                 │
     ┌───────────┴────────────┐       │                                                 │
     │   pop     es           │<──────┴─────────────────────────────────────────────────┘
     │   pop     ds           │
     │   pop     bp           │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   ret 6                │
     └────────────────────────┘
     ┌────────────────────────┐
     │   Resetsb endp         │
     └────────────────────────┘



     ┌───────────────────────────────────┐
     │   Errorscreen proc near           │
     └─────────────────┬─────────────────┘
     ┌─────────────────┴─────────────────┐
     │   jmp         ala                 ├────┐
     └───────────────────────────────────┘    │
     ala:                                     │
                       ┌──────────────────────┘
     ┌─────────────────┴─────────────────┐
     │   push        ds                  │
     └─────────────────┬─────────────────┘
     ┌─────────────────┴─────────────────┐
     │   mov         dx,cs               │
     │   mov         ds,dx               │
     │   mov         dx,OFFSET Copyright1│
     │   mov         ah,09h              │
     │   int         21h                 │
     │   mov         dx,OFFSET Copyright2│
     │   mov         ah,09h              │
     │   int         21h                 │
     │   mov         dx,OFFSET Copyright3│
     │   mov         ah,09h              │
     │   int         21h                 │
     │   mov         dx,OFFSET Copyright4│
     │   mov         ah,09h              │
     │   int         21h                 │
     │   mov         dx,OFFSET Error     │
     │   mov         ah,09h              │
     │   int         21h                 │
     │   mov         dx,OFFSET Drror     │
     │   mov         ah,09h              │
     │   int         21h                 │
     └─────────────────┬─────────────────┘
     huu:              │
     ┌─────────────────┴─────────────────┐
 ┌──>│   mov         ah,07h              │
 │   │   int         21h                 │
 │   └─────────────────┬─────────────────┘
 │   ┌─────────────────┴─────────────────┐
 │   *   cmp        al,' '               │
 │   └─────────────────┬─────────────────┘
 │                     ^
 │huu               /     \
 └────────────────<   jne   >
                    \     /
                       v
     ┌─────────────────┴─────────────────┐
     │   pop         ds                  │
     └─────────────────┬─────────────────┘
     ┌─────────────────┴─────────────────┐
     │   retn                            │
     └───────────────────────────────────┘
     ┌───────────────────────────────────┐
     │   Errorscreen endp                │
     └───────────────────────────────────┘



     ┌────────────────────────┐
     │   Calcdata proc near   │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     *   cmp     BFSEG,0FFh   │
     └───────────┬────────────┘
                 ^
              /     \  contin
            <   jne   >──────────────────────────────┐
              \     /                                │
                 v                                   │
     ┌───────────┴────────────┐                      │
     │   call    Errorscreen  │                      │
     └───────────┬────────────┘                      │
     ┌───────────┴────────────┐                      │
     │   jmp     Eituumitaan  ├───────────────────┐  │
     └────────────────────────┘                   │  │
     contin:                                      │  │
                 ┌────────────────────────────────┼──┘
     ┌───────────┴────────────┐                   │
     │   push    bp           │                   │
     └───────────┬────────────┘                   │
     ┌───────────┴────────────┐                   │
     │   mov     bp,sp        │                   │
     └───────────┬────────────┘                   │
     ┌───────────┴────────────┐                   │
     │   push    ax           │                   │
     │   push    dx           │                   │
     │   push    cx           │                   │
     │   push    es           │                   │
     │   push    di           │                   │
     │   push    ds           │                   │
     └───────────┬────────────┘                   │
     ┌───────────┴────────────┐                   │
     │   mov     Plhi,--h     │                   │
     │   mov     Pllo,--h     │                   │
     │   mov     Endi1,--h    │                   │
     │   mov     Endi2,--h    │                   │
     │   mov     Endi3,--h    │                   │
     │   mov     Endi4,--h    │                   │
     │   mov     cont,--h     │                   │
     │   mov     bx,ss:[bp]+6 │                   │
     │   mov     Stereo,bx    │                   │
     │   mov     bx,ss:[bp]+8 │                   │
     │   mov     Speed,bx     │                   │
     │   mov     bx,ss:[bp]+10│                   │
     │   mov     ax,bx        │                   │
     │   clc                  │                   │
     └───────────┬────────────┘                   │
     ┌───────────┴────────────┐                   │
     *   rcr     ax,--h       │                   │
     └───────────┬────────────┘                   │
                 ^                                │
              /     \  pariton                    │
            <    jc   >────────────────────────┐  │
              \     /                          │  │
                 v                             │  │
     ┌───────────┴────────────┐                │  │
     │   inc     bx           │                │  │
     └───────────┬────────────┘                │  │
     pariton:    │                             │  │
     ┌───────────┴────────────┐                │  │
     │   mov     Playlen,bx   │<───────────────┘  │
     │   sal     bx,1         │                   │
     │   mov     stereol,bx   │                   │
     └───────────┬────────────┘                   │
     ┌───────────┴────────────┐                   │
     *   cmp     playlen,----h│                   │
     └───────────┬────────────┘                   │
                 ^                                │
              /     \  looppi                     │
            <   jna   >────────────────────────┐  │
              \     /                          │  │
                 v                             │  │
     ┌───────────┴────────────┐                │  │
     *   cmp     Stereo,0     │                │  │
     └───────────┬────────────┘                │  │
                 ^                             │  │
              /     \  looppi                  │  │
            <    je   >─────────────────────┐  │  │
              \     /                       │  │  │
                 v                          │  │  │
     ┌───────────┴────────────┐             │  │  │
     │   call    Errorscreen  │             │  │  │
     └───────────┬────────────┘             │  │  │
     ┌───────────┴────────────┐             │  │  │
     │   jmp     pois         ├──────────┐  │  │  │
     └────────────────────────┘          │  │  │  │
     looppi:                             │  │  │  │
 ┌───────────────┬───────────────────────┼──┴──┘  │
 │   ┌───────────┴────────────┐          │        │
 │   │   inc     cont         │          │        │
 │   │   inc     Pllo         │          │        │
 │   └───────────┬────────────┘          │        │
 │   ┌───────────┴────────────┐          │        │
 │   *   cmp     stereo,0     │          │        │
 │   └───────────┬────────────┘          │        │
 │               ^                       │        │
 │            /     \  hups              │        │
 │          <    je   >───────────────┐  │        │
 │            \     /                 │  │        │
 │               v                    │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   inc     pllo         │       │  │        │
 │   └───────────┬────────────┘       │  │        │
 │   hups:       │                    │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   *   cmp     Pllo,--h     │<──────┘  │        │
 │   └───────────┬────────────┘          │        │
 │               ^                       │        │
 │            /     \  Incplhi           │        │
 │          <    ja   >───────────────┐  │        │
 │            \     /                 │  │        │
 │               v                    │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   jmp     Tannevaan    ├────┐  │  │        │
 │   └────────────────────────┘    │  │  │        │
 │   Incplhi:                      │  │  │        │
 │               ┌─────────────────┼──┘  │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   inc     Plhi         │    │     │        │
 │   │   mov     Pllo,0       │    │     │        │
 │   └───────────┬────────────┘    │     │        │
 │   Tannevaan:  │                 │     │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   mov     es,Dat1seg   │<───┘     │        │        ; VOICE - 1
 │   │   mov     di,Dat1ofs   │          │        │
 │   │   add     di,Playlen   │          │        │
 │   └───────────┬────────────┘          │        │
 │   ┌───────────┴────────────┐          │        │
 │   *   cmp     di,Datlen1   │          │        │
 │   └───────────┬────────────┘          │        │
 │               ^                       │        │
 │            /     \  con1              │        │
 │          <   jae   >───────────────┐  │        │
 │            \     /                 │  │        │
 │               v                    │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   mov     ax,es:[di]   │       │  │        │
 │   └───────────┬────────────┘       │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   jmp     cont1        ├────┐  │  │        │
 │   └────────────────────────┘    │  │  │        │
 │   con1:                         │  │  │        │
 │               ┌─────────────────┼──┘  │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   mov     ax,--h       │    │     │        │
 │   │   Mov     Endi1,0      │    │     │        │
 │   └───────────┬────────────┘    │     │        │
 │   cont1:      │                 │     │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   mov     es,Dat2seg   │<───┘     │        │        ; VOICE - 2
 │   │   mov     di,Dat2ofs   │          │        │
 │   │   add     di,Playlen   │          │        │
 │   └───────────┬────────────┘          │        │
 │   ┌───────────┴────────────┐          │        │
 │   *   cmp     di,Datlen2   │          │        │
 │   └───────────┬────────────┘          │        │
 │               ^                       │        │
 │            /     \  con2              │        │
 │          <   jae   >───────────────┐  │        │
 │            \     /                 │  │        │
 │               v                    │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   add     ax,es:[di]   │       │  │        │
 │   └───────────┬────────────┘       │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   jmp     cont2        ├────┐  │  │        │
 │   └────────────────────────┘    │  │  │        │
 │   con2:                         │  │  │        │
 │               ┌─────────────────┼──┘  │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   add     ax,--h       │    │     │        │
 │   │   mov     Endi2,0      │    │     │        │
 │   └───────────┬────────────┘    │     │        │
 │   cont2:      │                 │     │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   rcr     ax,--h       │<───┘     │        │
 │   │   mov     luku1,ax     │          │        │
 │   │   mov     es,Dat3seg   │          │        │        ; VOICE - 3
 │   │   mov     di,Dat3ofs   │          │        │
 │   │   add     di,Playlen   │          │        │
 │   └───────────┬────────────┘          │        │
 │   ┌───────────┴────────────┐          │        │
 │   *   cmp     di,Datlen3   │          │        │
 │   └───────────┬────────────┘          │        │
 │               ^                       │        │
 │            /     \  con3              │        │
 │          <   jae   >───────────────┐  │        │
 │            \     /                 │  │        │
 │               v                    │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   mov     ax,es:[di]   │       │  │        │
 │   └───────────┬────────────┘       │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   jmp     cont3        ├────┐  │  │        │
 │   └────────────────────────┘    │  │  │        │
 │   con3:                         │  │  │        │
 │               ┌─────────────────┼──┘  │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   mov     ax,--h       │    │     │        │
 │   │   mov     Endi3,0      │    │     │        │
 │   └───────────┬────────────┘    │     │        │
 │   cont3:      │                 │     │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   mov     es,Dat4seg   │<───┘     │        │        ; VOICE - 4
 │   │   mov     di,Dat4ofs   │          │        │
 │   │   add     di,Playlen   │          │        │
 │   └───────────┬────────────┘          │        │
 │   ┌───────────┴────────────┐          │        │
 │   *   cmp     di,Datlen4   │          │        │
 │   └───────────┬────────────┘          │        │
 │               ^                       │        │
 │            /     \  con4              │        │
 │          <   jae   >───────────────┐  │        │
 │            \     /                 │  │        │
 │               v                    │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   add     ax,es:[di]   │       │  │        │
 │   └───────────┬────────────┘       │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   jmp     cont4        ├────┐  │  │        │
 │   └────────────────────────┘    │  │  │        │
 │   con4:                         │  │  │        │
 │               ┌─────────────────┼──┘  │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   add     ax,--h       │    │     │        │
 │   │   mov     Endi4,0      │    │     │        │
 │   └───────────┬────────────┘    │     │        │
 │   cont4:      │                 │     │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   rcr     ax,--h       │<───┘     │        │
 │   │   mov     luku2,ax     │          │        │
 │   │   mov     es,bufseg    │          │        │
 │   └───────────┬────────────┘          │        │
 │   ┌───────────┴────────────┐          │        │
 │   *   cmp     Stereo,0     │          │        │
 │   └───────────┬────────────┘          │        │
 │               ^                       │        │
 │            /     \  monona            │        │
 │          <    je   >───────────────┐  │        │
 │            \     /                 │  │        │
 │               v                    │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   mov     di,stereol   │       │  │        │
 │   │   mov     ax,luku1     │       │  │        │
 │   │   mov     es:[di],ah   │       │  │        │
 │   │   mov     ax,luku2     │       │  │        │
 │   │   inc     di           │       │  │        │
 │   │   mov     es:[di],ah   │       │  │        │
 │   │   sub     stereol,2    │       │  │        │
 │   └───────────┬────────────┘       │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 │   │   jmp     stereona     ├────┐  │  │        │
 │   └────────────────────────┘    │  │  │        │
 │   monona:                       │  │  │        │
 │               ┌─────────────────┼──┘  │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   mov     ax,luku1     │    │     │        │
 │   │   add     ax,luku2     │    │     │        │
 │   │   rcr     ax,--h       │    │     │        │
 │   │   mov     di,Playlen   │    │     │        │
 │   │   mov     es:[di],ah   │    │     │        │
 │   └───────────┬────────────┘    │     │        │
 │   stereona:   │                 │     │        │
 │   ┌───────────┴────────────┐    │     │        │
 │   │   dec     Playlen      │<───┘     │        │
 │   └───────────┬────────────┘          │        │
 │   ┌───────────┴────────────┐          │        │
 │   *   cmp     Playlen,0    │          │        │
 │   └───────────┬────────────┘          │        │
 │               ^                       │        │
 │            /     \  pois              │        │
 │          <    je   >───────────────┐  │        │
 │            \     /                 │  │        │
 │               v                    │  │        │
 │   ┌───────────┴────────────┐       │  │        │
 └───┤   jmp     looppi       │       │  │        │
     └────────────────────────┘       │  │        │
     pois:                            │  │        │
                 ┌────────────────────┴──┘        │
     ┌───────────┴────────────┐                   │
     │   mov     ax,pllo      │                   │
     │   clc                  │                   │
     └───────────┬────────────┘                   │
     ┌───────────┴────────────┐                   │
     *   rcr     ax,1         │                   │
     └───────────┬────────────┘                   │
                 ^                                │
              /     \  olihanse                   │
            <    jc   >────────────────────────┐  │
              \     /                          │  │
                 v                             │  │
     ┌───────────┴────────────┐                │  │
     │   inc     pllo         │                │  │
     └───────────┬────────────┘                │  │
     olihanse:   │                             │  │
     ┌───────────┴────────────┐                │  │
     │   pop     ds           │<───────────────┘  │
     │   pop     di           │                   │
     │   pop     es           │                   │
     │   pop     cx           │                   │
     │   pop     dx           │                   │
     │   pop     ax           │                   │
     │   pop     bp           │                   │
     └───────────┬────────────┘                   │
     ┌───────────┴────────────┐                   │
     │   ret 6                │                   │
     └────────────────────────┘                   │
     Eituumitaan:                                 │
     ┌────────────────────────┐                   │
     │   Calcdata endp        │<──────────────────┘
     └────────────────────────┘


     ┌────────────────────────┐
     │   Setvoice1 proc near  │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push     bp          │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov      bp,sp       │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push     es          │
     │   push     di          │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov     bx,ss:[bp]+6 │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     *   cmp     bx,0         │
     └───────────┬────────────┘
                 ^
              /     \  uus1
            <    ja   >──────────────────┐
              \     /                    │
                 v                       │
     ┌───────────┴────────────┐          │
     *   cmp     endi1,0      │          │
     └───────────┬────────────┘          │
                 ^                       │
              /     \  vanha1            │
            <   jne   >───────────────┐  │
              \     /                 │  │
                 v                    │  │
     uus1:       │                    │  │
     ┌───────────┴────────────┐       │  │
     │   mov     Datlen1,bx   │<──────┼──┘
     │   mov     bx,ss:[bp]+8 │       │
     │   mov     Dat1ofs,bx   │       │
     │   mov     bx,ss:[bp]+10│       │
     │   mov     Dat1seg,bx   │       │
     └───────────┬────────────┘       │
     ┌───────────┴────────────┐       │
     │   jmp     uusi1        ├────┐  │
     └────────────────────────┘    │  │
     vanha1:                       │  │
                 ┌─────────────────┼──┘
     ┌───────────┴────────────┐    │
     │   mov     bx,cont      │    │
     │   add     Dat1ofs,bx   │    │
     │   mov     bx,datlen1   │    │
     │   sub     bx,cont      │    │
     │   mov     datlen1,bx   │    │
     └───────────┬────────────┘    │
     uusi1:      │                 │
     ┌───────────┴────────────┐    │
     │   pop     di           │<───┘
     │   pop     es           │
     │   pop     bp           │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   ret 6                │
     └────────────────────────┘
     ┌────────────────────────┐
     │   Setvoice1 endp       │
     └────────────────────────┘




     ┌────────────────────────┐
     │   Setvoice2 proc near  │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push     bp          │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov      bp,sp       │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push     es          │
     │   push     di          │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov     bx,ss:[bp]+6 │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     *   cmp     bx,0         │
     └───────────┬────────────┘
                 ^
              /     \  uus2
            <    ja   >──────────────────┐
              \     /                    │
                 v                       │
     ┌───────────┴────────────┐          │
     *   cmp     endi2,0      │          │
     └───────────┬────────────┘          │
                 ^                       │
              /     \  vanha2            │
            <   jne   >───────────────┐  │
              \     /                 │  │
                 v                    │  │
     uus2:       │                    │  │
     ┌───────────┴────────────┐       │  │
     │   mov     Datlen2,bx   │<──────┼──┘
     │   mov     bx,ss:[bp]+8 │       │
     │   mov     Dat2ofs,bx   │       │
     │   mov     bx,ss:[bp]+10│       │
     │   mov     Dat2seg,bx   │       │
     └───────────┬────────────┘       │
     ┌───────────┴────────────┐       │
     │   jmp     uusi2        ├────┐  │
     └────────────────────────┘    │  │
     vanha2:                       │  │
                 ┌─────────────────┼──┘
     ┌───────────┴────────────┐    │
     │   mov     bx,cont      │    │
     │   add     Dat2ofs,bx   │    │
     │   mov     bx,datlen2   │    │
     │   sub     bx,cont      │    │
     │   mov     datlen2,bx   │    │
     └───────────┬────────────┘    │
     uusi2:      │                 │
     ┌───────────┴────────────┐    │
     │   pop     di           │<───┘
     │   pop     es           │
     │   pop     bp           │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   ret 6                │
     └────────────────────────┘
     ┌────────────────────────┐
     │   Setvoice2 endp       │
     └────────────────────────┘



     ┌────────────────────────┐
     │   Setvoice3 proc near  │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push     bp          │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov      bp,sp       │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push     es          │
     │   push     di          │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov     bx,ss:[bp]+6 │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     *   cmp     bx,0         │
     └───────────┬────────────┘
                 ^
              /     \  uus3
            <    ja   >──────────────────┐
              \     /                    │
                 v                       │
     ┌───────────┴────────────┐          │
     *   cmp     endi3,0      │          │
     └───────────┬────────────┘          │
                 ^                       │
              /     \  vanha3            │
            <   jne   >───────────────┐  │
              \     /                 │  │
                 v                    │  │
     uus3:       │                    │  │
     ┌───────────┴────────────┐       │  │
     │   mov     Datlen3,bx   │<──────┼──┘
     │   mov     bx,ss:[bp]+8 │       │
     │   mov     Dat3ofs,bx   │       │
     │   mov     bx,ss:[bp]+10│       │
     │   mov     Dat3seg,bx   │       │
     └───────────┬────────────┘       │
     ┌───────────┴────────────┐       │
     │   jmp     uusi3        ├────┐  │
     └────────────────────────┘    │  │
     vanha3:                       │  │
                 ┌─────────────────┼──┘
     ┌───────────┴────────────┐    │
     │   mov     bx,cont      │    │
     │   add     Dat3ofs,bx   │    │
     │   mov     bx,datlen3   │    │
     │   sub     bx,cont      │    │
     │   mov     datlen3,bx   │    │
     └───────────┬────────────┘    │
     uusi3:      │                 │
     ┌───────────┴────────────┐    │
     │   pop     di           │<───┘
     │   pop     es           │
     │   pop     bp           │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   ret 6                │
     └────────────────────────┘
     ┌────────────────────────┐
     │   Setvoice3 endp       │
     └────────────────────────┘



     ┌────────────────────────┐
     │   Setvoice4 proc near  │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push     bp          │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov      bp,sp       │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   push     es          │
     │   push     di          │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   mov     bx,ss:[bp]+6 │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     *   cmp     bx,0         │
     └───────────┬────────────┘
                 ^
              /     \  uus4
            <    ja   >──────────────────┐
              \     /                    │
                 v                       │
     ┌───────────┴────────────┐          │
     *   cmp     endi4,0      │          │
     └───────────┬────────────┘          │
                 ^                       │
              /     \  vanha4            │
            <   jne   >───────────────┐  │
              \     /                 │  │
                 v                    │  │
     uus4:       │                    │  │
     ┌───────────┴────────────┐       │  │
     │   mov     Datlen4,bx   │<──────┼──┘
     │   mov     bx,ss:[bp]+8 │       │
     │   mov     Dat4ofs,bx   │       │
     │   mov     bx,ss:[bp]+10│       │
     │   mov     Dat4seg,bx   │       │
     └───────────┬────────────┘       │
     ┌───────────┴────────────┐       │
     │   jmp     uusi4        ├────┐  │
     └────────────────────────┘    │  │
     vanha4:                       │  │
                 ┌─────────────────┼──┘
     ┌───────────┴────────────┐    │
     │   mov     bx,cont      │    │
     │   add     Dat4ofs,bx   │    │
     │   mov     bx,datlen4   │    │
     │   sub     bx,cont      │    │
     │   mov     datlen4,bx   │    │
     └───────────┬────────────┘    │
     uusi4:      │                 │
     ┌───────────┴────────────┐    │
     │   pop     di           │<───┘
     │   pop     es           │
     │   pop     bp           │
     └───────────┬────────────┘
     ┌───────────┴────────────┐
     │   ret 6                │
     └────────────────────────┘
     ┌────────────────────────┐
     │   Setvoice4 endp       │
     └────────────────────────┘



     ┌──────────────────────┐
     │   Playdata proc near │
     └──────────┬───────────┘
     ┌──────────┴───────────┐
     │   call bitti         │
     │   mov       dx,addres│
     │   add       dx,0Ch   │
     │   mov       al,---h  │
     │   out       dx,al    │
     │   call bitti         │
     │   mov       al,05h   │
     │   mov       dx,0Ah   │
     │   out       dx,al    │
     │   mov       dx,0Ch   │
     │   mov       al,0     │
     │   out       dx,al    │
     │   dec       dx       │
     │   mov       al,49h   │
     │   out       dx,al    │
     │   mov       al,0     │
     │   mov       dx,02h   │
     │   out       dx,al    │
     │   mov       al,0     │
     │   out       dx,al    │
     │   inc       dx       │
     │   mov       al,0     │          ; pllo
     │   out       dx,al    │
     │   mov       ax,Plhi  │
     │   out       dx,al    │
     │   mov       dx,83h   │
     │   mov       ax,BFSEG │
     │   out       dx,al    │
     │   mov       dx,0Ah   │
     │   mov       al,01h   │
     │   out       dx,al    │
     │   call bitti         │
     │   mov       dx,addres│
     │   add       dx,0Ch   │
     │   mov       al,40h   │
     │   out       dx,al    │
     │   call bitti         │
     │   mov       dx,addres│
     │   add       dx,0Ch   │
     │   mov       ax,speed │
     │   out       dx,al    │
     │   call   bitti       │
     │   mov       dx,addres│
     │   add       dx,0Ch   │
     │   mov       al,14h   │
     │   out       dx,al    │
     │   call   bitti       │
     │   mov       dx,addres│
     │   add       dx,0Ch   │
     │   mov       ax,0     │          ; pllo
     │   out       dx,al    │
     │   call   bitti       │
     │   mov       dx,addres│
     │   add       dx,0Ch   │
     │   mov       ax,Plhi  │
     │   out       dx,al    │
     │   call   bitti       │
     │   mov       dx,addres│
     │   add       dx,0Ch   │
     │   mov       al,---h  │
     │   out       dx,al    │
     │   call   bitti       │
     └──────────┬───────────┘
     ┌──────────┴───────────┐
     │   ret                │
     └──────────────────────┘
     ┌──────────────────────┐
     │   Playdata  endp     │
     └──────────────────────┘


┌──────────────────────────────────────────────┐
│ calcdata                                     │
│  88: 997 cy / 997 cy  199 µsec / 199 µsec    │
│ 286: 598 cy / 598 cy   59 µsec /  59 µsec    │
│ 386: 439 cy / 439 cy   21 µsec /  21 µsec    │
└┬─────────────────────────────────────────────┘

┌──────────────────────────────────────────────┐
│ setvoice1,2,3,4                              │
│  88: 220 cy / 220 cy   44 µsec /  44 µsec    │
│ 286: 136 cy / 136 cy   13 µsec /  13 µsec    │
│ 386:  91 cy /  91 cy 4550 nsec /4550 nsec    │
└──────────────────────────────────────────────┘


MOV:                    255   30% ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
Add/Sub:                54    6%  ▄▄▄▄▄▄
Inc/Dec:                19    2%  ▄▄
Logical:                6     0%  .
CALL:                   27    3%  ▄▄▄
RET:                    18    2%  ▄▄
INT:                    11    1%  ▄
Jmp cond:               54    6%  ▄▄▄▄▄▄
JMP:                    43    5%  ▄▄▄▄▄
LOOP:                   2     0%  .
Bit Shift:              6     0%  .
Flags:                  12    1%  ▄
CMP:                    46    5%  ▄▄▄▄▄
POP:                    30    3%  ▄▄▄
PUSH:                   30    3%  ▄▄▄
Input/Output:           84    10% ▄▄▄▄▄▄▄▄▄▄
Proc/Mac/Struc Direct:  44    5%  ▄▄▄▄▄
Data Declarations:      45    5%  ▄▄▄▄▄
Other Directives:       48    5%  ▄▄▄▄▄▄
Calc/Move ratio = 0.32

             Summary Table

PROCEDURES:        19
MACROS:             0
CALLS:             27
MACRO CALLS:        0
EXTERNALS:          0
Source Lines:     981
SYMBOLS:          142


                                Rgds

                        Amtool + Jari Kaija 1991

                        :) :) :) :) :) :) :) :)

[ RETURN TO DIRECTORY ]