* system calls - file 3

 name Syscals3

 text

 ext _errno,ret3,ret3a,ret5,ret5a

 lib sysdef

* CLOSE(fildes)

  global _close
_close  sys close
  bec 1f
  std _errno
  ldd #-1
  bra 2f
1 ldd #0
2 rts

* CREAT(path, perms)

  global _creat
_creat  ldd 4,s
  pshs d
  ldd 4,s
  pshs d
  ldb #create
  pshs b
  leax 0,s
  sys indx
  bec 1f
  std _errno
  ldd #-1
1 leas 5,s
  rts


* LSEEK(fildes, offset, type)

 bss
sretb rmb 4
 text

  global _lseek
_lseek  ldd 8,s
  pshs d
  ldd 8,s
  pshs d
  ldd 8,s
  pshs d
  ldb #seek
  pshs b
  ldd 9,s
  leax 0,s
  sys indx
  bec 2f
  std _errno
  ldd #-1
  std sretb
  std sretb+2
  bra 3f
2 std sretb+2
  stx sretb
3 leas 7,s
  ldx #sretb
  rts


* OPEN(pathnam, mode)

  global _open
_open ldd 4,s
  pshs d
  ldd 4,s
  pshs d
  ldb #open
  pshs b
  leax 0,s
  sys indx
  bec 1f
  std _errno
  ldd #-1
1 leas 5,s
  rts


* READ(fildes, bufad, nbytes)

  global _read
_read  ldd 6,s
  pshs d
  ldd 6,s
  pshs d
  ldb #read
read2 pshs b
  ldd 7,s
  leax 0,s
  sys indx
  bec 1f
  std _errno
  ldd #-1
1 leas 5,s
  rts


* UNLINK(pathnam)

  global _unlink
_unlink ldd 2,s
  pshs d
  ldb #unlink
  jmp ret3


* WRITE(fildes, bufad, nbytes)

  global _write
_write  ldd 6,s
  pshs d
  ldd 6,s
  pshs d
  ldb #write
  jmp read2

