home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / UNIFLEX / UNIFLEX / UniFLEX_Std.Utils1.tar.Z / UniFLEX_Std.Utils1.tar / utils1 / makdev < prev    next >
Text File  |  1981-09-01  |  2KB  |  132 lines

  1.  opt pag,nol
  2.  ttl Make a new device
  3.  pag
  4.  lib sysdef
  5.  opt lis
  6.  pag
  7.  info UniFLEX makdev
  8.  info Version 1, Released August 25, 1980
  9.  info Copyright, (C) 1980, by
  10.  info Technical Systems Consultants, Inc.
  11.  info All rights reserved.
  12.  
  13. * constants
  14.  
  15. FSCHR equ $4
  16. FSBLK equ $2
  17.  
  18. * program starts here
  19.  
  20.  org 0
  21.  
  22. makdev ldd 0,s get arg count
  23.  cmpd #5 is it 4?
  24.  lbne synerr
  25.  ldd 4,s get name pointer
  26.  std icrt2
  27.  lda [6,s] get type
  28.  anda #$5F make upper case
  29.  cmpa #'B is it block?
  30.  beq makde3
  31.  cmpa #'C is it character
  32.  lbne synerr
  33.  lda #FSCHR set character type
  34.  bra makde4
  35. makde3 lda #FSBLK set block type
  36. makde4 ldb #$0B set perms (rw-r--)
  37.  std icrt3 set in ind call
  38.  ldx 8,s point to major number
  39.  bsr decvt convert to binary
  40.  lbne synerr
  41.  stb icrt4 save as arg
  42.  ldx 10,s get minor number
  43.  bsr decvt convert
  44.  lbne synerr
  45.  stb icrt5 save as arg
  46.  sys ind,icrt do ind call
  47.  lbes prter
  48.  ldd #0 set status
  49.  sys term exit
  50.  
  51.  pag
  52.  
  53. *
  54. * decvt
  55. *
  56. * Decimal convert routine.  Convert ascii string
  57. * pointed at by x and null terminated.
  58. * Return number in D and ne if error.
  59. *
  60.  
  61. decvt ldd #0 set up zero
  62.  pshs d
  63. decvt2 lda 0,x+ get character
  64.  beq decvt4 end of list?
  65.  cmpa #'0 check for valid number
  66.  blo decvt3 error?
  67.  cmpa #'9
  68.  bhi decvt3
  69.  anda #$F mask character
  70.  pshs a save digit
  71.  ldd 1,s get number
  72.  aslb multiply by 8
  73.  rola
  74.  aslb
  75.  rola
  76.  aslb
  77.  rola
  78.  addd 1,s add in original twice
  79.  addd 1,s
  80.  addb 0,s+ add in new digit
  81.  adca #0
  82.  std 0,s save result
  83.  bra decvt2 repeat
  84. decvt3 clz set error
  85. decvt4 puls d,pc return
  86.  
  87.  pag
  88.  
  89. *
  90. * prter
  91. *
  92. * Print error message.
  93. *
  94.  
  95. prter pshs d save error
  96.  ldd #2 set file desc
  97.  sys write,erms,ERSZ output error
  98.  puls d get status
  99.  sys term exit
  100.  
  101. *
  102. * synerr
  103. *
  104. * Report syntax error.
  105. *
  106.  
  107. synerr ldd #2 set file desc
  108.  sys write,synmsg,SYSZ output message
  109.  ldd #$ff set status
  110.  sys term term task
  111.  
  112.  pag
  113.  
  114. * strings and data
  115.  
  116. synmsg fcc 'Command syntax error.',$d
  117. SYSZ equ *-synmsg
  118. erms fcc "Can't make device.",$d
  119. ERSZ equ *-erms
  120.  
  121.  
  122. * indirect call
  123.  
  124. icrt fcb maksd
  125. icrt2 fdb 0
  126. icrt3 fdb 0
  127. icrt4 fcb 0
  128. icrt5 fcb 0
  129.  
  130.  
  131.  end makdev
  132.