home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / LIB / prsnam.a < prev    next >
Text File  |  2009-11-06  |  2KB  |  98 lines

  1.  
  2. This is a system-state-program which replaces the F$PrsNam call of
  3. the kernel to allow all characters in your filename except / @
  4. The module can be installed as a system-extention in your init module.
  5. Enjoy it...
  6.  
  7. Kei, Stephan, Guido
  8.  
  9. ------------ Makefile --------------
  10.  
  11. RFLAGS=
  12. RC = r68
  13.  
  14. prsnam:
  15.   l68 -gO=$* $*.r -l=/h0/lib/sys.l
  16.  
  17. ------------ prsnam.a --------------
  18. *
  19. * PrsNam for filenames with all characters ! - ~
  20. * 26.12.92 Stephan Paschedag, Kei Thomsen, Guidoh Scheil
  21. *
  22.  
  23.  use <oskdefs.d>
  24.  
  25.  
  26. Edition equ 1 current Edition number
  27. Typ_Lang set (Systm<<8)+Objct
  28. Attr_Rev set ((ReEnt+SupStat)<<8)+0
  29.  
  30.  psect prsnam,Typ_Lang,Attr_Rev,Edition,0,Entry
  31.  
  32.  vsect
  33.  ds.l 1
  34.  ends
  35.  
  36. Entry: move.l a1,-(a7)
  37.  lea SvcTab(pc),a1
  38.  os9 F$SSvc
  39.  movem.l (a7)+,a1
  40.  rts
  41.  
  42. SvcTab: dc.w F$PrsNam
  43.  dc.w PrsNam-*-2
  44.  dc.w F$PrsNam+SysTrap
  45.  dc.w PrsNam-*-2
  46.  dc.w -1
  47.  
  48. *
  49. * Input  :   (a0) = name
  50. *
  51. * Output :    d0  = pathlist delimiter
  52. *             d1  = length of pathlist element
  53. *             a0  = pathlist pointer updated past the optional "/" char
  54. *             a1  = address of the last character of the name + 1
  55. *
  56. PrsNam: moveq.l #0,d0             clear char counter
  57.        move.b (a0)+,d0            get first char
  58.        cmpi.b #'/',d0             absolute path ?
  59.        bne.b Prs1                 ..no
  60.        move.b (a0)+,d0            get next char
  61. Prs1   lea.l -1(a0),a1            adjust pointer
  62.        moveq.l #0,d1
  63.        bsr.b PrsTst
  64.        bcs.b Prs2
  65. Prs3   addq.w #1,d1
  66.        move.b (a0)+,d0
  67.        bsr.b PrsTst
  68.        bcc.b Prs3
  69.        move.b -(a0),d0
  70.        bclr #31,d1
  71.        bne.b Prs4
  72.        move.b (a1),d0
  73. Prs2   movea.l a1,a0
  74.        move.w #E$BNam,d1
  75.        ori.b #Carry,ccr
  76. Prs4   exg a1,a0
  77.        movem.l d0-d1,R$d0(a5)
  78.        movem.l a0-a1,R$a0(a5)
  79.        rts
  80.  
  81. PrsTst cmpi.b #'~',d0
  82.        bhi.b PrsErr
  83.        cmpi.b #' ',d0
  84.        bls.b PrsErr
  85.        cmpi.b #'@',d0
  86.        beq.s PrsErr
  87.        cmpi.b #'.',d0
  88.        beq.b PrsT3
  89.        cmpi.b #'/',d0
  90.        beq.b PrsErr
  91. PrsOK  bset #31,d1
  92. PrsT3  andi.b #255-Carry,ccr
  93.        rts
  94. PrsErr ori.b #Carry,ccr
  95.        rts
  96.  
  97.  ends
  98.