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
:) :) :) :) :) :) :) :)