; +----------------------------------------------------+ ; ; | Sample DVM Shower for use with the Magic Assembler | ; ; +----------------------------------------------------+ ; mov ah,09 mov dx,offset(headtxt) int 21 cmp byte [0081],0d jne @1 mov dx,offset(syntax) jmp error @1 mov si,0082 mov showit,00 @4 lodsb cmp al,'/' jne @5 mov byte [si-01],00 lodsb cmp al,'i' jne @6 mov showit,ff jmps @5 @6 cmp al,'I' jne @5 mov showit,ff @5 cmp al,0d jne @4 mov byte [si-01],00 mov ax,3d00 mov dx,0082 int 21 jnc @7 mov dx,offset(openerr) jmp error @7 mov handle,ax mov bx,ax mov ah,3f mov cx,0003 mov dx,offset(header) int 21 mov si,offset(header) mov di,offset(musthd) mov cx,0003 @8 cmpsb jne @9 loop @8 jmps @10 @9 mov dx,offset(notdvm) jmp error @10 mov ah,3f mov cx,0001 mov dx,offset(fullqrt) int 21 cmp fullqrt,'V' je @11 cmp fullqrt,'Q' je @12 mov infobyt,a0 jmps @13 @12 mov infobyt,20 jmps @13 @11 mov ah,3f mov dx,offset(version) int 21 cmp version,31 jna @14 mov dx,offset(verr) jmp error @14 mov ah,3f mov dx,offset(infobyt) int 21 @13 mov ah,3f mov cx,0002 mov dx,offset(dtime) int 21 test infobyt,08 jz @15 mov ah,3f mov dx,offset(l) int 21 mov cx,l @16 push cx mov ah,3f mov cx,0001 mov dx,offset(ch) int 21 push bx mov ah,0e mov al,ch xor bh,bh cmp showit,ff je @17 int 10 @17 pop bx pop cx loop @16 xor ah,ah cmp showit,ff jne @15 int 16 @15 mov ax,0013 int 10 push bx mov ax,1012 mov bx,0000 mov cx,0100 mov dx,offset(palette) int 10 pop bx mov ax,a000 mov es,ax @28 test infobyt,20 jz @32 mov ah,3f mov dx,offset(palette) test infobyt,10 jnz @33 mov cx,0030 jmps @34 @33 mov cx,0300 @34 int 21 cmp ax,cx jne @27 push bx push es mov ax,ds mov es,ax mov ax,1012 xor bx,bx test infobyt,10 jnz @35 mov cx,0010 jmps @36 @35 mov cx,0100 @36 int 10 pop es pop bx @32 xor di,di test infobyt,80 jz @18 mov cx,00c8 jmps @19 @18 mov cx,0064 @19 push cx test infobyt,40 jz @20 call showcpr jmps @21 @20 call showucp @21 cmp ah,00 ja @27 test infobyt,80 jnz @22 add di,00a0 @22 pop cx loop @19 jmps @28 @27 mov ah,3e mov bx,handle int 21 xor ah,ah int 16 mov ax,0003 int 10 mov ax,4c00 int 21 showcpr test infobyt,80 jz @23 mov cx,00a0 jmps @24 @23 mov cx,0050 @24 mov ah,3f mov dx,offset(line) int 21 cmp ax,cx je @26 mov ah,ff ret @26 mov si,offset(line) @25 push cx lodsb push ax and al,f0 mov cl,04 shr al,cl es: mov [di],al pop ax and al,0f es: mov [di+01],al add di,0002 pop cx loop @25 xor ah,ah ret showucp test infobyt,80 jz @31 mov cx,0140 jmps @29 @31 mov cx,00a0 @29 mov ah,3f mov dx,offset(line) int 21 mov si,offset(line) cmp cx,ax je @30 mov ah,ff ret @30 movsb loop @30 xor ah,ah ret error mov ah,09 int 21 mov ax,4c00 int 21 headtxt db 'Show DVM - Written by Bert for Magic Software - Development Kit Version' 0a 0d '$' musthd db 'DVM' notdvm db 'Not a DVM' 0a 0d '$' openerr db 'Cannot open file' 0a 0d '$' palette dbe DVMPAL.BIN syntax db 'Syntax: SDA [Filename.DVM][/I]' 0a 0d '/I shows included text (if exist)' 0a 0d '$' verr db 'Cannot display this version' 0a 0d '$' - ch db ? dtime dw ? fullqrt db ? handle dw ? header ds 3 infobyt db ? l dw ? line ds 140 showit db ? version db ?