TODO nearly 100% compatible - only some header bytes are different - needs a bit more

fiddling - data+text bytes are OK
This commit is contained in:
Oliver Lehmann 2008-05-02 20:47:15 +00:00
parent 3bab4c852c
commit 449c91fc5e
1 changed files with 187 additions and 161 deletions

View File

@ -1,66 +1,12 @@
/**************************************************************************
***************************************************************************
W E G A - Quelle
KERN 3.2 Modul : clist.s
Bearbeiter : O. Lehmann
Datum : 02.05.08
Version : 1.0
***************************************************************************
**************************************************************************/
.seg .seg
.psec data
.data .data
.byte "@[$]clist.s Rev : 4.1 09/16/83 03:43:09"
.byte %25
.byte %30
.byte %30
fp := r15;
sp := rr14;
_clistwstr::
.byte %40
.byte %5b
.byte %24
.byte %5d
.byte %63
.byte %6c
.byte %69
.byte %73
.byte %74
.byte %2e
.byte %73
.byte %9
.byte %52
.byte %65
.byte %76
.byte %20
.byte %3a
.byte %20
.byte %34
.byte %2e
.byte %31
.byte %9
.byte %30
.byte %39
.byte %2f
.byte %31
.byte %36
.byte %2f
.byte %38
.byte %33
.byte %20
.byte %30
.byte %33
.byte %3a
.byte %34
.byte %33
.byte %3a
.byte %30
.byte %39
.byte %0
.psec
.code .code
_putcf:: _putcf::
@ -103,7 +49,7 @@ _getcb::
jr z,~egetcb jr z,~egetcb
ld r0,rr2(#4) ld r0,rr2(#4)
subb rh7,rh0 // FIXME subb rl0,rh0
subb rh0,rh0 subb rh0,rh0
ld r4,@rr6 ld r4,@rr6
sub r4,r0 sub r4,r0
@ -137,7 +83,7 @@ _putcb::
subl rr0,rr0 subl rr0,rr0
ldl @rr6,rr0 ldl @rr6,rr0
ld r1,rr6(#4) ld r1,rr6(#4)
subb rh7,rh1 // FIXME subb rl1,rh1
subb rh1,rh1 subb rh1,rh1
ld r0,@rr4 ld r0,@rr4
add r0,r1 add r0,r1
@ -152,10 +98,90 @@ _getc::
ldctl r1,fcw ldctl r1,fcw
push @r14,r1 push @r14,r1
di vi,nvi di vi,nvi
dec @rr6,#1
jpr lt,~else_getc
ldl rr2,rr6(#2)
lda rr4,rr2(#4)
ldb rl1,@rr4
incb @rr4,#1
subb rh1,rh1
ldb rl0,rr2(#5)
cpb rl0,@rr4
jr eq,~endif_getc
inc r5,#2
add r5,r1
ldb rl2,@rr4
subb rh2,rh2
~egetc:
pop r1,@rr14 pop r1,@rr14
ldctl fcw,r1 ldctl fcw,r1
ret ret
~else_getc:
inc @rr6,#1
ld r2,#-1
jpr ~egetc
~endif_getc:
inc r5,#2
add r5,r1
ldb rl0,@rr4
ldl rr4,@rr2
ldl rr6(#2),rr4
testl rr4
jpr ne,~else2_getc
ldl rr6(#6),rr4
~else2_getc:
ldl rr4,_cfreelist //get link to first free cblock
ldl @rr2,rr4 //put it into link of new free cblock
ldl _cfreelist,rr2 //put address of new free cblock into cfreelist
ldb rl2,rl0
subb rh2,rh2
jpr ~egetc
}
_putc::
{
ldctl r6,fcw
di vi,nvi
ldl rr2,rr4(#6)
testl rr2
jpr eq,~else_putc
~L0:
ldb rl0,rr2(#5)
subb rh0,rh0
cp r0,_cfreelist+4
jpr ge,~endif2_putc
inc @rr4,#1
lda rr4,rr2(#6)
add r5,r0
ldb @rr4,rl7
incb rl0,#1
ldb rr2(#5),rl0
clr r2
~eputc:
ldctl fcw,r6
ret
~else_putc:
ldl rr2,_cfreelist
testl rr2
jpr eq,~endif_putc
ldl rr4(#2),rr2
~L1:
ldl rr0,@rr2
ldl _cfreelist,rr0
clr @rr2
subl rr0,rr0
ldl rr2(#2),rr0
ldl rr4(#6),rr2
jpr ~L0
~endif_putc:
ld r2,#-1
jpr ~eputc
~endif2_putc:
ldl rr0,_cfreelist
testl rr0
jpr eq,~endif_putc
ldl @rr2,rr0
ldl rr2,rr0
jpr ~L1
} }
.psec data
.data