Add original unix v6
This commit is contained in:
@@ -0,0 +1,268 @@
|
||||
/
|
||||
/
|
||||
|
||||
/ io2 -- format cracker
|
||||
|
||||
.globl iowf
|
||||
.globl iowp
|
||||
.globl iorf
|
||||
|
||||
iowp:
|
||||
mov (sp)+,formp
|
||||
mov $6,r1
|
||||
br 1f
|
||||
|
||||
iowf:
|
||||
mov (sp)+,formp
|
||||
tst (sp)+
|
||||
mov (sp)+,r1
|
||||
1:
|
||||
jsr r5,setio; 2 / write
|
||||
clr rdflg
|
||||
br 1f
|
||||
|
||||
iorf:
|
||||
mov (sp)+,formp
|
||||
tst (sp)+
|
||||
mov (sp)+,r1
|
||||
jsr r5,setio; 1 / read
|
||||
mov pc,rdflg
|
||||
|
||||
1:
|
||||
clr binflg
|
||||
clr slcnt
|
||||
clr itmfnd
|
||||
clr scale
|
||||
clr itmflg
|
||||
mov $pbuf,ppar
|
||||
mov $-1,llpcnt
|
||||
jsr r5,fmtchr
|
||||
mov formp,llp
|
||||
cmp r0,$'(
|
||||
beq crack
|
||||
jsr r5,rerr; 106.
|
||||
sys exit
|
||||
crack:
|
||||
clr ngflg
|
||||
mov $1,rep
|
||||
item:
|
||||
jsr r5,fmtchr
|
||||
cmp $' ,r0
|
||||
beq item
|
||||
cmp $'\t,r0
|
||||
beq item
|
||||
jsr r5,switch; mswitch
|
||||
jsr r5,rerr; 105.
|
||||
sys exit
|
||||
|
||||
mswitch:
|
||||
'a; afmt
|
||||
'f; ffmt
|
||||
'e; efmt
|
||||
'g; gfmt
|
||||
'd; dfmt
|
||||
'i; ifmt
|
||||
'l; lfmt
|
||||
'h; hfmt
|
||||
'x; xfmt
|
||||
'p; scal
|
||||
'-; minus
|
||||
'0; numb
|
||||
'1; numb
|
||||
'2; numb
|
||||
'3; numb
|
||||
'4; numb
|
||||
'5; numb
|
||||
'6; numb
|
||||
'7; numb
|
||||
'8; numb
|
||||
'9; numb
|
||||
',; crack
|
||||
'/; slash
|
||||
'(; lpar
|
||||
'); rpar
|
||||
'"; quote
|
||||
' ; item
|
||||
0; 0
|
||||
|
||||
minus:
|
||||
jsr r5,gnum
|
||||
neg r0
|
||||
br 1f
|
||||
numb:
|
||||
dec formp
|
||||
jsr r5,gnum
|
||||
1:
|
||||
mov r0,rep
|
||||
br item
|
||||
|
||||
scal:
|
||||
mov rep,scale
|
||||
br crack
|
||||
|
||||
elist:
|
||||
tst _nocr
|
||||
beq 1f
|
||||
tst rdflg
|
||||
bne 1f
|
||||
jsr r5,eorec1
|
||||
br 2f
|
||||
1:
|
||||
jsr r5,eorec
|
||||
2:
|
||||
jmp *(r4)+
|
||||
|
||||
slash:
|
||||
jsr r5,eorec
|
||||
br crack
|
||||
|
||||
rpar:
|
||||
mov ppar,r0
|
||||
cmp r0,$pbuf / see if outer parens
|
||||
blos 2f
|
||||
dec -2(r0)
|
||||
ble 1f / no repeats left
|
||||
mov -4(r0),formp / reset scan
|
||||
br crack
|
||||
1:
|
||||
sub $4,ppar
|
||||
br crack / pop parens
|
||||
2:
|
||||
jsr r5,getitm
|
||||
br elist
|
||||
tst itmfnd
|
||||
bne 1f
|
||||
jsr r5,rerr; 107.
|
||||
sys exit
|
||||
1:
|
||||
jsr r5,eorec
|
||||
inc itmflg
|
||||
mov llpcnt,r1
|
||||
bpl 1f
|
||||
mov llp,formp
|
||||
jmp crack
|
||||
1:
|
||||
mov llp,r2
|
||||
mov r2,formp
|
||||
mov ppar,r0
|
||||
mov r2,(r0)+
|
||||
mov r1,(r0)+
|
||||
mov r0,ppar
|
||||
jbr crack1
|
||||
|
||||
lpar:
|
||||
mov ppar,r0
|
||||
cmp r0,$pbuf+10
|
||||
blo 1f
|
||||
jsr r5,rerr; 108.
|
||||
sys exit
|
||||
1:
|
||||
mov formp,(r0)+
|
||||
mov rep,(r0)+
|
||||
mov r0,ppar
|
||||
cmp r0,$pbuf+4
|
||||
bhi 1f
|
||||
mov formp,llp
|
||||
mov rep,llpcnt
|
||||
1:
|
||||
jmp crack
|
||||
quote:
|
||||
inc ngflg
|
||||
mov $44,-(sp)
|
||||
br 3f
|
||||
|
||||
hfmt:
|
||||
inc ngflg
|
||||
mov $40,-(sp)
|
||||
br 3f
|
||||
|
||||
xfmt:
|
||||
inc ngflg
|
||||
mov $34,-(sp)
|
||||
br 3f
|
||||
|
||||
afmt:
|
||||
mov $30,-(sp)
|
||||
br 1f
|
||||
|
||||
ifmt:
|
||||
clr -(sp)
|
||||
br 1f
|
||||
|
||||
lfmt:
|
||||
mov $4,-(sp)
|
||||
1:
|
||||
jsr r5,gnum
|
||||
mov r0,width
|
||||
br 2f
|
||||
|
||||
ffmt:
|
||||
mov $10,-(sp)
|
||||
br 1f
|
||||
|
||||
dfmt:
|
||||
mov $14,-(sp)
|
||||
br 1f
|
||||
|
||||
gfmt:
|
||||
mov $20,-(sp)
|
||||
br 1f
|
||||
|
||||
efmt:
|
||||
mov $24,-(sp)
|
||||
|
||||
1:
|
||||
jsr r5,gnum
|
||||
mov r0,width
|
||||
4:
|
||||
jsr r5,fmtchr
|
||||
cmp r0,$' /
|
||||
beq 4b
|
||||
cmp r0,$'.
|
||||
bne err1
|
||||
jsr r5,gnum
|
||||
mov r0,ndig
|
||||
2:
|
||||
inc itmfnd
|
||||
3:
|
||||
add $cvsw,(sp)
|
||||
tst rdflg
|
||||
beq 1f
|
||||
add $2,(sp)
|
||||
1:
|
||||
mov *(sp)+,-(sp)
|
||||
1:
|
||||
tst ngflg
|
||||
bne 2f
|
||||
jsr r5,getitm
|
||||
br 1f
|
||||
2:
|
||||
clr gflg
|
||||
jsr r5,*(sp)
|
||||
dec rep
|
||||
bgt 1b
|
||||
tst (sp)+
|
||||
br crack1
|
||||
1:
|
||||
tst (sp)+
|
||||
jmp elist
|
||||
|
||||
cvsw:
|
||||
iocv; iicv / 0
|
||||
locv; licv / 4
|
||||
focv; ficv / 10
|
||||
docv; dicv / 14
|
||||
gocv; gicv / 20
|
||||
eocv; eicv / 24
|
||||
aocv; aicv / 30
|
||||
xocv; xicv / 34
|
||||
hocv; hicv / 40
|
||||
qocv; qicv / 44
|
||||
|
||||
crack1:
|
||||
jmp crack
|
||||
|
||||
err1:
|
||||
jsr r5,rerr; 109.
|
||||
sys exit
|
||||
|
||||
Reference in New Issue
Block a user