home *** CD-ROM | disk | FTP | other *** search
- / getw/getc -- get words/characters from input file
- / fopen -- open a file for use by get(c|w)
- /
- / calling sequences --
- /
- / mov $filename,r0
- / jsr r5,fopen; ioptr
- /
- / on return ioptr buffer is set up or error bit is set if
- / file could not be opened.
- /
- / jsr r5,get(c|w)1; ioptr
- /
- / on return char/word is in r0; error bit is
- / set on error or end of file.
- /
- / ioptr is the address of a 518-byte buffer
- / whose layout is as follows:
- /
- / ioptr: .=.+2 / file descriptor
- / .=.+2 / charact+2 / pointer to next character (reset if no. chars=0)
- / .=.+512. / the buffer
-
- .globl getc,getw,fopen
-
- fopen:
- mov r1,-(sp)
- mov (r5)+,r1
- mov r0,0f
- sys 0; 9f
- .data
- 9:
- sys open; 0:..; 0
- .text
- bes 1f
- mov r0,(r1)+
- clr (r1)+
- mov (sp)+,r1
- rts r5
- 1:
- mov $-1,(r1)
- mov (sp)+,r1
- sec
- rts r5
-
- .data
- getw:
- mov (r5),9f
- mov (r5)+,8f
- jsr r5,getc; 8:..
- bec 1f
- rts r5
- 1:
- mov r0,-(sp)
- jsr r5,getc; 9:..
- swab r0
- bis (sp)+,r0
- rts r5
- .text
-
- getc:
- mov r1,-(sp)
- mov (r5)+,r1
- dec 2(r1)
- bge 1f
- mov r1,r0
- add $6,r0
- mov r0,0f
- mov r0,4(r1)
- mov (r1),r0
- sys 0; 9f
- .data
- 9:
- sys read; 0:..; 512.
- .text
- bes 2f
- tst r0
- bne 3f
- 2:
- mov (sp)+,r1
- sec
- rts r5
- 3:
- dec r0
- mov r0,2(r1)
- 1:
- clr r0
- bisb *4(r1),r0
- inc 4(r1)
- mov (sp)+,r1
- rts r5
-
-