Category : Display Utilities
Archive   : BURN0231.ZIP
Filename : BURNOUT.ASM

Output of file : BURNOUT.ASM contained in archive : BURN0231.ZIP
Comment *

BURNOUT by Chris Dunford - demo program to
access/change/display BRNDEV parameters.

To use, just type:

BURNOUT parameters

where the parameters are anything that's legal as a BRNDEV
option (as described in the documentation). For example:

BURNOUT 5000 H- F7

MASM burnout;
LINK burnout; [ignore NO STACK message]
EXE2BIN burnout

Revised 23-Dec-1987 because I lost the source for the original.


; ---------------------------------------------------------

; DOS functions we'll use
PRINT equ 9 ; Print a string$
FOPEN equ 3DH ; Open a file/device
FREAD equ 3FH ; Read from a file/device
FWRITE equ 40H ; Write to a file/device
EXIT equ 4CH ; Exit to DOS

; A couple of ASCII characters
LF equ 10
CR equ 13

; Macro to access DOS functions
DOS macro func
mov ah,func
int 21H

code segment
assume cs:code, ds:code, es:code

; Where the commandline parameters will go (in the PSP)

org 80H
parm_len label byte ; Parameter length attribute

org 81H
parms label byte ; Parameter text

; Program entry point
org 100H
jmp start ; Jump to code

; ------------------------------------------------------------------
; DATA section

; BURNOUT system device name (ASCIIZ format)
devname db 'BRNDEV',0

; BRNDEV's reset and execute characters
reset db '@'
execute db '#'

; Message displayed if BRNDEV isn't installed
not_installed$ db 'Burnout device is not installed',CR,LF,'$'

; Status report message, followed IMMEDIATELY by the buffer
; into which the BRNDEV status report is read. These are
; displayed in one operation, so don't separate the two.
status$ db 'Current status: '
buffer db 15 dup (0)

; -------------------------------------------------------------
; CODE section


; See if BRNDEV is installed
mov dx,offset devname ; File name is 'BRNDEV'
mov al,2 ; Open for read/write
DOS fopen
jnc rewind ; If no carry, BRNDEV is installed

; BURNOUT isn't installed
mov dx,offset not_installed$ ; Display error message
DOS print
mov al,1 ; Exit with errorlevel 1
jmp bye

; It's installed. Send a '@' to the device. This prepares
; the device for accepting new operating parameters and it
; places the current BRNDEV status into BRNDEV's I/O buffer.
; If there are no command line options, we'll go directly
; to the READ portion, and the status report will be current.
mov bx,ax
mov dx,offset reset
mov cx,1
DOS fwrite

; If there are command line parameters, send them to the device.

; No options if parm length is zero
mov al,parm_len
or al,al
jz get_status

; Write options to the device
mov cx,ax ; CX = parameter length
mov dx,offset parms
DOS fwrite

; Send a '#' to force parsing of the options we just sent.
; This also updates the status report in the BRNDEV i/o buffer.
mov dx,offset execute
mov cx,1
DOS fwrite

; Read and display current BRNDEV status

; Read from device into our buffer
mov dx,offset buffer
mov cx,255
DOS fread

; Add an LF and a '$' to what BRNDEV sent
mov di,dx ; DI -> start to status report
add di,ax ; DI -> end of report (past CR)
mov word ptr [di],'$' shl 8 + LF ; Put LF + '$' there for DOS fn 9

; Display the results
mov dx,offset status$
DOS print

; Errorlevel 0
xor al,al

; Common exit. AL should have errorlevel at this point.
DOS exit

code ends
end burnout

  3 Responses to “Category : Display Utilities
Archive   : BURN0231.ZIP
Filename : BURNOUT.ASM

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: