home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
CPM68K
/
SD68K.LBR
/
OPTSET.S
< prev
next >
Wrap
Text File
|
2000-06-30
|
1KB
|
58 lines
**** OPTSET -- option set
**
** Function:
** Set options in option table according to options in command
** line. Terminate at first delimiter (i.e. not A-Z)
** Inputs: D0.l == pointer to first option
** D1.l == pointer to table
** Outputs: D0.l == pointer to delimiter
** Registers affected: D0.l, (table)
** Routines called: -none-
** Special error conditions: D1.l=0 indicates error, then D0.l points
** to invalid option.
**
** Option table format: The options table consists of a series of
** byte pairs as "option letter, occurance value".
** i.e.
** .dc.b 'A',0
** .dc.b 'B',0
** etc,
** .dc.b 0,0 * terminator
**
** If an option is encountered, the least-significant bit of the
** occurance value is *TOGGLED*.
**
*
.globl optset
.text
optset:
movem.l d1/a0-a1,-(a7)
move.l d0,a0
*
optst1: move.b (a0),d2 * get option
cmpi.b #'A',d2
blt optstx * delimiter
cmpi.b #'Z',d2
bgt optstx * delimiter
move.l d1,a1 * table pointer
optst2: tst.b (a1)
bne optst3 * if not end of table
clr.l d1 * bad option
bra optstx
*
optst3: cmp.b (a1),d2
beq optst4 * bingo!
addq.l #2,a1
bra optst2 * keep looking
optst4: addq.l #1,a1
eori.b #1,(a1) * toggle value
*
addq.l #1,a0 * go to next character in line
bra optst1
*
optstx: move.l a0,d0 * pointer to err or delimiter
movem.l (a7)+,d2/a0-a1
rts
*
.end