diff level1/modules/rbf.asm @ 0:6641a883d6b0

Initial revision
author boisy
date Thu, 04 Apr 2002 16:34:12 +0000
parents
children 668388823050
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/rbf.asm	Thu Apr 04 16:34:12 2002 +0000
@@ -0,0 +1,1645 @@
+********************************************************************
+* RBF - Disk file manager
+*
+* $Id$
+*
+* Ed.    Comments                                       Who YY/MM/DD
+* ------------------------------------------------------------------
+* 24     Tandy/Microware original version
+
+         nam   RBF
+         ttl   Disk file manager
+
+* Disassembled 98/08/23 18:26:52 by Disasm v1.6 (C) 1988 by RML
+
+         ifp1
+         use   defsfile
+	 use   rbfdefs
+         endc
+
+tylg     set   FlMgr+Objct
+atrv     set   ReEnt+rev
+rev      set   $01
+edition  set   $18
+
+         mod   eom,name,tylg,atrv,start,size
+
+u0000    rmb   0
+size     equ   .
+
+name     fcs   /RBF/
+         fcb   edition
+L0011    fcb   $26
+
+* All routines are entered with
+* (Y) = Path descriptor pointer
+* (U) = Caller's register stack pointer
+start    lbra  Create
+         lbra  Open
+         lbra  MakDir
+         lbra  ChgDir
+         lbra  Delete
+         lbra  Seek
+         lbra  Read
+         lbra  Write
+         lbra  ReadLn
+         lbra  WriteLn
+         lbra  GetStat
+         lbra  SetStat
+         lbra  Close
+
+Create   pshs  y
+         leas  -$05,s			make room on the stack
+         lda   R$B,u			get perms
+         anda  #^DIR.			mask off dir bit
+         sta   R$B,u			save perms back
+         lbsr  L061D
+         bcs   L004A
+         ldb   #$DA
+L004A    cmpb  #$D8
+         bne   L0072
+         cmpa  #PDELIM
+         beq   L0072
+         pshs  x
+         ldx   PD.RGS,y
+         stu   R$X,x
+         ldb   <PD.SBP,y
+         ldx   <PD.SBP+1,y
+         lda   <PD.SSZ,y
+         ldu   <PD.SSZ+1,y
+         pshs  u,x,b,a
+         clra
+         ldb   #$01
+         lbsr  L0966
+         bcc   L0077
+         leas  $06,s
+L0070    leas  $02,s
+L0072    leas  $05,s
+         lbra  L027F
+L0077    std   $0B,s
+         ldb   <PD.SBP,y
+         ldx   <PD.SBP+1,y
+         stb   $08,s
+         stx   $09,s
+         puls  u,x,b,a
+         stb   <PD.SBP,y
+         stx   <PD.SBP+1,y
+         sta   <PD.SSZ,y
+         stu   <PD.SSZ+1,y
+         ldd   <PD.DCP,y
+         std   $0B,y
+         ldd   <PD.DCP+2,y
+         std   $0D,y
+         lbsr  L079C
+         bcs   L00A9
+L00A0    tst   ,x
+         beq   L00BB
+         lbsr  L0787
+         bcc   L00A0
+L00A9    cmpb  #$D3
+         bne   L0070
+         ldd   #$0020
+         lbsr  L04C0
+         bcs   L0070
+         lbsr  L0243
+         lbsr  L079C
+L00BB    leau  ,x
+         lbsr  L015C
+         puls  x
+         os9   F$PrsNam
+         bcs   L0072
+         cmpb  #$1D
+         bls   L00CD
+         ldb   #$1D
+L00CD    clra
+         tfr   d,y
+         lbsr  L04F2
+         tfr   y,d
+         ldy   $05,s
+         decb
+         lda   b,u
+         ora   #$80
+         sta   b,u
+         ldb   ,s
+         ldx   $01,s
+         stb   <$1D,u
+         stx   <$1E,u
+         lbsr  L0D40
+         bcs   L0144
+         ldu   $08,y
+         bsr   L0163
+         lda   #$04
+         sta   $0A,y
+         ldx   $06,y
+         lda   $02,x
+         sta   ,u
+         ldx   <$004B
+         ldd   $09,x
+         std   $01,u
+         lbsr  L0290
+         ldd   $03,u
+         std   $0D,u
+         ldb   $05,u
+         stb   $0F,u
+         ldb   #$01
+         stb   $08,u
+         ldd   $03,s
+         subd  #$0001
+         beq   L012A
+         leax  <$10,u
+         std   $03,x
+         ldd   $01,s
+         addd  #$0001
+         std   $01,x
+         ldb   ,s
+         adcb  #$00
+         stb   ,x
+L012A    ldb   ,s
+         ldx   $01,s
+         lbsr  L0D42
+         bcs   L0144
+         lbsr  L0837
+         stb   <$34,y
+         stx   <$35,y
+         lbsr  L082B
+         leas  $05,s
+         lbra  L01C4
+L0144    puls  u,x,a
+         sta   <$16,y
+         stx   <$17,y
+         clr   <$19,y
+         stu   <$1A,y
+         pshs  b
+         lbsr  L0B6E
+         puls  b
+L0159    lbra  L027F
+L015C    pshs  u,x,b,a
+         leau  <$20,u
+         bra   L0169
+L0163    pshs  u,x,b,a
+         leau  >$0100,u
+L0169    clra
+         clrb
+         tfr   d,x
+L016D    pshu  x,b,a
+         cmpu  $04,s
+         bhi   L016D
+         puls  pc,u,x,b,a
+
+Open     pshs  y
+         lbsr  L061D
+         bcs   L0159
+         ldu   PD.RGS,y
+         stx   R$X,u
+         ldd   <PD.FD+1,y
+         bne   L01B3
+         lda   <PD.FD,y
+         bne   L01B3
+         ldb   PD.MOD,y
+         andb  #DIR.
+         lbne  L027D
+         std   <PD.SBP,y
+         sta   <PD.SBP+2,y
+         std   <PD.SBL,y
+         sta   <PD.SBL+2,y
+         ldx   <PD.DTB,y
+         lda   V$STAT,x
+         std   <PD.SIZ+2,y
+         sta   <PD.SSZ+2,y
+         ldd   V$DRIV,x
+         std   PD.SIZ,y
+         std   <PD.SSZ,y
+         puls  pc,y
+
+L01B3    lda   PD.MOD,y
+         lbsr  L07F1
+         bcs   L0159
+         bita  #$02
+         beq   L01C4
+         lbsr  L0290
+         lbsr  L0D38
+L01C4    puls  y
+L01C6    clra
+         clrb
+         std   $0B,y
+         std   $0D,y
+         std   <$13,y
+         sta   <$15,y
+         sta   <$19,y
+         lda   ,u
+         sta   <$33,y
+         ldd   <$10,u
+         std   <$16,y
+         lda   <$12,u
+         sta   <$18,y
+         ldd   <$13,u
+         std   <$1A,y
+         ldd   $09,u
+         ldx   $0B,u
+         std   $0F,y
+         stx   <$11,y
+         clr   $0A,y
+         rts
+
+MakDir   lbsr  Create
+         bcs   L0241
+         ldd   #$0040
+         std   <$11,y
+         bsr   L0253
+         bcs   L0241
+         lbsr  L0854
+         bcs   L0241
+         lbsr  L0CD4
+         ldu   $08,y
+         lda   ,u
+         ora   #$80
+         sta   ,u
+         bsr   L0246
+         bcs   L0241
+         lbsr  L0163
+         ldd   #$2EAE
+         std   ,u
+         stb   <$20,u
+         lda   <$37,y
+         sta   <$1D,u
+         ldd   <$38,y
+         std   <$1E,u
+         lda   <$34,y
+         sta   <$3D,u
+         ldd   <$35,y
+         std   <$3E,u
+         lbsr  L0D40
+L0241    bra   L0282
+L0243    lbsr  L0CD4
+L0246    ldx   $08,y
+         ldd   $0F,y
+         std   $09,x
+         ldd   <$11,y
+         std   $0B,x
+         clr   $0A,y
+L0253    lbra  L0D38
+
+Close    clra
+         tst   $02,y
+         bne   L027C
+         lbsr  L0D72
+         bcs   L0282
+         ldb   $01,y
+         bitb  #$02
+         beq   L0282
+         ldd   <$34,y
+         bne   L0270
+         lda   <$36,y
+         beq   L0282
+L0270    bsr   L0243
+         lbsr  L0529
+         bcc   L0282
+         lbsr  L0AAF
+         bra   L0282
+L027C    rts   
+L027D    ldb   #$D6
+L027F    coma  
+L0280    puls  y
+L0282    pshs  b,cc
+         ldu   $08,y
+         beq   L028E
+         ldd   #$0100
+         os9   F$SRtMem
+L028E    puls  pc,b,cc
+L0290    lbsr  L0CD4
+         ldu   $08,y
+         lda   $08,u
+         pshs  a
+         leax  $03,u
+         os9   F$Time   
+         puls  a
+         sta   $08,u
+         rts
+
+ChgDir   pshs  y
+         lda   $01,y
+         ora   #$80
+         sta   $01,y
+         lbsr  Open
+         bcs   L0280
+         ldx   <$004B
+         ldu   <$35,y
+         ldb   $01,y
+         bitb  #$03
+         beq   L02C4
+         ldb   <$34,y
+         stb   <$1D,x
+         stu   <$1E,x
+L02C4    ldb   $01,y
+         bitb  #$04
+         beq   L02D3
+         ldb   <$34,y
+         stb   <$23,x
+         stu   <$24,x
+L02D3    clrb  
+         bra   L0280
+
+Delete   pshs  y
+         lbsr  L061D
+         bcs   L0280
+         ldd   <$35,y
+         bne   L02E9
+         tst   <$34,y
+         lbeq  L027D
+L02E9    lda   #$42
+         lbsr  L07F1
+         bcs   L035F
+         ldu   $06,y
+         stx   $04,u
+         lbsr  L0CD4
+         bcs   L035F
+         ldx   $08,y
+         dec   $08,x
+         beq   L0304
+         lbsr  L0D38
+         bra   L032A
+L0304    clra
+         clrb
+         std   $0F,y
+         std   <$11,y
+         lbsr  L0AAF
+         bcs   L035F
+         ldb   <$34,y
+         ldx   <$35,y
+         stb   <$16,y
+         stx   <$17,y
+         ldx   $08,y
+         ldd   <$13,x
+         addd  #$0001
+         std   <$1A,y
+         lbsr  L0B6E
+L032A    bcs   L035F
+         lbsr  L0D72
+         lbsr  L0837
+         lda   <$37,y
+         sta   <$34,y
+         ldd   <$38,y
+         std   <$35,y
+         lbsr  L0CD4
+         bcs   L035F
+         lbsr  L082B
+         ldu   $08,y
+         lbsr  L01C6
+         ldd   <$3A,y
+         std   $0B,y
+         ldd   <$3C,y
+         std   $0D,y
+         lbsr  L079C
+         bcs   L035F
+         clr   ,x
+         lbsr  L0D40
+L035F    lbra  L0280
+
+Seek     ldb   $0A,y
+         bitb  #$02
+         beq   L037B
+         lda   $05,u
+         ldb   $08,u
+         subd  $0C,y
+         bne   L0376
+         lda   $04,u
+         sbca  $0B,y
+         beq   L037F
+L0376    lbsr  L0D72
+         bcs   L0383
+L037B    ldd   $04,u
+         std   $0B,y
+L037F    ldd   $08,u
+         std   $0D,y
+L0383    rts   
+
+ReadLn   bsr   L03C4
+         beq   L03AA
+         bsr   L03AB
+         pshs  u,y,x,b,a
+         exg   x,u
+         ldy   #$0000
+         lda   #$0D
+L0394    leay  $01,y
+         cmpa  ,x+
+         beq   L039D
+         decb  
+         bne   L0394
+L039D    ldx   $06,s
+         bsr   L03F4
+         sty   $0A,s
+         puls  u,y,x,b,a
+         ldd   $02,s
+         leax  d,x
+L03AA    rts
+L03AB    lbsr  L0414
+         lda   ,-x
+         cmpa  #$0D
+         beq   L03BA
+         ldd   $02,s
+         lbne  L041A
+L03BA    ldu   $06,y
+         ldd   $06,u
+         subd  $02,s
+         std   $06,u
+         bra   L040E
+L03C4    ldd   $06,u
+         bsr   L03CD
+         bcs   L03F1
+         std   $06,u
+         rts   
+L03CD    pshs  b,a
+         ldd   <$11,y
+         subd  $0D,y
+         tfr   d,x
+         ldd   $0F,y
+         sbcb  $0C,y
+         sbca  $0B,y
+         bcs   L03EE
+         bne   L03EB
+         tstb  
+         bne   L03EB
+         cmpx  ,s
+         bcc   L03EB
+         stx   ,s
+         beq   L03EE
+L03EB    clrb  
+         puls  pc,b,a
+L03EE    comb
+         ldb   #E$EOF
+L03F1    leas  $02,s
+         rts
+L03F4    lbra  L04F2
+
+Read     bsr   L03C4
+         beq   L0409
+         bsr   L040A
+L03FD    pshs  u,y,x,b,a
+         exg   x,u
+         tfr   d,y
+         bsr   L03F4
+         puls  u,y,x,b,a
+         leax  d,x
+L0409    rts   
+L040A    bsr   L0414
+         bne   L041A
+L040E    clrb  
+L040F    leas  -$02,s
+L0411    leas  $0A,s
+         rts   
+L0414    ldd   $04,u
+         ldx   $06,u
+         pshs  x,b,a
+L041A    lda   $0A,y
+         bita  #$02
+         bne   L043A
+         tst   $0E,y
+         bne   L0435
+         tst   $02,s
+         beq   L0435
+         leax  >L04A4,pcr
+         cmpx  $06,s
+         bne   L0435
+         lbsr  L0C49
+         bra   L0438
+L0435    lbsr  L0D91
+L0438    bcs   L040F
+L043A    ldu   $08,y
+         clra
+         ldb   $0E,y
+         leau  d,u
+         negb
+         sbca  #$FF
+         ldx   ,s
+         cmpd  $02,s
+         bls   L044D
+         ldd   $02,s
+L044D    pshs  b,a
+         jsr   [<$08,s]
+         stx   $02,s
+         lda   $0A,y
+         anda  #$BF
+         sta   $0A,y
+         ldb   $01,s
+         addb  $0E,y
+         stb   $0E,y
+         bne   L0471
+         lbsr  L0D72
+         inc   $0D,y
+         bne   L046F
+         inc   $0C,y
+         bne   L046F
+         inc   $0B,y
+L046F    bcs   L0411
+L0471    ldd   $04,s
+         subd  ,s++
+         std   $02,s
+         jmp   [<$04,s]
+
+WriteLn  pshs  y
+         clrb  
+         ldy   $06,u
+         beq   L0498
+         ldx   $04,u
+L0484    leay  -$01,y
+         beq   L0498
+         lda   ,x+
+         cmpa  #$0D
+         bne   L0484
+         tfr   y,d
+         nega  
+         negb  
+         sbca  #$00
+         addd  $06,u
+         std   $06,u
+L0498    puls  y
+
+Write    ldd   $06,u
+         beq   L04BE
+         bsr   L04C0
+         bcs   L04BF
+         bsr   L04B5
+L04A4    pshs  y,b,a
+         tfr   d,y
+         bsr   L04F2
+         puls  y,b,a
+         leax  d,x
+         lda   $0A,y
+         ora   #$03
+         sta   $0A,y
+         rts   
+L04B5    lbsr  L0414
+         lbne  L041A
+         leas  $08,s
+L04BE    clrb  
+L04BF    rts
+L04C0    addd  $0D,y
+         tfr   d,x
+         ldd   $0B,y
+         adcb  #$00
+         adca  #$00
+L04CA    cmpd  $0F,y
+         bcs   L04BE
+         bhi   L04D6
+         cmpx  <$11,y
+         bls   L04BE
+L04D6    pshs  u
+         ldu   <$11,y
+         stx   <$11,y
+         ldx   $0F,y
+         std   $0F,y
+         pshs  u,x
+         lbsr  L0854
+         puls  u,x
+         bcc   L04F0
+         stx   $0F,y
+         stu   <$11,y
+L04F0    puls  pc,u
+L04F2    pshs  u,y,x
+         ldd   $02,s
+         beq   L051B
+         leay  d,u
+         lsrb  
+         bcc   L0501
+         lda   ,x+
+         sta   ,u+
+L0501    lsrb  
+         bcc   L0508
+         ldd   ,x++
+         std   ,u++
+L0508    pshs  y
+         exg   x,u
+         bra   L0515
+L050E    pulu  y,b,a
+         std   ,x++
+         sty   ,x++
+L0515    cmpx  ,s
+         bcs   L050E
+         leas  $02,s
+L051B    puls  pc,u,y,x
+
+GetSTat  ldb   $02,u
+         cmpb  #$00
+         beq   L0543
+         cmpb  #$06
+         bne   L052F
+         clr   $02,u
+L0529    clra
+         ldb   #$01
+         lbra  L03CD
+L052F    cmpb  #$01
+         bne   L0536
+         clr   $02,u
+         rts   
+L0536    cmpb  #$02
+         bne   L0544
+         ldd   $0F,y
+         std   $04,u
+         ldd   <$11,y
+         std   $08,u
+L0543    rts
+L0544    cmpb  #$05
+         bne   L0551
+         ldd   $0B,y
+         std   $04,u
+         ldd   $0D,y
+         std   $08,u
+         rts   
+L0551    cmpb  #$0F
+         bne   L056B
+         lbsr  L0CD4
+         bcs   L0543
+         ldu   $06,y
+         ldd   $06,u
+         tsta  
+         beq   L0564
+         ldd   #$0100
+L0564    ldx   $04,u
+         ldu   $08,y
+         lbra  L03FD
+L056B    lda   #$09
+         lbra  L0CED
+
+SetStat  ldb   R$B,u
+         cmpb  #SS.OPT
+         bne   L0584
+         ldx   R$X,u
+         leax  $02,x
+         leau  <PD.STP,y
+         ldy   #$000D
+         lbra  L04F2
+L0584    cmpb  #SS.Size
+         bne   L05C6
+         ldd   <PD.FD+1,y
+         bne   L0594
+         tst   <PD.FD,y
+         lbeq  L0619
+L0594    lda   PD.MOD,y
+         bita  #WRITE.
+         beq   L05C2
+         ldd   R$X,u
+         ldx   R$U,u
+         cmpd  $0F,y
+         bcs   L05AD
+         bne   L05AA
+         cmpx  <PD.SIZ+2,y
+         bcs   L05AD
+L05AA    lbra  L04CA
+L05AD    std   PD.SIZ,y
+         stx   <PD.SIZ+2,y
+         ldd   PD.CP,y
+         ldx   PD.CP+2,y
+         pshs  x,b,a
+         lbsr  L0AAF
+         puls  u,x
+         stx   PD.CP,y
+         stu   PD.CP+2,y
+         rts
+L05C2    comb
+         ldb   #E$BMode
+         rts
+L05C6    cmpb  #$0F
+         bne   L0604
+         lda   $01,y
+         bita  #$02
+         beq   L05C2
+         lbsr  L0CD4
+         bcs   L061C
+         pshs  y
+         ldx   $04,u
+         ldu   $08,y
+         ldy   <$004B
+         ldd   $09,y
+         bne   L05E7
+         ldd   #$0102
+         bsr   L05F6
+L05E7    ldd   #$0305
+         bsr   L05F6
+         ldd   #$0D03
+         bsr   L05F6
+         puls  y
+         lbra  L0D38
+L05F6    pshs  u,x
+         leax  a,x
+         leau  a,u
+         clra  
+         tfr   d,y
+         lbsr  L04F2
+         puls  pc,u,x
+L0604    cmpb  #$1E
+         bne   L0614
+         ldx   <$1E,y
+         lda   $05,u
+         sta   <$1E,x
+         clr   <$1D,x
+         rts   
+L0614    lda   #$0C
+         lbra  L0CED
+L0619    comb
+         ldb   #E$UnkSvc
+L061C    rts
+
+L061D    ldd   #256
+         stb   PD.BUF+2,y
+         os9   F$SRqMem
+         bcs   L061C
+         stu   PD.BUF,y
+         ldx   PD.RGS,y
+         ldx   R$X,x
+         pshs  u,y,x
+         leas  -$04,s
+         clra
+         clrb
+         sta   <PD.FD,y
+         std   <PD.FD+1,y
+         std   <PD.DSK,y
+         lda   ,x
+         sta   ,s
+         cmpa  #PDELIM
+         bne   L0654
+         lbsr  L07BC
+         sta   ,s
+         lbcs  L0752
+         leax  ,y
+         ldy   $06,s
+         bra   L0677
+L0654    anda  #$7F			strip hi bit
+         cmpa  #PENTIR			raw?
+         beq   L0677			branch if so
+         lda   #PDELIM
+         sta   ,s
+         leax  -$01,x
+         lda   $01,y
+         ldu   <$004B
+         leau  <$1A,u
+         bita  #$24
+         beq   L066D
+         leau  $06,u
+L066D    ldb   $03,u
+         stb   <PD.FD,y
+         ldd   $04,u
+         std   <PD.FD+1,y
+L0677    ldu   $03,y
+         stu   <PD.DVT,y
+         lda   <PD.DRV,y
+         ldb   >L0011,pcr
+         mul
+         addd  $02,u
+         addd  #$000F
+         std   <PD.DTB,y
+         lda   ,s
+         anda  #$7F
+         cmpa  #PENTIR
+         bne   L0698
+         leax  $01,x
+         bra   L06BA
+L0698    lbsr  L0CC1
+         lbcs  L075A
+         ldu   PD.BUF,y
+         ldd   $0E,u
+         std   <PD.DSK,y
+         ldd   <PD.FD+1,y
+         bne   L06BA
+         lda   <PD.FD,y
+         bne   L06BA
+         lda   $08,u
+         sta   <PD.FD,y
+         ldd   $09,u
+         std   <PD.FD+1,y
+L06BA    stx   $04,s
+         stx   $08,s
+L06BE    lbsr  L0D72
+         lbcs  L075A
+         lda   ,s
+         anda  #$7F
+         cmpa  #PENTIR
+         beq   L06D4
+         lbsr  L0CD4
+         lbcs  L075A
+L06D4    lbsr  L082B
+         lda   ,s
+         cmpa  #PDELIM
+         bne   L0734
+         clr   $02,s
+         clr   $03,s
+         lda   $01,y
+         ora   #$80
+         lbsr  L07F1
+         bcs   L0752
+         lbsr  L01C6
+         ldx   $08,s
+         leax  $01,x
+         lbsr  L07BC
+         std   ,s
+         stx   $04,s
+         sty   $08,s
+         ldy   $06,s
+         bcs   L0752
+         lbsr  L079C
+         bra   L070A
+L0705    bsr   L075D
+L0707    lbsr  L0787
+L070A    bcs   L0752
+         tst   ,x
+         beq   L0705
+         clra
+         ldb   $01,s
+         leay  ,x
+         ldx   $04,s
+         os9   F$CmpNam
+         ldx   $06,s
+         exg   x,y
+         bcs   L0707
+         bsr   L076B
+         lda   <$1D,x
+         sta   <PD.FD,y
+         ldd   <$1E,x
+         std   <PD.FD+1,y
+         lbsr  L0837
+         lbra  L06BE
+L0734    ldx   $08,s
+         tsta
+         bmi   L0741
+         os9   F$PrsNam
+         leax  ,y
+         ldy   $06,s
+L0741    stx   $04,s
+         clra
+L0744    lda   ,s
+         leas  $04,s
+         pshs  b,a,cc
+         lda   $0A,y
+         anda  #$BF
+         sta   $0A,y
+         puls  pc,u,y,x,b,a,cc
+L0752    cmpb  #$D3
+         bne   L075A
+         bsr   L075D
+         ldb   #$D8
+L075A    coma
+         bra   L0744
+L075D    pshs  b,a
+         lda   $04,s
+         cmpa  #$2F
+         beq   L0785
+         ldd   $06,s
+         bne   L0785
+         puls  b,a
+L076B    pshs  b,a
+         stx   $06,s
+         lda   <PD.FD,y
+         sta   <PD.DFD,y
+         ldd   <PD.FD+1,y
+         std   <PD.DFD+1,y
+         ldd   $0B,y
+         std   <PD.DCP,y
+         ldd   $0D,y
+         std   <PD.DCP+2,y
+L0785    puls  pc,b,a
+
+L0787    ldb   $0E,y
+         addb  #$20
+         stb   $0E,y
+         bcc   L079C
+         lbsr  L0D72
+         inc   $0D,y
+         bne   L079C
+         inc   $0C,y
+         bne   L079C
+         inc   $0B,y
+L079C    ldd   #$0020
+         lbsr  L03CD
+         bcs   L07BB
+         lda   $0A,y
+         bita  #$02
+         bne   L07B4
+         lbsr  L0C49
+         bcs   L07BB
+         lbsr  L0D91
+         bcs   L07BB
+L07B4    ldb   $0E,y
+         lda   $08,y
+         tfr   d,x
+         clrb
+L07BB    rts
+
+L07BC    os9   F$PrsNam
+         pshs  x
+         bcc   L07E9
+         clrb
+L07C4    pshs  a
+         anda  #$7F
+         cmpa  #PDIR
+         puls  a
+         bne   L07DF
+         incb
+         leax  $01,x
+         tsta
+         bmi   L07DF
+         lda   ,x
+         cmpb  #$03
+         bcs   L07C4
+         lda   #PDELIM
+         decb
+         leax  -$03,x
+L07DF    tstb
+         bne   L07E7
+L07E2    comb
+         ldb   #E$BPNam
+         puls  pc,x
+L07E7    leay  ,x
+L07E9    cmpb  #$20
+         bhi   L07E2
+         andcc #^Carry
+         puls  pc,x
+
+* A = PD.MOD (mode byte)
+L07F1    tfr   a,b
+         anda  #$07
+         andb  #$C0
+         pshs  x,b,a
+         lbsr  L0CD4
+         bcs   L0820
+         ldu   $08,y
+         ldx   <$004B
+         ldd   $09,x
+         beq   L0809
+         cmpd  $01,u
+L0809    puls  a
+         beq   L0810
+         lsla
+         lsla
+         lsla
+L0810    ora   ,s
+         anda  #$BF
+         pshs  a
+         ora   #$80
+         anda  ,u
+         cmpa  ,s
+         beq   L0829
+         ldb   #$D6
+L0820    leas  $02,s
+         coma
+         puls  pc,x
+         ldb   #$FD
+         bra   L0820
+L0829    puls  pc,x,b,a
+L082B    clra
+         clrb
+         std   $0B,y
+         std   $0D,y
+         sta   <$19,y
+         std   <$1A,y
+L0837    rts
+L0838    pshs  y,x,b,a
+         ldx   <D.Proc
+         lda   <P$IOQN,x
+         beq   L0851
+         clr   <P$IOQN,x
+         ldb   #S$Wake
+         os9   F$Send
+         ldx   <D.PrcDBT
+         os9   F$Find64
+         clr   <P$IOQP,y
+L0851    clrb
+         puls  pc,y,x,b,a
+L0854    pshs  u,x
+L0856    bsr   L08B2
+         bne   L0866
+         cmpx  <$1A,y
+         bcs   L08AD
+         bne   L0866
+         lda   <$12,y
+         beq   L08AD
+L0866    lbsr  L0CD4
+         bcs   L08AA
+         ldx   $0B,y
+         ldu   $0D,y
+         pshs  u,x
+         ldd   $0F,y
+         std   $0B,y
+         ldd   <$11,y
+         std   $0D,y
+         lbsr  L0C63
+         puls  u,x
+         stx   $0B,y
+         stu   $0D,y
+         bcc   L08AD
+         cmpb  #$D5
+         bne   L08AA
+         bsr   L08B2
+         bne   L0896
+         tst   <$12,y
+         beq   L0899
+         leax  $01,x
+         bne   L0899
+L0896    ldx   #$FFFF
+L0899    tfr   x,d
+         tsta  
+         bne   L08A6
+         cmpb  <$2E,y
+         bcc   L08A6
+         ldb   <$2E,y
+L08A6    bsr   L08C0
+         bcc   L0856
+L08AA    coma  
+         puls  pc,u,x
+L08AD    lbsr  L0C49
+         puls  pc,u,x
+L08B2    ldd   <$10,y
+         subd  <$14,y
+         tfr   d,x
+         ldb   $0F,y
+         sbcb  <$13,y
+         rts
+L08C0    pshs  u,x
+         lbsr  L0966
+         bcs   L08FF
+         lbsr  L0CD4
+         bcs   L08FF
+         ldu   $08,y
+         clra
+         clrb  
+         std   $09,u
+         std   $0B,u
+         leax  <$10,u
+         ldd   $03,x
+         beq   L0947
+         ldd   $08,y
+         inca  
+         pshs  b,a
+         bra   L08EF
+L08E2    clrb  
+         ldd   -$02,x
+         beq   L08FB
+         addd  $0A,u
+         std   $0A,u
+         bcc   L08EF
+         inc   $09,u
+L08EF    leax  $05,x
+         cmpx  ,s
+         bcs   L08E2
+         lbsr  L0B6E
+         comb
+         ldb   #E$SLF
+L08FB    leas  $02,s
+         leax  -$05,x
+L08FF    bcs   L0964
+         ldd   -$04,x
+         addd  -$02,x
+         pshs  b,a
+         ldb   -$05,x
+         adcb  #$00
+         cmpb  <$16,y
+         puls  b,a
+         bne   L0947
+         cmpd  <$17,y
+         bne   L0947
+         ldu   <$1E,y
+         ldd   $06,u
+         ldu   $08,y
+         subd  #$0001
+         coma  
+         comb  
+         pshs  b,a
+         ldd   -$05,x
+         eora  <$16,y
+         eorb  <$17,y
+         lsra  
+         rorb  
+         lsra
+         rorb  
+         lsra  
+         rorb  
+         anda  ,s+
+         andb  ,s+
+         std   -$02,s
+         bne   L0947
+         ldd   -$02,x
+         addd  <$1A,y
+         bcs   L0947
+         std   -$02,x
+         bra   L0956
+L0947    ldd   <$16,y
+         std   ,x
+         lda   <$18,y
+         sta   $02,x
+         ldd   <$1A,y
+         std   $03,x
+L0956    ldd   $0A,u
+         addd  <$1A,y
+         std   $0A,u
+         bcc   L0961
+         inc   $09,u
+L0961    lbsr  L0D38
+L0964    puls  pc,u,x
+L0966    pshs  u,y,x,b,a
+         ldb   #$0C
+L096A    clr   ,-s
+         decb  
+         bne   L096A
+         ldx   <$1E,y
+         ldd   $04,x
+         std   $04,s
+         ldd   $06,x
+         std   $02,s
+         std   $0A,s
+         ldx   $03,y
+         ldx   $04,x
+         leax  <$12,x
+         subd  #$0001
+         addb  $0E,x
+         adca  #$00
+         bra   L098E
+L098C    lsra  
+         rorb  
+L098E    lsr   $0A,s
+         ror   $0B,s
+         bcc   L098C
+         std   ,s
+         ldd   $02,s
+         std   $0A,s
+         subd  #$0001
+         addd  $0C,s
+         bcc   L09A8
+         ldd   #$FFFF
+         bra   L09A8
+L09A6    lsra  
+         rorb  
+L09A8    lsr   $0A,s
+         ror   $0B,s
+         bcc   L09A6
+         cmpa  #$08
+         bcs   L09B5
+         ldd   #$0800
+L09B5    std   $0C,s
+         lbsr  L0BD8
+         lbcs  L0AA3
+         ldx   <$1E,y
+         ldd   <$1A,x
+         cmpd  $0E,x
+         bne   L09D7
+         lda   <$1C,x
+         cmpa  $04,x
+         bne   L09D7
+         ldb   <$1D,x
+         cmpb  $04,x
+         bcs   L09E5
+L09D7    ldd   $0E,x
+         std   <$1A,x
+         lda   $04,x
+         sta   <$1C,x
+         clrb  
+         stb   <$1D,x
+L09E5    incb  
+         stb   $06,s
+         ldx   <$1E,y
+         cmpb  <$1E,x
+         beq   L0A21
+         lbsr  L0C33
+         lbcs  L0AA3
+         ldb   $06,s
+         cmpb  $04,s
+         bls   L0A02
+         clra  
+         ldb   $05,s
+         bra   L0A05
+L0A02    ldd   #$0100
+L0A05    ldx   $08,y
+         leau  d,x
+         ldy   $0C,s
+         clra  
+         clrb  
+         os9   F$SchBit 
+         bcc   L0A4E
+         cmpy  $08,s
+         bls   L0A21
+         sty   $08,s
+         std   $0A,s
+         lda   $06,s
+         sta   $07,s
+L0A21    ldy   <$10,s
+         ldb   $06,s
+         cmpb  $04,s
+         bcs   L0A32
+         bhi   L0A31
+         tst   $05,s
+         bne   L0A32
+L0A31    clrb  
+L0A32    ldx   <$1E,y
+         cmpb  <$1D,x
+         bne   L09E5
+         ldb   $07,s
+         beq   L0AA1
+         cmpb  $06,s
+         beq   L0A47
+         stb   $06,s
+         lbsr  L0C33
+L0A47    ldx   $08,y
+         ldd   $0A,s
+         ldy   $08,s
+L0A4E    std   $0A,s
+         sty   $08,s
+         os9   F$AllBit 
+         ldy   <$10,s
+         ldb   $06,s
+         lbsr  L0C0B
+         bcs   L0AA3
+         ldx   <$1E,y
+         lda   $06,s
+         deca  
+         sta   <$1D,x
+         clrb
+         lsla
+         rolb  
+         lsla  
+         rolb  
+         lsla  
+         rolb
+         stb   <$16,y
+         ora   $0A,s
+         ldb   $0B,s
+         ldx   $08,s
+         ldy   <$10,s
+         std   <$17,y
+         stx   <$1A,y
+         ldd   $02,s
+         bra   L0A97
+L0A88    lsl   <$18,y
+         rol   <$17,y
+         rol   <$16,y
+         lsl   <$1B,y
+         rol   <$1A,y
+L0A97    lsra  
+         rorb  
+         bcc   L0A88
+         clrb
+         ldd   <$1A,y
+         bra   L0AAB
+L0AA1    ldb   #$F8
+L0AA3    ldy   <$10,s
+         lbsr  L0C12
+         coma  
+L0AAB    leas  $0E,s
+         puls  pc,u,y,x
+L0AAF    clra  
+         lda   $01,y
+         bita  #$80
+         bne   L0B11
+         ldd   $0F,y
+         std   $0B,y
+         ldd   <$11,y
+         std   $0D,y
+         lbsr  L0C63
+         bcc   L0AC8
+         cmpb  #$D5
+         bra   L0B09
+L0AC8    ldd   <$14,y
+         subd  $0C,y
+         addd  <$1A,y
+         tst   $0E,y
+         beq   L0AD7
+         subd  #$0001
+L0AD7    pshs  b,a
+         ldu   <$1E,y
+         ldd   $06,u
+         subd  #$0001
+         coma  
+         comb  
+         anda  ,s+
+         andb  ,s+
+         ldu   <$1A,y
+         std   <$1A,y
+         beq   L0B0B
+         tfr   u,d
+         subd  <$1A,y
+         pshs  x,b,a
+         addd  <$17,y
+         std   <$17,y
+         bcc   L0B01
+         inc   <$16,y
+L0B01    bsr   L0B6E
+         bcc   L0B12
+         leas  $04,s
+         cmpb  #$DB
+L0B09    bne   L0B10
+L0B0B    lbsr  L0CD4
+         bcc   L0B1B
+L0B10    coma  
+L0B11    rts   
+L0B12    lbsr  L0CD4
+         bcs   L0B6B
+         puls  x,b,a
+         std   $03,x
+L0B1B    ldu   $08,y
+         ldd   <$11,y
+         std   $0B,u
+         ldd   $0F,y
+         std   $09,u
+         tfr   x,d
+         clrb  
+         inca  
+         leax  $05,x
+         pshs  x,b,a
+         bra   L0B56
+L0B30    ldd   -$02,x
+         beq   L0B63
+         std   <$1A,y
+         ldd   -$05,x
+         std   <$16,y
+         lda   -$03,x
+         sta   <$18,y
+         bsr   L0B6E
+         bcs   L0B6B
+         stx   $02,s
+         lbsr  L0CD4
+         bcs   L0B6B
+         ldx   $02,s
+         clra  
+         clrb  
+         std   -$05,x
+         sta   -$03,x
+         std   -$02,x
+L0B56    lbsr  L0D38
+         bcs   L0B6B
+         ldx   $02,s
+         leax  $05,x
+         cmpx  ,s
+         bcs   L0B30
+L0B63    clra
+         clrb  
+         sta   <$19,y
+         std   <$1A,y
+L0B6B    leas  $04,s
+         rts
+L0B6E    pshs  u,y,x,a
+         ldx   <$1E,y
+         ldd   $06,x
+         subd  #$0001
+         addd  <$17,y
+         std   <$17,y
+         ldd   $06,x
+         bcc   L0B96
+         inc   <$16,y
+         bra   L0B96
+L0B87    lsr   <$16,y
+         ror   <$17,y
+         ror   <$18,y
+         lsr   <$1A,y
+         ror   <$1B,y
+L0B96    lsra  
+         rorb  
+         bcc   L0B87
+         clrb  
+         ldd   <$1A,y
+         beq   L0BD6
+         ldd   <$16,y
+         lsra  
+         rorb  
+         lsra  
+         rorb
+         lsra
+         rorb  
+         tfr   b,a
+         ldb   #$DB
+         cmpa  $04,x
+         bhi   L0BD5
+         inca  
+         sta   ,s
+L0BB4    bsr   L0BD8
+         bcs   L0BB4
+         ldb   ,s
+         bsr   L0C33
+         bcs   L0BD5
+         ldx   $08,y
+         ldd   <$17,y
+         anda  #$07
+         ldy   <$1A,y
+         os9   F$DelBit 
+         ldy   $03,s
+         ldb   ,s
+         bsr   L0C0B
+         bcc   L0BD6
+L0BD5    coma  
+L0BD6    puls  pc,u,y,x,a
+L0BD8    lbsr  L0D72
+         bra   L0BE5
+L0BDD    lbsr  L0838
+         os9   F$IOQu   
+         bsr   L0BF5
+L0BE5    bcs   L0BF4
+         ldx   <$1E,y
+         lda   <$17,x
+         bne   L0BDD
+         lda   $05,y
+         sta   <$17,x
+L0BF4    rts   
+L0BF5    ldu   <$004B
+         ldb   <$36,u
+         cmpb  #$01
+         bls   L0C02
+         cmpb  #$03
+         bls   L0C09
+L0C02    clra
+         lda   $0D,u
+         bita  #$02
+         beq   L0C0A
+L0C09    coma  
+L0C0A    rts
+L0C0B    clra  
+         tfr   d,x
+         clrb  
+         lbsr  L0D42
+L0C12    pshs  cc
+         ldx   <$1E,y
+         lda   $05,y
+         cmpa  <$17,x
+         bne   L0C31
+         clr   <$17,x
+         ldx   <$004B
+         lda   <$11,x
+         beq   L0C31
+         lbsr  L0838
+         ldx   #$0001
+         os9   F$Sleep  
+L0C31    puls  pc,cc
+L0C33    clra  
+         tfr   d,x
+         clrb  
+         lbra  L0CEB
+         pshs  u,x
+         lbsr  L0D40
+         bcs   L0C47
+         lda   $0A,y
+         anda  #$FE
+         sta   $0A,y
+L0C47    puls  pc,u,x
+L0C49    ldd   $0C,y
+         subd  <$14,y
+         tfr   d,x
+         ldb   $0B,y
+         sbcb  <$13,y
+         cmpb  <$19,y
+         bcs   L0C61
+         bhi   L0C63
+         cmpx  <$1A,y
+         bcc   L0C63
+L0C61    clrb  
+L0C62    rts   
+L0C63    pshs  u
+         bsr   L0CD4
+         bcs   L0CBF
+         clra  
+         clrb  
+         std   <$13,y
+         stb   <$15,y
+         ldu   $08,y
+         leax  <$10,u
+         lda   $08,y
+         ldb   #$FC
+         pshs  b,a
+L0C7C    ldd   $03,x
+         beq   L0CA1
+         addd  <$14,y
+         tfr   d,u
+         ldb   <$13,y
+         adcb  #$00
+         cmpb  $0B,y
+         bhi   L0CAE
+         bne   L0C95
+         cmpu  $0C,y
+         bhi   L0CAE
+L0C95    stb   <$13,y
+         stu   <$14,y
+         leax  $05,x
+         cmpx  ,s
+         bcs   L0C7C
+L0CA1    clra
+         clrb  
+         sta   <$19,y
+         std   <$1A,y
+         comb
+         ldb   #E$NES
+         bra   L0CBD
+L0CAE    ldd   ,x
+         std   <$16,y
+         lda   $02,x
+         sta   <$18,y
+         ldd   $03,x
+         std   <$1A,y
+L0CBD    leas  $02,s
+L0CBF    puls  pc,u
+L0CC1    pshs  x,b
+         lbsr  L0D72
+         bcs   L0CD0
+         clrb
+         ldx   #$0000
+         bsr   L0CEB
+         bcc   L0CD2
+L0CD0    stb   ,s
+L0CD2    puls  pc,x,b
+L0CD4    ldb   $0A,y
+         bitb  #$04
+         bne   L0C61
+         lbsr  L0D72
+         bcs   L0C62
+         ldb   $0A,y
+         orb   #$04
+         stb   $0A,y
+         ldb   <$34,y
+         ldx   <$35,y
+L0CEB    lda   #$03
+L0CED    pshs  u,y,x,b,a
+         lda   $0A,y
+         ora   #$20
+         sta   $0A,y
+         ldu   $03,y
+         ldu   $02,u
+         bra   L0D01
+L0CFB    lbsr  L0838
+         os9   F$IOQu   
+L0D01    lda   $04,u
+         bne   L0CFB
+         lda   $05,y
+         sta   $04,u
+         ldd   ,s
+         ldx   $02,s
+         pshs  u
+         bsr   L0D26
+         puls  u
+         ldy   $04,s
+         pshs  cc
+         bcc   L0D1C
+         stb   $02,s
+L0D1C    lda   $0A,y
+         anda  #$DF
+         sta   $0A,y
+         clr   $04,u
+         puls  pc,u,y,x,b,a,cc
+L0D26    pshs  pc,x,b,a
+         ldx   $03,y
+         ldd   ,x
+         ldx   ,x
+         addd  $09,x
+         addb  ,s
+         adca  #$00
+         std   $04,s
+         puls  pc,x,b,a
+L0D38    ldb   <$34,y
+         ldx   <$35,y
+         bra   L0D42
+L0D40    bsr   L0D5B
+L0D42    lda   #$06
+         pshs  x,b,a
+         ldd   <$1C,y
+         beq   L0D51
+         ldx   <$1E,y
+         cmpd  $0E,x
+L0D51    puls  x,b,a
+         lbeq  L0CED
+         comb
+         ldb   #E$DIDC
+         rts   
+L0D5B    ldd   $0C,y
+         subd  <$14,y
+         tfr   d,x
+         ldb   $0B,y
+         sbcb  <$13,y
+         exg   d,x
+         addd  <$17,y
+         exg   d,x
+         adcb  <$16,y
+         rts   
+L0D72    clrb  
+         pshs  u,x
+         ldb   $0A,y
+         andb  #$46
+         beq   L0D8F
+         tfr   b,a
+         eorb  $0A,y
+         stb   $0A,y
+         andb  #$01
+         beq   L0D8F
+         eorb  $0A,y
+         stb   $0A,y
+         bita  #$02
+         beq   L0D8F
+         bsr   L0D40
+L0D8F    puls  pc,u,x
+L0D91    pshs  u,x
+         lbsr  L0C49
+         bcs   L0DAA
+         bsr   L0D72
+         bcs   L0DAA
+         lbsr  L0D5B
+         lbsr  L0CEB
+         bcs   L0DAA
+         lda   $0A,y
+         ora   #$42
+         sta   $0A,y
+L0DAA    puls  pc,u,x
+
+         emod
+eom      equ   *
+         end
+