view level1/cmds/dcheck.asm @ 1211:f54f04a78c54

Rodney Hamilton fixes
author boisy
date Mon, 23 Jun 2003 17:45:27 +0000
parents b25d54108970
children 84ea83668304
line wrap: on
line source

********************************************************************
* dcheck - Check Disk File Structure
*
* $Id$
*
* Ed.    Comments                                       Who YY/MM/DD
* ------------------------------------------------------------------
*   4    From Tandy OS-9 Level One VR 02.00.00
*   5    Changed /D0 references to /DD                  BGP 02/07/21
*        Completly disasemble to be more readable       JB  03/03/31

         nam   dcheck
         ttl   Check Disk File Structure

* Disassembled 03/03/27 00:00:24 by Disasm v1.5 (C) 1988 by RML

         ifp1
         use   defsfile
         endc
         
tylg     set   Prgrm+Objct   
atrv     set   ReEnt+rev
rev      set   $01
edition  set   $05

         mod   eom,name,tylg,atrv,start,size
u0000    rmb   1
u0001    rmb   1
u0002    rmb   6
u0008    rmb   2
u000A    rmb   1
u000B    rmb   1
u000C    rmb   2
u000E    rmb   2
u0010    rmb   6
u0016    rmb   1
u0017    rmb   1
u0018    rmb   3
u001B    rmb   5
u0020    rmb   1
u0021    rmb   1
u0022    rmb   1
u0023    rmb   1
u0024    rmb   1
u0025    rmb   1
u0026    rmb   4
u002A    rmb   2
u002C    rmb   1
u002D    rmb   1
u002E    rmb   1
u002F    rmb   2
u0031    rmb   18
u0043    rmb   18
u0055    rmb   15
u0064    rmb   15
u0073    rmb   138
u00FD    rmb   2693
size     equ   .


;---------------------------------------------
;
;---------------------------------------------
L0014    pshs  b,a
         leas  <-$22,s
         clr   <$1F,s
         clrb  
         stb   <$1E,s
         stb   <$1D,s
         clrb  
         clra  
         std   <$30,y
         std   <$2C,y
         std   <$2A,y
         std   <$28,y
         std   <$26,y
         ldd   #$0001
         std   <$12,y
         leax  >L13E2,pcr
         pshs  x
         leax  <$70,y
         tfr   x,d
         lbsr  L1A4F
         leas  $02,s
         leax  >L13E6,pcr
         pshs  x
         leax  >$00AC,y
         tfr   x,d
         lbsr  L1A4F
         leas  $02,s
L005B    ldd   <$22,s
         subd  #$0001
         std   <$22,s
         cmpd  #$0000
         lble  L015F
         ldx   <$26,s
         leax  $02,x
         stx   <$26,s
         ldx   ,x
         ldb   ,x
         cmpb  #$2D
         lbne  L015F
         ldd   [<$26,s]
         addd  #$0001
         std   ,s
L0086    ldb   [,s]
         beq   L005B
         ldb   [,s]
         clra  
         lbsr  L1A52
         stb   $02,s
         cmpb  #$62
         lbeq  L010F
         cmpb  #$64
         lbeq  L012F
         cmpb  #$6D
         lbeq  L0106
         cmpb  #$6F
         lbeq  L0127
         cmpb  #$70
         lbeq  L011F
         cmpb  #$73
         lbeq  L0117
         cmpb  #$77
         beq   L00BD
         lbra  L0136
L00BD    ldx   ,s
         ldb   $01,x
         cmpb  #$3D
         bne   L00F1
         ldx   ,s
         ldb   $02,x
         beq   L00F1
         ldd   ,s
         addd  #$0002
         pshs  b,a
         leax  <$70,y
         tfr   x,d
         lbsr  L1A4F
         leas  $02,s
         ldd   ,s
         addd  #$0002
         pshs  b,a
         leax  >$00AC,y
         tfr   x,d
         lbsr  L1A4F
         leas  $02,s
         lbra  L014D
L00F1    leax  >L13EA,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $02,s
         clrb  
         clra  
         lbsr  L1A58
         lbra  L014D
L0106    ldd   #$0001
         std   <$14,y
         lbra  L014D
L010F    clrb  
         clra  
         std   <$12,y
         lbra  L014D
L0117    ldd   #$0001
         std   <$16,y
         bra   L014D
L011F    ldd   #$0001
         std   <$10,y
         bra   L014D
L0127    lbsr  L0705
         clrb  
         clra  
         lbsr  L1A58
L012F    ldd   #$0001
         std   $0E,y
         bra   L014D
L0136    ldb   [,s]
         clra  
         pshs  b,a
         leax  >L1412,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $04,s
         clrb  
         clra  
         std   <$22,s
L014D    ldb   $02,s
         cmpb  #$77
         lbeq  L005B
         ldd   ,s
         addd  #$0001
         std   ,s
         lbra  L0086
L015F    ldd   <$22,s
         cmpd  #$0001
         beq   L0170
         lbsr  L0705
         clrb  
         clra  
         lbsr  L1A58
L0170    ldd   <$16,y
         beq   L017F
         clrb  
         clra  
         std   $0E,y
         std   <$14,y
         std   <$10,y
L017F    ldd   #$000B
         std   <$36,y
         ldd   <$16,y
         bne   L0193
         ldd   <$36,y
         subd  #$0001
         std   <$36,y
L0193    ldd   <$10,y
         beq   L01A1
         ldd   <$36,y
         subd  #$0001
         std   <$36,y
L01A1    ldd   [<$26,s]
         lbsr  L1A5B
         cmpd  #$0000
         bne   L01BF
         leax  >L142F,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $02,s
         clrb  
         clra  
         lbsr  L1A58
L01BF    clrb  
         clra  
         std   <$19,s
         std   <$17,s
         ldd   [<$26,s]
         ldx   <$17,s
         ldb   d,x
         cmpb  #$2F
         beq   L01E7
         ldd   <$19,s
         addd  #$0001
         std   <$19,s
         subd  #$0001
         leax  $03,s
         leax  d,x
         ldb   #$2F
         stb   ,x
L01E7    ldd   <$17,s
         addd  #$0001
         std   <$17,s
         subd  #$0001
         ldx   [<$26,s]
         ldb   d,x
         stb   $02,s
         tstb  
         beq   L0213
         ldd   <$19,s
         addd  #$0001
         std   <$19,s
         subd  #$0001
         leax  $03,s
         leax  d,x
         ldb   $02,s
         stb   ,x
         bra   L01E7
L0213    ldd   <$19,s
         leax  $02,s
         ldb   d,x
         cmpb  #$40
         beq   L0238
         ldd   <$19,s
         std   <$20,s
         ldd   <$19,s
         addd  #$0001
         std   <$19,s
         subd  #$0001
         leax  $03,s
         leax  d,x
         ldb   #$40
         stb   ,x
L0238    ldd   <$19,s
         addd  #$0001
         std   <$19,s
         subd  #$0001
         leax  $03,s
         leax  d,x
         clr   ,x
         ldd   #$0001
         pshs  b,a
         leax  $05,s
         tfr   x,d
         lbsr  L1A5E
         leas  $02,s
         std   ,y
         cmpd  #$FFFF
         bne   L0276
         leax  $03,s
         pshs  x
         leax  >L144C,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $04,s
         ldd   <u0002
         lbsr  L1A58
L0276    clrb  
         clra  
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   ,y
         lbsr  L1A61
         leas  $06,s
         leax  >$0178,y
         tfr   x,d
         lbsr  L0749
         leax  >$0178,y
         ldb   $05,x
         clra  
         pshs  b,a
         leax  >$0178,y
         ldb   $04,x
         clra  
         tfr   b,a
         clrb  
         addd  ,s++
         std   $0A,y
         ldd   $0A,y
         tfr   a,b
         clra  
         std   <$32,y
         ldd   $0A,y
         anda  #$00
         andb  #$FF
         std   <$34,y
         leax  >$0178,y
         ldb   $07,x
         clra  
         pshs  b,a
         leax  >$0178,y
         ldb   $06,x
         clra  
         tfr   b,a
         clrb  
         addd  ,s++
         std   $06,y
         ldd   $06,y
         addd  #$FFFF
         std   $08,y
         leax  >$0178,y
         ldb   $02,x
         clra  
         pshs  b,a
         leax  >$0178,y
         ldb   $01,x
         clra  
         tfr   b,a
         clrb  
         addd  ,s++
         std   $0C,y
         ldd   $0C,y
         pshs  b,a
         ldd   $06,y
         lbsr  L1A94
         std   $0C,y
         leax  >$0178,y
         tfr   x,d
         addd  #$001F
         pshs  b,a
         leax  <$4F,y
         tfr   x,d
         lbsr  L0B8D
         leas  $02,s
         clrb  
         clra  
         std   <$17,s
L0314    ldd   <$17,s
         cmpd  #$0002
         bgt   L033D
         ldd   <$17,s
         leax  <$4C,y
         leax  d,x
         pshs  x
         ldd   <$19,s
         leax  >$0178,y
         ldb   d,x
         stb   [,s++]
         ldd   <$17,s
         addd  #$0001
         std   <$17,s
         bra   L0314
L033D    ldd   <$20,s
         leax  $03,s
         leax  d,x
         clr   ,x
         ldd   <$16,y
         lbne  L03D4
         leax  $03,s
         pshs  x
         leax  <$4F,y
         pshs  x
         leax  >L1464,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $04,s
         ldd   $0A,y
         pshs  b,a
         leax  >L1480,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
         ldd   $06,y
         cmpd  #$0001
         bne   L0383
         leax  >L149F,pcr
         tfr   x,d
         lbsr  L1A64
         bra   L0392
L0383    ldd   $06,y
         pshs  b,a
         leax  >L14B5,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
L0392    leax  <$38,y
         pshs  x
         leax  <$4C,y
         tfr   x,d
         lbsr  L0720
         leas  $02,s
         leax  <$38,y
         pshs  x
         leax  >L14CD,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
         leax  <$38,y
         pshs  x
         leax  >$0178,y
         tfr   x,d
         addd  #$0008
         lbsr  L0720
         leas  $02,s
         leax  <$38,y
         pshs  x
         leax  >L14E8,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
L03D4    leax  $03,s
         tfr   x,d
         lbsr  L1A67
         cmpd  #$FFFF
         bne   L03F3
         leax  >L1511,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $02,s
         ldd   <u0002
         lbsr  L1A58
L03F3    ldd   <$16,y
         lbne  L0469
         ldd   #$1000
         lbsr  L1A6A
         std   >$0278,y
         cmpd  #$0000
         beq   L041F
         ldd   <$10,y
         beq   L0436
         ldd   #$1000
         lbsr  L1A6A
         std   >$027A,y
         cmpd  #$0000
         bne   L0436
L041F    ldd   #$0004
         pshs  b,a
         leax  >L1536,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $04,s
         clrb  
         clra  
         lbsr  L1A58
L0436    clrb  
         clra  
         pshs  b,a
         leax  $02,y
         pshs  x
         leax  <$70,y
         pshs  x
         ldd   >$0278,y
         lbsr  L10EB
         leas  $06,s
         ldd   <$10,y
         beq   L0469
         ldd   #$0001
         pshs  b,a
         leax  $04,y
         pshs  x
         leax  >$00AC,y
         pshs  x
         ldd   >$027A,y
         lbsr  L10EB
         leas  $06,s
L0469    leax  >$0178,y
         ldb   $04,x
         clra  
         addd  #$0002
         std   <$1B,s
         leax  >$0178,y
         ldb   $05,x
         beq   L0487
         ldd   <$1B,s
         addd  #$0001
         std   <$1B,s
L0487    clrb  
         clra  
         pshs  b,a
         ldd   #$0013
         pshs  b,a
         leax  >$0178,y
         tfr   x,d
         addd  #$0008
         pshs  b,a
         ldd   ,y
         lbsr  L1A6D
         leas  $06,s
         ldd   #$0002
         pshs  b,a
         leax  <$19,s
         pshs  x
         ldd   ,y
         lbsr  L1A70
         leas  $04,s
         cmpd  #$FFFF
         bne   L04BE
         ldd   <u0002
         lbsr  L1A58
L04BE    ldd   <$1B,s
         addd  <$17,s
         std   <$1B,s
         ldd   <$16,y
         bne   L04DC
         ldd   <$1B,s
         pshs  b,a
         leax  >L1568,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
L04DC    clrb  
         clra  
         std   <$2E,y
         leax  $03,s
         stx   >$0108,y
         ldd   <$16,y
         bne   L0510
         ldd   <$1B,s
         pshs  b,a
         leax  <$1F,s
         pshs  x
         clrb  
         clra  
         pshs  b,a
         ldd   $02,y
         pshs  b,a
         ldd   >$0278,y
         lbsr  L0BB1
         leas  $08,s
         leax  >L15A6,pcr
         tfr   x,d
         lbsr  L1A64
L0510    leax  $03,s
         tfr   x,d
         lbsr  L0779
         ldd   <$16,y
         lbne  L05E8
         leax  >L15CC,pcr
         tfr   x,d
         lbsr  L1A64
         lbsr  L0FA3
         ldd   <$10,y
         beq   L054F
         ldd   <$2A,y
         bne   L0539
         ldd   <$26,y
         beq   L054F
L0539    ldd   #$0001
         std   <$2E,y
         leax  >L15ED,pcr
         tfr   x,d
         lbsr  L1A64
         leax  $03,s
         tfr   x,d
         lbsr  L0779
L054F    leax  >L1614,pcr
         tfr   x,d
         lbsr  L1A64
         ldd   <$2A,y
         beq   L0588
         ldd   <$2A,y
         pshs  b,a
         leax  >L1616,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
         ldd   <$2A,y
         cmpd  #$0001
         beq   L057F
         leax  >L163D,pcr
         tfr   x,d
         lbsr  L1A64
L057F    leax  >L163F,pcr
         tfr   x,d
         lbsr  L1A64
L0588    ldd   <$26,y
         beq   L05B8
         ldd   <$26,y
         pshs  b,a
         leax  >L1641,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
         ldd   <$26,y
         cmpd  #$0001
         beq   L05AF
         leax  >L164C,pcr
         tfr   x,d
         lbsr  L1A64
L05AF    leax  >L164E,pcr
         tfr   x,d
         lbsr  L1A64
L05B8    ldd   <$28,y
         beq   L05E8
         ldd   <$28,y
         pshs  b,a
         leax  >L167C,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
         ldd   <$28,y
         cmpd  #$0001
         beq   L05DF
         leax  >L1687,pcr
         tfr   x,d
         lbsr  L1A64
L05DF    leax  >L1689,pcr
         tfr   x,d
         lbsr  L1A64
L05E8    ldd   <$2C,y
         beq   L0618
         ldd   <$2C,y
         pshs  b,a
         leax  >L16B7,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
         ldd   <$2C,y
         cmpd  #$0001
         beq   L060F
         leax  >L16D5,pcr
         tfr   x,d
         lbsr  L1A64
L060F    leax  >L16D7,pcr
         tfr   x,d
         lbsr  L1A64
L0618    ldd   <$16,y
         bne   L064E
         leax  <$4F,y
         pshs  x
         leax  >L16D9,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
         ldd   <$2C,y
         bne   L063C
         ldd   <$2A,y
         bne   L063C
         ldd   <$26,y
         beq   L0645
L063C    leax  >L16F2,pcr
         tfr   x,d
         lbsr  L1A64
L0645    leax  >L16F7,pcr
         tfr   x,d
         lbsr  L1A64
L064E    ldd   <$24,y
         cmpd  #$0001
         bne   L0662
         leax  >L16FF,pcr
         tfr   x,d
         lbsr  L1A64
         bra   L0672
L0662    ldd   <$24,y
         pshs  b,a
         leax  >L170C,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
L0672    ldd   <$22,y
         cmpd  #$0001
         bne   L0686
         leax  >L171C,pcr
         tfr   x,d
         lbsr  L1A64
         bra   L0696
L0686    ldd   <$22,y
         pshs  b,a
         leax  >L1724,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
L0696    ldd   <$16,y
         lbne  L06FC
         clrb  
         clra  
         pshs  b,a
         ldd   #$FFFF
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   $02,y
         pshs  b,a
         ldd   >$0278,y
         lbsr  L1232
         leas  $08,s
         ldd   $02,y
         lbsr  L1A73
         ldd   <$14,y
         bne   L06C9
         leax  <$70,y
         tfr   x,d
         lbsr  L1A76
L06C9    ldd   <$10,y
         beq   L06FC
         clrb  
         clra  
         pshs  b,a
         ldd   #$FFFF
         pshs  b,a
         ldd   #$0001
         pshs  b,a
         ldd   $04,y
         pshs  b,a
         ldd   >$027A,y
         lbsr  L1232
         leas  $08,s
         ldd   $04,y
         lbsr  L1A73
         ldd   <$14,y
         bne   L06FC
         leax  >$00AC,y
         tfr   x,d
         lbsr  L1A76
L06FC    clrb  
         clra  
         lbsr  L1A58
         leas  <$24,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0705    leax  >L172E,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $02,s
         leax  >L1800,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $02,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0720    pshs  b,a
         ldx   ,s
         ldb   $02,x
         clra  
         pshs  b,a
         ldx   $02,s
         ldb   $01,x
         clra  
         tfr   b,a
         clrb  
         addd  ,s++
         pshs  b,a
         ldb   [<$02,s]
         clra  
         pshs  b,a
         leax  >L1834,pcr
         pshs  x
         ldd   $0A,s
         lbsr  L1A79
         leas  $08,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0749    pshs  b,a
         ldd   #$0100
         pshs  b,a
         ldd   $02,s
         pshs  b,a
         ldd   ,y
         lbsr  L1A70
         leas  $04,s
         cmpd  #$0100
         beq   L0773
         leax  >L183E,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $02,s
         ldd   <u0002
         lbsr  L1A58
L0773    ldd   #$0100
         leas  $02,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0779    pshs  b,a
         leas  <-$2A,s
         ldd   <$18,y
         cmpd  #$0027
         blt   L079E
         ldd   #$0027
         pshs  b,a
         leax  >L1858,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $04,s
         clrb  
         clra  
         lbsr  L1A58
L079E    ldd   <$18,y
         addd  #$0001
         std   <$18,y
         ldd   $0E,y
         beq   L07DD
         ldd   #$0001
         std   ,s
L07B0    ldd   <$18,y
         addd  #$FFFF
         cmpd  ,s
         ble   L07CD
         leax  >L1882,pcr
         tfr   x,d
         lbsr  L1A64
         ldd   ,s
         addd  #$0001
         std   ,s
         bra   L07B0
L07CD    ldd   <$2A,s
         pshs  b,a
         leax  >L1885,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
L07DD    ldd   <$2E,y
         bne   L07EB
         ldd   <$24,y
         addd  #$0001
         std   <$24,y
L07EB    ldd   <$2A,s
         lbsr  L1A67
         cmpd  #$FFFF
         bne   L0811
         ldd   <$2A,s
         pshs  b,a
         leax  >L1888,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $04,s
         lbsr  L1338
         ldd   <u0002
         lbsr  L1A58
L0811    lbsr  L13A1
         std   $04,s
         ldd   <$36,y
         subd  #$0001
         std   <$36,y
         ldd   #$0001
         pshs  b,a
         ldd   #$0040
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   $0A,s
         lbsr  L1A61
         leas  $06,s
L0834    ldd   #$0020
         pshs  b,a
         leax  >$00E8,y
         pshs  x
         ldd   $08,s
         lbsr  L1A70
         leas  $04,s
         std   ,s
         cmpd  #$FFFF
         lbeq  L0974
         ldb   >$00E8,y
         beq   L0834
         ldd   <$22,y
         addd  #$0001
         std   <$22,y
         leax  >$00E8,y
         pshs  x
         leax  >$0158,y
         tfr   x,d
         lbsr  L0B8D
         leas  $02,s
         ldd   $0E,y
         beq   L0877
         lbsr  L1338
L0877    ldd   <$16,y
         lbne  L08D0
         ldd   <$2E,y
         cmpd  #$0001
         bne   L08AA
         ldd   $06,y
         pshs  b,a
         leax  >$00E8,y
         tfr   x,d
         addd  #$001D
         pshs  b,a
         ldd   #$0001
         pshs  b,a
         ldd   $04,y
         pshs  b,a
         ldd   >$027A,y
         lbsr  L0BB1
         leas  $08,s
         bra   L08D0
L08AA    ldd   $06,y
         pshs  b,a
         leax  >$00E8,y
         tfr   x,d
         addd  #$001D
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   $02,y
         pshs  b,a
         ldd   >$0278,y
         lbsr  L0BB1
         leas  $08,s
         std   -$02,s
         lbne  L0834
L08D0    clrb  
         clra  
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         leax  >$00E8,y
         tfr   x,d
         addd  #$001D
         pshs  b,a
         ldd   ,y
         lbsr  L1A6D
         leas  $06,s
         leax  >$0178,y
         tfr   x,d
         lbsr  L0749
         leax  >$0178,y
         tfr   x,d
         lbsr  L09AE
         std   -$02,s
         lbeq  L0834
         leax  >$00E8,y
         pshs  x
         leax  $08,s
         tfr   x,d
         lbsr  L0B8D
         leas  $02,s
         ldd   <$18,y
         lslb  
         rola  
         leax  >$0108,y
         leax  d,x
         leau  $06,s
         stu   ,x
         ldd   <$36,y
         lbne  L096A
         leax  <$28,s
         pshs  x
         leax  <$28,s
         pshs  x
         ldd   $08,s
         lbsr  L1A7C
         leas  $04,s
         ldd   $04,s
         lbsr  L1A73
         ldd   <$36,y
         addd  #$0001
         std   <$36,y
         leax  $06,s
         tfr   x,d
         lbsr  L0779
         lbsr  L13A1
         std   $04,s
         clrb  
         clra  
         pshs  b,a
         ldd   <$2A,s
         pshs  b,a
         ldd   <$2A,s
         pshs  b,a
         ldd   $0A,s
         lbsr  L1A61
         leas  $06,s
         lbra  L0834
L096A    leax  $06,s
         tfr   x,d
         lbsr  L0779
         lbra  L0834
L0974    ldd   $04,s
         lbsr  L1A73
         cmpd  #$FFFF
         bne   L0984
         ldd   <u0002
         lbsr  L1A58
L0984    ldd   <$36,y
         addd  #$0001
         std   <$36,y
         leax  >L18A7,pcr
         tfr   x,d
         lbsr  L1A67
         cmpd  #$FFFF
         bne   L09A1
         ldd   <u0002
         lbsr  L1A58
L09A1    ldd   <$18,y
         subd  #$0001
         std   <$18,y
         leas  <$2C,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L09AE    pshs  b,a
         leas  -$07,s
         clrb  
         clra  
         std   $02,s
         ldd   #$0010
         std   ,s
L09BB    ldd   $07,s
         addd  ,s
         ldx   #$0002
         leax  d,x
         ldb   ,x
         tstb  
         lbne  L09E5
         ldd   $07,s
         addd  ,s
         ldx   #$0001
         leax  d,x
         ldb   ,x
         tstb  
         lbne  L09E5
         ldd   $07,s
         ldx   ,s
         ldb   d,x
         lbeq  L0A93
L09E5    ldd   ,s
         cmpd  #$0100
         lbge  L0A93
         ldd   $07,s
         addd  ,s
         ldx   #$0004
         leax  d,x
         ldb   ,x
         clra  
         pshs  b,a
         ldd   $09,s
         addd  $02,s
         ldx   #$0003
         leax  d,x
         ldb   ,x
         clra  
         tfr   b,a
         clrb  
         addd  ,s++
         pshs  b,a
         leax  $06,s
         pshs  x
         ldd   $0B,s
         addd  $04,s
         lbsr  L1A7F
         leas  $04,s
         leax  <$4C,y
         pshs  x
         ldd   $09,s
         addd  $02,s
         lbsr  L1A82
         leas  $02,s
         cmpd  #$0000
         lbgt  L0A49
         leax  <$4C,y
         pshs  x
         leax  $06,s
         tfr   x,d
         lbsr  L1A82
         leas  $02,s
         cmpd  #$0000
         lble  L0A89
L0A49    ldd   <$2E,y
         bne   L0A82
         leax  <$38,y
         pshs  x
         ldd   $09,s
         addd  $02,s
         lbsr  L0720
         leas  $02,s
         leax  <$42,y
         pshs  x
         leax  $06,s
         tfr   x,d
         lbsr  L0720
         leas  $02,s
         leax  <$42,y
         pshs  x
         leax  <$38,y
         pshs  x
         leax  >L18AA,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $04,s
         lbsr  L1338
L0A82    ldd   #$FFFF
         std   $02,s
         bra   L0A93
L0A89    ldd   ,s
         addd  #$0005
         std   ,s
         lbra  L09BB
L0A93    ldd   $02,s
         beq   L0AAA
         ldd   <$2E,y
         bne   L0AA5
         ldd   <$2C,y
         addd  #$0001
         std   <$2C,y
L0AA5    clrb  
         clra  
         leas  $09,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0AAA    ldd   <$16,y
         lbne  L0B75
         ldd   #$0010
         std   ,s
L0AB6    ldd   $07,s
         addd  ,s
         ldx   #$0002
         leax  d,x
         ldb   ,x
         tstb  
         lbne  L0AE0
         ldd   $07,s
         addd  ,s
         ldx   #$0001
         leax  d,x
         ldb   ,x
         tstb  
         lbne  L0AE0
         ldd   $07,s
         ldx   ,s
         ldb   d,x
         lbeq  L0B75
L0AE0    ldd   ,s
         cmpd  #$0100
         lbge  L0B75
         ldd   <$2E,y
         bne   L0B32
         ldd   $07,s
         addd  ,s
         ldx   #$0004
         leax  d,x
         ldb   ,x
         clra  
         pshs  b,a
         ldd   $09,s
         addd  $02,s
         ldx   #$0003
         leax  d,x
         ldb   ,x
         clra  
         tfr   b,a
         clrb  
         addd  ,s++
         pshs  b,a
         ldd   $09,s
         addd  $02,s
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   $02,y
         pshs  b,a
         ldd   >$0278,y
         lbsr  L0BB1
         leas  $08,s
         std   -$02,s
         beq   L0B6B
         ldd   #$FFFF
         std   $02,s
         bra   L0B6B
L0B32    ldd   $07,s
         addd  ,s
         ldx   #$0004
         leax  d,x
         ldb   ,x
         clra  
         pshs  b,a
         ldd   $09,s
         addd  $02,s
         ldx   #$0003
         leax  d,x
         ldb   ,x
         clra  
         tfr   b,a
         clrb  
         addd  ,s++
         pshs  b,a
         ldd   $09,s
         addd  $02,s
         pshs  b,a
         ldd   #$0001
         pshs  b,a
         ldd   $04,y
         pshs  b,a
         ldd   >$027A,y
         lbsr  L0BB1
         leas  $08,s
L0B6B    ldd   ,s
         addd  #$0005
         std   ,s
         lbra  L0AB6
L0B75    ldd   $02,s
         beq   L0B7E
         clrb  
         clra  
         leas  $09,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0B7E    ldb   [<$07,s]
         andb  #$80
         subb  #$00
         beq   L0B89
         ldb   #$01
L0B89    clra  
         leas  $09,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0B8D    pshs  b,a
L0B8F    ldx   $04,s
         ldb   ,x+
         stx   $04,s
         ldx   ,s
         stb   ,x+
         stx   ,s
         cmpb  #$80
         bcs   L0B8F
         clr   [,s]
         ldd   ,s
         subd  #$0001
         std   ,s
         ldb   [,s]
         andb  #$7F
         stb   [,s]
         leas  $02,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0BB1    pshs  b,a
         leas  <-$1C,s
         ldd   <$26,s
         anda  $08,y
         andb  $09,y
         std   -$02,s
         beq   L0BDB
         ldd   $08,y
         pshs  b,a
         leax  $0C,s
         pshs  x
         ldd   <$28,s
         lbsr  L1A7F
         leas  $04,s
         ldd   <$26,s
         subd  $08,y
         std   <$26,s
         bra   L0BEB
L0BDB    clrb  
         clra  
         pshs  b,a
         leax  $0C,s
         pshs  x
         ldd   <$28,s
         lbsr  L1A7F
         leas  $04,s
L0BEB    leax  ,s
         pshs  x
         leax  $0C,s
         tfr   x,d
         lbsr  L0720
         leas  $02,s
         leax  <$11,s
         pshs  x
         leax  <$11,s
         pshs  x
         leax  <$11,s
         pshs  x
         ldd   $06,y
         pshs  b,a
         leax  <$2E,s
         pshs  x
         leax  <$14,s
         tfr   x,d
         lbsr  L1A85
         leas  $0A,s
         ldd   $0E,y
         beq   L0C59
         leax  ,s
         pshs  x
         leax  $0C,s
         tfr   x,d
         lbsr  L0720
         leas  $02,s
         ldd   <$26,s
         pshs  b,a
         leax  $02,s
         pshs  x
         leax  >L18D0,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $04,s
         ldd   <$11,s
         pshs  b,a
         ldd   <$11,s
         pshs  b,a
         ldd   <$11,s
         pshs  b,a
         leax  >L18F2,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $06,s
L0C59    ldd   $0F,s
         pshs  b,a
         ldd   $0F,s
         pshs  b,a
         ldd   <$26,s
         pshs  b,a
         ldd   <$26,s
         pshs  b,a
         ldd   <$24,s
         lbsr  L1232
         leas  $08,s
         std   -$02,s
         beq   L0C7E
         ldd   #$FFFF
         leas  <$1E,s
         rts   


;---------------------------------------------
;
;---------------------------------------------
L0C7E    ldd   #$0080
         ldx   <$11,s
         beq   L0C8C
L0C86    asra  
         rorb  
         leax  -$01,x
         bne   L0C86
L0C8C    stb   <$1B,s
         ldb   <$1B,s
         cmpb  #$80
         lbeq  L0D31
L0C98    ldb   <$1B,s
         lbeq  L0D17
         ldd   <$26,s
         lbeq  L0D17
         ldd   <$22,s
         lslb  
         rola  
         leax  <$1E,y
         ldb   [d,x]
         andb  <$1B,s
         tstb  
         beq   L0CD8
         ldd   #$0031
         pshs  b,a
         ldd   <$24,s
         lslb  
         rola  
         leax  <$1E,y
         ldb   [d,x]
         andb  <$1D,s
         clra  
         pshs  b,a
         ldd   <$13,s
         pshs  b,a
         ldd   <$13,s
         lbsr  L0E86
         leas  $06,s
L0CD8    ldd   <$2E,y
         bne   L0CFA
         ldd   <$22,s
         lslb  
         rola  
         leax  <$1E,y
         leax  d,x
         pshs  x
         ldd   <$24,s
         lslb  
         rola  
         leax  <$1E,y
         ldb   [d,x]
         orb   <$1D,s
         ldx   [,s++]
         stb   ,x
L0CFA    ldb   <$1B,s
         lda   #$01
         beq   L0D05
L0D01    lsrb  
         deca  
         bne   L0D01
L0D05    stb   <$1B,s
         ldd   <$26,s
         subd  #$0001
         std   <$26,s
         addd  #$0001
         lbra  L0C98
L0D17    ldd   $0F,s
         addd  #$0001
         std   $0F,s
         ldd   <$22,s
         lslb  
         rola  
         leax  <$1E,y
         leax  d,x
         tfr   x,u
         ldd   ,u
         addd  #$0001
         std   ,u
L0D31    ldd   <$26,s
         cmpd  #$0008
         lbcs  L0DD7
         ldd   $0F,s
         cmpd  #$00FF
         ble   L0D72
         clrb  
         clra  
         std   $0F,s
         ldd   $0F,s
         pshs  b,a
         ldd   $0F,s
         addd  #$0001
         std   $0F,s
         pshs  b,a
         ldd   <$26,s
         pshs  b,a
         ldd   <$26,s
         pshs  b,a
         ldd   <$24,s
         lbsr  L1232
         leas  $08,s
         std   -$02,s
         beq   L0D72
         ldd   #$FFFF
         leas  <$1E,s
         rts   


;---------------------------------------------
;
;---------------------------------------------
L0D72    ldd   <$22,s
         lslb  
         rola  
         leax  <$1E,y
         ldb   [d,x]
         tstb  
         beq   L0D9E
         ldd   #$0031
         pshs  b,a
         ldd   <$24,s
         lslb  
         rola  
         leax  <$1E,y
         ldb   [d,x]
         clra  
         pshs  b,a
         ldd   <$13,s
         pshs  b,a
         ldd   <$13,s
         lbsr  L0E86
         leas  $06,s
L0D9E    ldd   <$2E,y
         bne   L0DB1
         ldd   <$22,s
         lslb  
         rola  
         leax  <$1E,y
         leax  d,x
         ldb   #$FF
         stb   [,x]
L0DB1    ldd   <$22,s
         lslb  
         rola  
         leax  <$1E,y
         leax  d,x
         tfr   x,u
         ldd   ,u
         addd  #$0001
         std   ,u
         ldd   $0F,s
         addd  #$0001
         std   $0F,s
         ldd   <$26,s
         subd  #$0008
         std   <$26,s
         lbra  L0D31
L0DD7    ldd   <$26,s
         lbeq  L0E80
         ldd   #$0008
         subd  <$26,s
         pshs  b,a
         ldd   #$00FF
         ldx   ,s++
         beq   L0DF3
L0DED    lslb  
         rola  
         leax  -$01,x
         bne   L0DED
L0DF3    stb   <$1B,s
         ldd   $0F,s
         cmpd  #$00FF
         ble   L0E2C
         clrb  
         clra  
         std   $0F,s
         ldd   $0F,s
         pshs  b,a
         ldd   $0F,s
         addd  #$0001
         std   $0F,s
         pshs  b,a
         ldd   <$26,s
         pshs  b,a
         ldd   <$26,s
         pshs  b,a
         ldd   <$24,s
         lbsr  L1232
         leas  $08,s
         std   -$02,s
         beq   L0E2C
         ldd   #$FFFF
         leas  <$1E,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0E2C    ldd   <$22,s
         lslb  
         rola  
         leax  <$1E,y
         ldb   [d,x]
         andb  <$1B,s
         tstb  
         beq   L0E5E
         ldd   #$0031
         pshs  b,a
         ldd   <$24,s
         lslb  
         rola  
         leax  <$1E,y
         ldb   [d,x]
         andb  <$1D,s
         clra  
         pshs  b,a
         ldd   <$13,s
         pshs  b,a
         ldd   <$13,s
         lbsr  L0E86
         leas  $06,s
L0E5E    ldd   <$2E,y
         bne   L0E80
         ldd   <$22,s
         lslb  
         rola  
         leax  <$1E,y
         leax  d,x
         pshs  x
         ldd   <$24,s
         lslb  
         rola  
         leax  <$1E,y
         ldb   [d,x]
         orb   <$1D,s
         ldx   [,s++]
         stb   ,x
L0E80    clrb  
         clra  
         leas  <$1E,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0E86    pshs  b,a
         leas  -$08,s
         ldb   $0F,s
         stb   $04,s
         clrb  
         clra  
         std   ,s
L0E92    ldb   $04,s
         lbeq  L0FA0
         ldb   $04,s
         andb  #$80
         tstb  
         lbeq  L0F8A
         ldd   ,s
         pshs  b,a
         ldd   $0E,s
         pshs  b,a
         ldd   $0C,s
         pshs  b,a
         ldd   $06,y
         pshs  b,a
         leax  $0D,s
         tfr   x,d
         lbsr  L1A88
         leas  $08,s
         leax  <$38,y
         pshs  x
         leax  $07,s
         tfr   x,d
         lbsr  L0720
         leas  $02,s
         ldd   <$2E,y
         lbne  L0F41
         ldd   <$10,s
         cmpd  #$0031
         bne   L0EF4
         leax  <$38,y
         pshs  x
         leax  >L1916,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
         ldd   <$2A,y
         addd  #$0001
         std   <$2A,y
         lbra  L0F51
L0EF4    ldd   <$10,s
         cmpd  #$0032
         bne   L0F18
         leax  <$38,y
         pshs  x
         leax  >L193B,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
         ldd   <$26,y
         addd  #$0001
         std   <$26,y
         bra   L0F51
L0F18    ldd   <$10,s
         cmpd  #$0033
         bne   L0F51
         ldd   <$12,y
         beq   L0F36
         leax  <$38,y
         pshs  x
         leax  >L1973,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
L0F36    ldd   <$28,y
         addd  #$0001
         std   <$28,y
         bra   L0F51
L0F41    leax  <$38,y
         pshs  x
         leax  >L19AB,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
L0F51    ldd   <$10,y
         beq   L0F8A
         ldd   <$2E,y
         bne   L0F87
         ldd   <$30,y
         bne   L0F8A
         ldd   #$0001
         std   <$30,y
         ldd   $06,y
         pshs  b,a
         leax  $07,s
         pshs  x
         ldd   #$0001
         pshs  b,a
         ldd   $04,y
         pshs  b,a
         ldd   >$027A,y
         lbsr  L0BB1
         leas  $08,s
         clrb  
         clra  
         std   <$30,y
         bra   L0F8A
L0F87    lbsr  L1338
L0F8A    ldd   ,s
         addd  #$0001
         std   ,s
         ldb   $04,s
         lda   #$01
         beq   L0F9B
L0F97    lslb  
         deca  
         bne   L0F97
L0F9B    stb   $04,s
         lbra  L0E92
L0FA0    leas  $0A,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L0FA3    leas  -$0A,s
         clrb  
         clra  
         pshs  b,a
         ldd   #$0100
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   ,y
         lbsr  L1A61
         leas  $06,s
         clrb  
         clra  
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   $02,y
         pshs  b,a
         ldd   >$0278,y
         lbsr  L1232
         leas  $08,s
         leax  >$0178,y
         tfr   x,d
         lbsr  L0749
         clrb  
         clra  
         std   $04,s
         std   $06,s
         clrb  
         clra  
         std   ,s
L0FE5    ldd   ,s
         cmpd  $0A,y
         lbcc  L10E8
         ldd   $06,s
         leax  >$0178,y
         ldb   d,x
         eorb  [<$1E,y]
         stb   $08,s
         tstb  
         lbeq  L108D
         ldd   ,s
         addd  #$0001
         cmpd  $0A,y
         bne   L102E
         ldd   $0C,y
         anda  #$00
         andb  #$07
         pshs  b,a
         ldd   #$0008
         subd  ,s++
         pshs  b,a
         ldd   #$00FF
         ldx   ,s++
         beq   L1026
L1020    lslb  
         rola  
         leax  -$01,x
         bne   L1020
L1026    pshs  b
         ldb   $09,s
         andb  ,s+
         stb   $08,s
L102E    ldd   $06,s
         leax  >$0178,y
         ldb   d,x
         andb  $08,s
         stb   $09,s
         tstb  
         beq   L1060
         ldd   #$0033
         pshs  b,a
         ldb   $0B,s
         clra  
         pshs  b,a
         ldd   $08,s
         pshs  b,a
         ldd   #$0100
         lbsr  L1A97
         pshs  b,a
         ldd   $0A,s
         tfr   a,b
         sex   
         addd  <$1A,y
         lbsr  L0E86
         leas  $06,s
L1060    ldb   $08,s
         andb  [<$1E,y]
         stb   $09,s
         tstb  
         beq   L108D
         ldd   #$0032
         pshs  b,a
         ldb   $0B,s
         clra  
         pshs  b,a
         ldd   $08,s
         pshs  b,a
         ldd   #$0100
         lbsr  L1A97
         pshs  b,a
         ldd   $0A,s
         tfr   a,b
         sex   
         addd  <$1A,y
         lbsr  L0E86
         leas  $06,s
L108D    ldd   <$1E,y
         addd  #$0001
         std   <$1E,y
         ldd   $04,s
         addd  #$0001
         std   $04,s
         cmpd  #$1000
         blt   L10C4
         clrb  
         clra  
         std   $04,s
         ldd   $04,s
         pshs  b,a
         ldd   <$1A,y
         addd  #$0010
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   $02,y
         pshs  b,a
         ldd   >$0278,y
         lbsr  L1232
         leas  $08,s
L10C4    ldd   $06,s
         addd  #$0001
         std   $06,s
         cmpd  #$0100
         blt   L10DE
         clrb  
         clra  
         std   $06,s
         leax  >$0178,y
         tfr   x,d
         lbsr  L0749
L10DE    ldd   ,s
         addd  #$0001
         std   ,s
         lbra  L0FE5
L10E8    leas  $0A,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L10EB    pshs  b,a
         leas  <-$18,s
         ldd   <$20,s
         pshs  b,a
         lbsr  L1A8B
         pshs  b,a
         leax  >L19C0,pcr
         pshs  x
         leax  $0A,s
         tfr   x,d
         lbsr  L1A79
         leas  $06,s
         leax  $04,s
         pshs  x
         ldd   <$1E,s
         lbsr  L1378
         leas  $02,s
         ldb   [<$1C,s]
         cmpb  #$2F
         bne   L1132
         ldd   #$0003
         pshs  b,a
         ldd   <$1E,s
         lbsr  L1A8E
         leas  $02,s
         std   [<$1E,s]
         cmpd  #$FFFF
         bne   L1149
L1132    ldd   <$1C,s
         pshs  b,a
         leax  >L19CE,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $04,s
         ldd   <u0002
         lbsr  L1A58
L1149    clrb  
         clra  
         std   ,s
L114D    ldd   ,s
         cmpd  #$1000
         bge   L1168
         ldd   ,s
         addd  #$0001
         std   ,s
         subd  #$0001
         ldx   <$18,s
         leax  d,x
         clr   ,x
         bra   L114D
L1168    ldd   $0A,y
         tfr   a,b
         clra  
         lsra  
         rorb  
         lsra  
         rorb  
         lsra  
         rorb  
         lsra  
         rorb  
         std   $02,s
         ldd   $0A,y
         pshs  b,a
         ldd   #$1000
         lbsr  L1A9A
         std   -$02,s
         beq   L118C
         ldd   $02,s
         addd  #$0001
         std   $02,s
L118C    clrb  
         clra  
         pshs  b,a
         ldd   $04,s
         lslb  
         rola  
         lslb  
         rola  
         lslb  
         rola  
         lslb  
         rola  
         tfr   b,a
         clrb  
         addd  #$FFFF
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   [<$24,s]
         lbsr  L1A61
         leas  $06,s
         ldd   #$0001
         pshs  b,a
         ldd   <$1A,s
         pshs  b,a
         ldd   [<$22,s]
         lbsr  L1A91
         leas  $04,s
         cmpd  #$FFFF
         bne   L11CB
         ldd   <u0002
         lbsr  L1A58
L11CB    clrb  
         clra  
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   [<$24,s]
         lbsr  L1A61
         leas  $06,s
         ldd   #$0001
         std   ,s
L11E4    ldd   ,s
         cmpd  $02,s
         bgt   L1211
         ldd   #$1000
         pshs  b,a
         ldd   <$1A,s
         pshs  b,a
         ldd   [<$22,s]
         lbsr  L1A91
         leas  $04,s
         cmpd  #$FFFF
         bne   L1208
         ldd   <u0002
         lbsr  L1A58
L1208    ldd   ,s
         addd  #$0001
         std   ,s
         bra   L11E4
L1211    ldd   <$20,s
         lslb  
         rola  
         leax  <$1A,y
         leax  d,x
         clrb  
         clra  
         std   ,x
         ldd   <$20,s
         lslb  
         rola  
         leax  <$1E,y
         leax  d,x
         ldd   <$18,s
         std   ,x
         leas  <$1A,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L1232    pshs  b,a
         ldd   $08,s
         cmpd  <$32,y
         blt   L125B
         ldd   $0A,s
         cmpd  <$34,y
         blt   L125B
         ldd   <$2E,y
         bne   L1255
         leax  >L19F1,pcr
         tfr   x,d
         lbsr  L1A64
         lbsr  L1338
L1255    ldd   #$FFFF
         leas  $02,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L125B    ldd   $06,s
         lslb  
         rola  
         leax  <$1A,y
         ldd   d,x
         cmpd  $08,s
         lbgt  L127E
         ldd   $06,s
         lslb  
         rola  
         leax  <$1A,y
         ldd   d,x
         addd  #$000F
         cmpd  $08,s
         lbge  L1315
L127E    clrb  
         clra  
         pshs  b,a
         ldd   $08,s
         lslb  
         rola  
         leax  <$1A,y
         ldd   d,x
         tfr   b,a
         clrb  
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   $0A,s
         lbsr  L1A61
         leas  $06,s
         ldd   #$1000
         pshs  b,a
         ldd   $02,s
         pshs  b,a
         ldd   $08,s
         lbsr  L1A91
         leas  $04,s
         cmpd  #$FFFF
         bne   L12B6
         ldd   <u0002
         lbsr  L1A58
L12B6    ldd   $06,s
         lslb  
         rola  
         leax  <$1A,y
         leax  d,x
         pshs  x
         ldd   $0A,s
         asra  
         rorb  
         asra  
         rorb  
         asra  
         rorb  
         asra  
         rorb  
         lslb  
         rola  
         lslb  
         rola  
         lslb  
         rola  
         lslb  
         rola  
         std   [,s++]
         ldd   $08,s
         cmpd  #$FFFF
         beq   L1315
         clrb  
         clra  
         pshs  b,a
         ldd   $08,s
         lslb  
         rola  
         leax  <$1A,y
         ldd   d,x
         tfr   b,a
         clrb  
         pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   $0A,s
         lbsr  L1A61
         leas  $06,s
         ldd   #$1000
         pshs  b,a
         ldd   $02,s
         pshs  b,a
         ldd   $08,s
         lbsr  L1A70
         leas  $04,s
         cmpd  #$FFFF
         bne   L1315
         ldd   <u0002
         lbsr  L1A58
L1315    ldd   $06,s
         lslb  
         rola  
         leax  <$1E,y
         leax  d,x
         pshs  x
         ldd   $0A,s
         pshs  b,a
         ldd   #$0010
         lbsr  L1A97
         tfr   b,a
         clrb  
         addd  $02,s
         addd  $0C,s
         std   [,s++]
         clrb  
         clra  
         leas  $02,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L1338    leas  -$02,s
         clrb  
         clra  
         std   ,s
L133E    ldd   ,s
         cmpd  <$18,y
         bge   L1366
         ldd   ,s
         lslb  
         rola  
         leax  >$0108,y
         ldd   d,x
         pshs  b,a
         leax  >L1A14,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $02,s
         ldd   ,s
         addd  #$0001
         std   ,s
         bra   L133E
L1366    leax  >$0158,y
         pshs  x
         leax  >L1A18,pcr
         tfr   x,d
         lbsr  L1A64
         leas  $04,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L1378    pshs  b,a
         leas  -$04,s
L137C    ldx   $04,s
         ldb   ,x+
         stx   $04,s
         tstb  
         bne   L137C
         ldd   $04,s
         subd  #$0001
         std   $04,s
L138C    ldb   [<$08,s]
         ldx   $04,s
         stb   ,x+
         stx   $04,s
         ldx   $08,s
         ldb   ,x+
         stx   $08,s
         tstb  
         bne   L138C
         leas  $06,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L13A1    leas  -$02,s
         ldd   #$0081
         pshs  b,a
         leax  >L1A1C,pcr
         tfr   x,d
         lbsr  L1A5E
         leas  $02,s
         std   ,s
         cmpd  #$FFFF
         bne   L13DD
         leax  >L1A1E,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $02,s
         leax  >L1A41,pcr
         pshs  x
         ldd   <u000E
         lbsr  L1A55
         leas  $02,s
         lbsr  L1338
         ldd   <u0002
         lbsr  L1A58
L13DD    ldd   ,s
         leas  $02,s
         rts   
     
;--------------------------------------------------------------
;                    STRINGS DEFINITION
;--------------------------------------------------------------

L13E2    fcc   "/DD"
         fcb   0
L13E6    fcc   "/DD"
         fcb   0
L13EA    fcc   "dcheck: -w= requires pathlist argument"
         fcb   $0a,$00
L1412    fcc   "dcheck: illegal option '%c'"
         fcb   $0a,$00
L142F    fcc   "dcheck: no device specified"
         fcb   $0a,$00
L144C    fcc   "dcheck: cannot open %s"
         fcb   $0a,$00
L1464    fcc   "Volume - '%s' on device %s"
         fcb   $0a,$00
L1480    fcc   "$%04x bytes in allocation map"
         fcb   $0a,$00
L149F    fcc   "1 sector per cluster"
         fcb   $0a,$00
L14B5    fcc   "%d sectors per cluster"
         fcb   $0a,$00
L14CD    fcc   "%s total sectors on media"
         fcb   $0a,$00
L14E8    fcc   "Sector %s is start of root directory FD"
         fcb   $0a,$00
L1511    fcc   "dcheck: cannot chd to root directory"
         fcb   $00
L1536    fcc   "No memory available for bitmap buffer (%dK req.)"
         fcb   $0a,$00
L1568    fcc   "$%04x sectors used for id, allocation map and root directory"
         fcb   $0a,$00
L15A6    fcc   "Building allocation map work file..."
         fcb   $0a,$00
L15CC    fcc   "Checking allocation map file..."
         fcb   $0a,$00
L15ED    fcb   $0a
L15EE    fcc   "Pathlists for questionable clusters:"
         fcb   $0a,$00
L1614    fcb   $0a,$00
L1616    fcc   "%d previously allocated clusters found"
         fcb   $00
L163D    fcc   's'
         fcb   $00
L163F    fcb   $0a,$00
L1641    fcc   "%d cluster"
         fcb   $00
L164C    fcb   $73,$00
L164E    fcc   " in file structure but not in allocation map"
         fcb   $0a,$00
L167C    fcc   "%d cluster"
         fcb   $00
L1687    fcb   $73,$00
L1689    fcc   " in allocation map but not in file structure"
L16B5    fcb   $0A,00
L16B7    fcc   "%d bad file descriptor sector"
         fcb   $00
L16D5    fcb   $73,$00
L16D7    fcb   $0a,$00
L16D9    fcb   $0a
L16DA    fcc   "'%s' file structure is "
         fcb   0
L16F2    fcc   "not "
         fcb   0
L16F7    fcc   "intact"
         fcb   $0a,$00
L16FF    fcc   "1 directory"
         fcb   $0a,$00
L170C    fcc   "%d directories"
         fcb   $0a,$00
L171C    fcc   "1 file"
         fcb   $0a,$00
L1724    fcc   "%d files"
         fcb   $0a,$00
L172E    fcc   "Usage: dcheck [-opts] device_name "
         fcb   $0a
         fcc   "  -w = pathlist to directory for work files"
         fcb   $0a
         fcc   "  -p = print pathlists for questionable clusters"
         fcb   $0a
         fcc   "  -m = save allocation map work files"
         fcb   $0a
         fcc   "  -b = suppress listing of unused clusters"
         fcb   $0a,$00
L1800    fcc   "  -s = display count of files and directories only"
         fcb   $0a,$00
L1834    fcc   "$%02x%04x"
         fcb   $00
L183E    fcc   "dcheck: fatal read error"
         fcb   $0a,$00
L1858    fcc   "dcheck: directories nested too deep (%d)"
         fcb   $0a,$00
L1882    fcb   $20,$20,$00
L1885    fcc   "%s"
         fcb   $00
L1888    fcc   "dcheck: cannot chgdir to '%s'"
         fcb   $0a,$00
L18A7    fcc   ".."
         fcb   $00
L18AA    fcc   "*** Bad FD segment (%s-%s) for file: "
         fcb   $00
L18D0    fcc   "--> setbits: Start=%s Count=$%04x"
         fcb   $00
L18F2    fcc   " Sector=%02x Byte=%02x Bit=%1x <--"
         fcb   $0a,$00
L1916    fcc   "Cluster %s was previously allocated"
         fcb   $0a,$00
L193B    fcc   "Cluster %s in file structure but not in allocation map"
         fcb   $0a,$00
L1973    fcc   "Cluster %s in allocation map but not in file structure"
         fcb   $0a,$00
L19Ab    fcc   "Cluster %s in path: "
         fcb   $00
L19C0    fcc   "/dcheck%02x%d"
         fcb   $00
L19CE    fcc   "dcheck: cannot open workfile '%s'"
         fcb   $0a,$00
L19F1    fcc   "*** Segment out of range in file: "
         fcb   $00
L1A14    fcc   "%s/"
         fcb   $00
L1A18    fcc   "%s"
         fcb   $0a,$00
L1A1C    fcb   $2E,$00
L1A1E    fcc   "dcheck: cannot open '.' directory"
         fcb   $0a,$00
L1A41    fcc   "Pathlist is: "
         fcb   $00

;--------------------------------------------------------------
;
;--------------------------------------------------------------
L1A4F    lbra  L248E
L1A52    lbra  L245B
L1A55    lbra  L1B5F
L1A58    lbra  L1B2D
L1A5B    lbra  L24AA
L1A5E    lbra  L26BD
L1A61    lbra  L276D
L1A64    lbra  L1B94
L1A67    lbra  L25D1
L1A6A    lbra  L22BB
L1A6D    lbra  L275C
L1A70    lbra  L26D4
L1A73    lbra  L26CA
L1A76    lbra  L27A1
L1A79    lbra  L1B48
L1A7C    lbra  L26A2
L1A7F    lbra  L266D
L1A82    lbra  L2682
L1A85    lbra  L25E3
L1A88    lbra  L2634
L1A8B    lbra  L27AE
L1A8E    lbra  L272F
L1A91    lbra  L26E9
L1A94    lbra  L2531
L1A97    lbra  L2509
L1A9A    lbra  L2515

;--------------------------------------------------------------
;
;--------------------------------------------------------------
start    equ   *
         clrb  
         stb   ,u++
L1AA0    lda   ,x+
         cmpa  #$0D
         beq   L1ABE
         bsr   L1B26
         beq   L1AA0
         leax  -$01,x
         stx   ,u++
         inc   <u0000
L1AB0    lda   ,x+
         cmpa  #$0D
         beq   L1ABE
         bsr   L1B26
         bne   L1AB0
         clr   -$01,x
         bra   L1AA0
L1ABE    clr   ,-x
         lda   <u0000
         sta   <u0001
         clra  
         clrb  
         pshs  b,a
L1AC8    tst   <u0000
         beq   L1AD4
         dec   <u0000
         ldd   ,--u
         pshs  b,a
         bra   L1AC8
L1AD4    pshs  x
         leax  ,s
         pshs  x
         leax  -$02,s
         pshs  x
         leax  ,u
L1AE0    clr   ,x+
         cmpx  ,s
         bcs   L1AE0
         puls  x
         leau  -u0002,u
         leax  <u0010,u
         stx   <u000A
         stx   <u0008
         leax  <u001B,u
         stx   <u000C
         stx   <u0018
         leax  <u0026,u
         stx   <u000E
         stx   <u0023
         lda   #$05
         sta   <u0016
         lda   #$06
         sta   <u0021
         lda   #$06
         sta   <u002C
         clra  
         sta   <u0017
         inca  
         sta   <u0022
         inca  
         sta   <u002D
         ldd   ,u
         addd  #$0001
         sty   <u0000
         leay  >u00FD,u
         lbsr  L0014
         lbra  L1B2D
L1B26    cmpa  #$20
         beq   L1B2C
         cmpa  #$09
L1B2C    rts   
L1B2D    pshs  b,a
L1B2F    ldd   <u0008
         beq   L1B3A
         ldd   <u0008
         lbsr  L1B42
         bra   L1B2F
L1B3A    ldd   ,s
         lbsr  L1B45
         leas  $02,s
         rts   
L1B42    lbra  L1E93

;---------------------------------------------
;
;---------------------------------------------
L1B45    lbra  L27AB

;---------------------------------------------
;
;---------------------------------------------
L1B48    pshs  b,a
         leax  $06,s
         pshs  x
         ldd   $06,s
         pshs  b,a
         ldd   $04,s
         lbsr  L1B5C
         leas  $04,s
         leas  $02,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L1B5C    lbra  L1BC1
L1B5F    pshs  b,a
         leas  >-$0100,s
         leax  >$0106,s
         pshs  x
         ldd   >$0106,s
         pshs  b,a
         leax  $04,s
         tfr   x,d
         lbsr  L1B8E
         leas  $04,s
         ldd   >$0100,s
         pshs  b,a
         leax  $02,s
         tfr   x,d
         lbsr  L1B91
         leas  $02,s
         leas  >$0102,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L1B8E    lbra  L1BC1
L1B91    lbra  L1FEC
L1B94    pshs  b,a
         leas  >-$0100,s
         leax  >$0104,s
         pshs  x
         ldd   >$0102,s
         pshs  b,a
         leax  $04,s
         tfr   x,d
         lbsr  L1BBB
         leas  $04,s
         leax  ,s
         tfr   x,d
         lbsr  L1BBE
         leas  >$0102,s
         rts   

;---------------------------------------------
;
;---------------------------------------------
L1BBB    lbra  L1BC1
L1BBE    lbra  L1F87
L1BC1    pshs  b,a
         leas  >-$010D,s
L1BC7    ldx   >$0111,s
         ldb   ,x+
         stx   >$0111,s
         stb   ,s
         tstb  
         lbeq  L1DF4
         ldb   ,s
         cmpb  #'%'             ; $25
         beq   L1BF4
         ldd   >$010D,s
         addd  #$0001
         std   >$010D,s
         subd  #$0001
         pshs  b,a
         ldb   $02,s
         stb   [,s++]
         bra   L1BC7

L1BF4    leax  $0D,s
         stx   $09,s
         ldd   #$0006
         std   $04,s
         clr   $07,s
         ldb   #$20
         stb   $08,s
         clr   $06,s
         ldb   [>$0111,s]
         cmpb  #'-'             ; $2D
         bne   L1C1C
         ldd   >$0111,s
         addd  #$0001
         std   >$0111,s
         ldb   #$01
         stb   $07,s
L1C1C    ldb   [>$0111,s]
         clra  
         lbsr  L1E81
         addd  #$0000
         beq   L1C42
         ldb   [>$0111,s]
         cmpb  #$30
         bne   L1C35
         ldb   #$30
         stb   $08,s
L1C35    leax  >$0111,s
         tfr   x,d
         lbsr  L1E84
         std   $02,s
         bra   L1C46
L1C42    clrb  
         clra  
         std   $02,s
L1C46    ldb   [>$0111,s]
         cmpb  #'.'            ; $2E
         bne   L1C68
         ldd   >$0111,s
         addd  #$0001
         std   >$0111,s
         leax  >$0111,s
         tfr   x,d
         lbsr  L1E84
         std   $04,s
         ldb   #$01
         stb   $06,s
L1C68    ldx   >$0111,s
         ldb   ,x+
         stx   >$0111,s
         stb   ,s
         ldb   ,s
         clra  
         lbsr  L1E87
         cmpb  #'d'          ; $64
         beq   L1C9D
         cmpb  #'u'          ; $75
         beq   L1CCA
         cmpb  #'x'          ; $78
         lbeq  L1CD0
         cmpb  #'o'          ; $6F
         lbeq  L1CD6
         cmpb  #'c'          ; $63
         lbeq  L1D00
         cmpb  #'s'          ; $73
         lbeq  L1D22
         lbra  L1DDD

; Treat printf %d
;---------------------------------------------
L1C9D    ldd   [>$0113,s]
         cmpd  #$0000
         bge   L1CCA
         ldd   $09,s
         addd  #$0001
         std   $09,s
         subd  #$0001
         pshs  b,a
         ldb   #$2D
         stb   [,s++]
         ldd   [>$0113,s]
         nega  
         negb  
         sbca  #$00
         std   [>$0113,s]
         ldd   $02,s
         subd  #$0001
         std   $02,s

; Treat printf %u
;---------------------------------------------
L1CCA    ldb   #$0A
         stb   $01,s
         bra   L1CDA

; Treat printf %x
;---------------------------------------------
L1CD0    ldb   #$10
         stb   $01,s
         bra   L1CDA

; Treat printf %o
;---------------------------------------------
L1CD6    ldb   #$08
         stb   $01,s
L1CDA    ldb   $01,s
         clra  
         pshs  b,a
         ldx   >$0115,s
         ldd   ,x++
         stx   >$0115,s
         pshs  b,a
         leax  $0D,s
         tfr   x,d
         lbsr  L1DFD
         leas  $04,s
         clra  
         pshs  b,a
         ldd   $04,s
         subd  ,s++
         std   $02,s
         lbra  L1D64

; Treat printf %c
;---------------------------------------------
L1D00    ldd   $09,s
         addd  #$0001
         std   $09,s
         subd  #$0001
         pshs  b,a
         ldx   >$0115,s
         ldd   ,x++
         stx   >$0115,s
         stb   [,s++]
         ldd   $02,s
         subd  #$0001
         std   $02,s
         lbra  L1D64

; Treat printf %s
;---------------------------------------------
L1D22    ldb   $06,s
         bne   L1D2B
         ldd   #$0100
         std   $04,s
L1D2B    ldx   >$0113,s
         ldd   ,x++
         stx   >$0113,s
         std   $0B,s
L1D37    ldb   [<$0B,s]
         beq   L1D64
         ldd   $04,s
         beq   L1D64
         ldd   $09,s
         addd  #$0001
         std   $09,s
         subd  #$0001
         pshs  b,a
         ldx   $0D,s
         ldb   ,x+
         stx   $0D,s
         stb   [,s++]
         ldd   $04,s
         subd  #$0001
         std   $04,s
         ldd   $02,s
         subd  #$0001
         std   $02,s
         bra   L1D37
L1D64    clr   [<$09,s]
         leax  $0D,s
         stx   $09,s
         ldb   $07,s
         bne   L1D95
L1D6F    ldd   $02,s
         subd  #$0001
         std   $02,s
         addd  #$0001
         cmpd  #$0000
         ble   L1D95
         ldd   >$010D,s
         addd  #$0001
         std   >$010D,s
         subd  #$0001
         pshs  b,a
         ldb   $0A,s
         stb   [,s++]
         bra   L1D6F
L1D95    ldx   $09,s
         ldb   ,x+
         stx   $09,s
         stb   [>$010D,s]
         tstb  
         beq   L1DAF
         ldd   >$010D,s
         addd  #$0001
         std   >$010D,s
         bra   L1D95
L1DAF    ldb   $07,s
         lbeq  L1BC7
L1DB5    ldd   $02,s
         subd  #$0001
         std   $02,s
         addd  #$0001
         cmpd  #$0000
         lble  L1BC7
         ldd   >$010D,s
         addd  #$0001
         std   >$010D,s
         subd  #$0001
         pshs  b,a
         ldb   $0A,s
         stb   [,s++]
         bra   L1DB5
L1DDD    ldd   >$010D,s
         addd  #$0001
         std   >$010D,s
         subd  #$0001
         pshs  b,a
         ldb   $02,s
         stb   [,s++]
         lbra  L1BC7
L1DF4    clr   [>$010D,s]
         leas  >$010F,s
         rts   
L1DFD    pshs  b,a
         leas  -$03,s
         ldd   [<$03,s]
         std   ,s
         ldd   $07,s
         pshs  b,a
         ldd   $0B,s
         lbsr  L1E8D
         stb   $02,s
         ldd   [<$03,s]
         addd  #$0001
         std   [<$03,s]
         subd  #$0001
         pshs  b,a
         ldb   $04,s
         cmpb  #$0A
         bcc   L1E2B
         ldb   $04,s
         addb  #$30
         bra   L1E2F
L1E2B    ldb   $04,s
         addb  #$37
L1E2F    stb   [,s++]
L1E31    ldd   $07,s
         pshs  b,a
         ldd   $0B,s
         lbsr  L1E90
         std   $07,s
         addd  #$0000
         beq   L1E6E
         ldd   $07,s
         pshs  b,a
         ldd   $0B,s
         lbsr  L1E8D
         stb   $02,s
         ldd   [<$03,s]
         addd  #$0001
         std   [<$03,s]
         subd  #$0001
         pshs  b,a
         ldb   $04,s
         cmpb  #$0A
         bcc   L1E66
         ldb   $04,s
         addb  #$30
         bra   L1E6A
L1E66    ldb   $04,s
         addb  #$37
L1E6A    stb   [,s++]
         bra   L1E31
L1E6E    ldx   [<$03,s]
         clr   ,x
         ldd   ,s
         lbsr  L1E8A
         ldd   [<$03,s]
         subd  ,s
         clra  
         leas  $05,s
         rts   
L1E81    lbra  L2444
L1E84    lbra  L1F48
L1E87    lbra  L245B
L1E8A    lbra  L1F9A
L1E8D    lbra  L2515
L1E90    lbra  L2531
L1E93    pshs  b,a
         leas  -$05,s
         clrb  
         clra  
         std   $02,s
         ldd   <u0008
         std   ,s
L1E9F    ldd   ,s
         lbeq  L1F02
         ldd   ,s
         cmpd  $05,s
         lbne  L1EF5
         ldd   $02,s
         beq   L1EC1
         ldd   $02,s
         addd  #$0008
         pshs  b,a
         ldx   $02,s
         ldd   $08,x
         std   [,s++]
         bra   L1EC7
L1EC1    ldx   ,s
         ldd   $08,x
         std   <u0008
L1EC7    clr   $04,s
         ldd   $05,s
         lbsr  L1F3F
         ldx   $05,s
         ldb   $07,x
         clra  
         lbsr  L1F42
         cmpd  #$FFFF
         bne   L1EE0
         ldb   #$01
         stb   $04,s
L1EE0    ldd   $05,s
         lbsr  L1F08
         ldb   $04,s
         beq   L1EEF
         ldd   #$FFFF
         leas  $07,s
         rts   
L1EEF    ldd   #$0001
         leas  $07,s
         rts   
L1EF5    ldd   ,s
         std   $02,s
         ldx   ,s
         ldd   $08,x
         std   ,s
         lbra  L1E9F
L1F02    ldd   #$FFFF
         leas  $07,s
         rts   
L1F08    pshs  b,a
         ldd   ,s
         addd  #$0006
         tfr   d,x
         ldb   ,x
         andb  #$08
         tstb  
         beq   L1F1F
         ldx   ,s
         ldd   $04,x
         lbsr  L1F45
L1F1F    ldd   ,s
         cmpd  <u000A
         beq   L1F34
         ldd   ,s
         cmpd  <u000C
         beq   L1F34
         ldd   ,s
         cmpd  <u000E
         bne   L1F37
L1F34    leas  $02,s
         rts   
L1F37    ldd   ,s
         lbsr  L1F45
         leas  $02,s
         rts   
L1F3F    lbra  L22A1
L1F42    lbra  L26CA
L1F45    lbra  L238D
L1F48    pshs  b,a
         leas  -$02,s
         clrb  
         clra  
         std   ,s
L1F50    ldx   [<$02,s]
         ldb   ,x
         clra  
         lbsr  L1F81
         addd  #$0000
         beq   L1F7C
         ldx   [<$02,s]
         ldb   ,x+
         stx   [<$02,s]
         clra  
         pshs  b,a
         ldd   $02,s
         pshs  b,a
         ldd   #$000A
         lbsr  L1F84
         addd  ,s++
         subd  #$0030
         std   ,s
         bra   L1F50
L1F7C    ldd   ,s
         leas  $04,s
         rts   
L1F81    lbra  L2444
L1F84    lbra  L24C6
L1F87    pshs  b,a
         ldd   <u000C
         pshs  b,a
         ldd   $02,s
         lbsr  L1F97
         leas  $02,s
         leas  $02,s
         rts   
L1F97    lbra  L1FEC
L1F9A    pshs  b,a
         leas  -$05,s
         clrb  
         clra  
         std   ,s
         ldd   $05,s
         lbsr  L1FE9
         subd  #$0001
         std   $02,s
L1FAC    ldd   ,s
         cmpd  $02,s
         lbge  L1FE6
         ldd   ,s
         ldx   $05,s
         ldb   d,x
         stb   $04,s
         ldd   $05,s
         addd  ,s
         pshs  b,a
         ldd   $04,s
         ldx   $07,s
         ldb   d,x
         stb   [,s++]
         ldd   $05,s
         addd  $02,s
         pshs  b,a
         ldb   $06,s
         stb   [,s++]
         ldd   ,s
         addd  #$0001
         std   ,s
         ldd   $02,s
         subd  #$0001
         std   $02,s
         lbra  L1FAC
L1FE6    leas  $07,s
         rts   
L1FE9    lbra  L24AA
L1FEC    pshs  b,a
         leas  >-$0107,s
         ldd   >$010B,s
         lbsr  L20DA
         ldd   >$0107,s
         std   $01,s
         leax  $07,s
         stx   $03,s
L2003    ldb   [<$01,s]
         lbeq  L209A
         ldb   [<$01,s]
         cmpb  #$0A
         lbne  L2042
         ldb   #$0D
         stb   [<$03,s]
         ldd   #$0100
         pshs  b,a
         leax  $09,s
         pshs  x
         ldx   >$010F,s
         ldb   $07,x
         clra  
         lbsr  L20DD
         leas  $04,s
         cmpd  #$FFFF
         bne   L203B
         ldd   #$FFFF
         leas  >$0109,s
         rts   
L203B    leax  $07,s
         stx   $03,s
         lbra  L2090
L2042    ldb   [<$01,s]
         cmpb  #$09
         bne   L207F
         ldd   $03,s
         leax  $07,s
         pshs  x
         subd  ,s++
         pshs  b,a
         ldd   #$0008
         lbsr  L20E6
         pshs  b,a
         ldd   #$0008
         subd  ,s++
         std   $05,s
L2062    ldd   $05,s
         beq   L2090
         ldd   $03,s
         addd  #$0001
         std   $03,s
         subd  #$0001
         pshs  b,a
         ldb   #$20
         stb   [,s++]
         ldd   $05,s
         subd  #$0001
         std   $05,s
         bra   L2062
L207F    ldd   $03,s
         addd  #$0001
         std   $03,s
         subd  #$0001
         pshs  b,a
         ldb   [<$03,s]
         stb   [,s++]
L2090    ldd   $01,s
         addd  #$0001
         std   $01,s
         lbra  L2003
L209A    clr   [<$03,s]
         ldd   $03,s
         leax  $07,s
         pshs  x
         cmpd  ,s++
         lbeq  L20D1
         leax  $07,s
         tfr   x,d
         lbsr  L20E3
         pshs  b,a
         leax  $09,s
         pshs  x
         ldx   >$010F,s
         ldb   $07,x
         clra  
         lbsr  L20E0
         leas  $04,s
         cmpd  #$FFFF
         bne   L20D1
         ldd   #$FFFF
         leas  >$0109,s
         rts   
L20D1    ldd   >$0107,s
         leas  >$0109,s
         rts   
L20DA    lbra  L22A1
L20DD    lbra  L2713
L20E0    lbra  L26E9
L20E3    lbra  L24AA
L20E6    lbra  L2509
         pshs  b,a
         ldd   <u000C
         pshs  b,a
         ldd   $02,s
         lbsr  L20F9
         leas  $02,s
         leas  $02,s
         rts   
L20F9    pshs  b,a
         ldd   $04,s
         addd  #$0002
         tfr   d,x
         ldd   ,x
         subd  #$0001
         std   ,x
         cmpd  #$0000
         blt   L2124
         ldd   [<$04,s]
         addd  #$0001
         std   [<$04,s]
         subd  #$0001
         pshs  b,a
         ldb   $03,s
         stb   [,s++]
         clra  
         bra   L2135
L2124    ldd   #$0001
         pshs  b,a
         ldd   $06,s
         pshs  b,a
         ldb   $05,s
         clra  
         lbsr  L2148
         leas  $04,s
L2135    leas  $02,s
         rts   
         pshs  b,a
         ldd   <u000E
         pshs  b,a
         ldd   $02,s
         lbsr  L20F9
         leas  $02,s
         leas  $02,s
         rts   
L2148    pshs  b,a
         leas  -$03,s
         ldb   $04,s
         stb   $02,s
         ldd   $07,s
         addd  #$0006
         tfr   d,x
         ldb   ,x
         andb  #$02
         cmpb  #$00
         beq   L216E
         ldd   $07,s
         addd  #$0006
         tfr   d,x
         ldb   ,x
         andb  #$30
         cmpb  #$00
         beq   L2174
L216E    ldd   #$FFFF
         leas  $05,s
         rts   
L2174    ldb   $0A,s
         beq   L217D
         ldd   #$0001
         bra   L217F
L217D    clrb  
         clra  
L217F    pshs  b,a
         ldd   $09,s
         addd  #$0002
         pshs  b,a
         ldd   #$0100
         subd  [,s++]
         subd  ,s++
         std   ,s
         ldd   $07,s
         addd  #$0006
         tfr   d,x
         ldb   ,x
         andb  #$04
         cmpb  #$00
         lbne  L21D0
         ldx   $07,s
         ldd   $04,x
         bne   L21D0
         ldd   $07,s
         addd  #$0004
         pshs  b,a
         ldd   #$0100
         lbsr  L22B5
         std   [,s++]
         cmpd  #$0000
         bne   L21CC
         ldd   $07,s
         addd  #$0006
         tfr   d,u
         ldb   ,u
         orb   #$04
         stb   ,u
         bra   L21D0
L21CC    clrb  
         clra  
         std   ,s
L21D0    ldd   $07,s
         addd  #$0006
         tfr   d,x
         ldb   ,x
         andb  #$04
         tstb  
         lbeq  L2214
         ldb   $0A,s
         lbeq  L2245
         ldd   #$0001
         pshs  b,a
         leax  $04,s
         pshs  x
         ldx   $0B,s
         ldb   $07,x
         clra  
         lbsr  L22B8
         leas  $04,s
         cmpd  #$FFFF
         lbne  L2245
         ldd   $07,s
         addd  #$0006
         tfr   d,u
         ldb   ,u
         orb   #$20
         stb   ,u
         ldd   #$FFFF
         leas  $05,s
         rts   
L2214    ldd   ,s
         beq   L2245
         ldd   ,s
         pshs  b,a
         ldx   $09,s
         ldd   $04,x
         pshs  b,a
         ldx   $0B,s
         ldb   $07,x
         clra  
         lbsr  L22B8
         leas  $04,s
         cmpd  #$FFFF
         bne   L2245
         ldd   $07,s
         addd  #$0006
         tfr   d,u
         ldb   ,u
         orb   #$20
         stb   ,u
         ldd   #$FFFF
         leas  $05,s
         rts   
L2245    ldd   $07,s
         addd  #$0002
         pshs  b,a
         ldd   $09,s
         addd  #$0006
         tfr   d,x
         ldb   ,x
         andb  #$04
         tstb  
         beq   L225E
         clrb  
         clra  
         bra   L2261
L225E    ldd   #$0100
L2261    std   [,s++]
         ldx   $07,s
         ldd   $04,x
         std   [<$07,s]
         ldb   $0A,s
         beq   L229B
         ldd   $07,s
         addd  #$0006
         tfr   d,x
         ldb   ,x
         andb  #$04
         cmpb  #$00
         bne   L229B
         ldd   [<$07,s]
         addd  #$0001
         std   [<$07,s]
         subd  #$0001
         pshs  b,a
         ldb   $06,s
         stb   [,s++]
         ldd   $07,s
         addd  #$0002
         pshs  b,a
         ldd   #$00FF
         std   [,s++]
L229B    ldb   $04,s
         clra  
         leas  $05,s
         rts   
L22A1    pshs  b,a
         clrb  
         clra  
         pshs  b,a
         ldd   $02,s
         pshs  b,a
         clrb  
         clra  
         lbsr  L2148
         leas  $04,s
         leas  $02,s
         rts   
L22B5    lbra  L22BB
L22B8    lbra  L26E9
L22BB    pshs  b,a
         leas  -$08,s
         ldd   $08,s
         addd  #$0003
         lsra  
         rorb  
         lsra  
         rorb  
         addd  #$0001
         std   $06,s
         ldd   >$0280,y
         std   $02,s
         cmpd  #$0000
         bne   L22ED
         leax  >$027C,y
         stx   $02,s
         stx   >$0280,y
         stx   >$027C,y
         clrb  
         clra  
         std   >$027E,y
L22ED    ldd   [<$02,s]
         std   ,s
L22F2    ldx   ,s
         ldd   $02,x
         cmpd  $06,s
         lbcs  L2348
         ldx   ,s
         ldd   $02,x
         cmpd  $06,s
         bne   L230D
         ldd   [,s]
         std   [<$02,s]
         bra   L233A
L230D    ldd   ,s
         addd  #$0002
         tfr   d,u
         ldd   ,u
         subd  $06,s
         std   ,u
         ldd   ,s
         addd  #$0002
         tfr   d,x
         ldd   ,x
         lslb  
         rola  
         lslb  
         rola  
         pshs  b,a
         ldd   $02,s
         addd  ,s++
         std   ,s
         ldd   ,s
         addd  #$0002
         pshs  b,a
         ldd   $08,s
         std   [,s++]
L233A    ldd   $02,s
         std   >$0280,y
         ldd   ,s
         addd  #$0004
         leas  $0A,s
         rts   
L2348    ldd   ,s
         cmpd  >$0280,y
         lbne  L2382
         ldd   $06,s
         lslb  
         rola  
         lslb  
         rola  
         lbsr  L2441
         std   $04,s
         cmpd  #$FFFF
         bne   L2369
         clrb  
         clra  
         leas  $0A,s
         rts   
L2369    ldd   $04,s
         addd  #$0002
         pshs  b,a
         ldd   $08,s
         std   [,s++]
         ldd   $04,s
         addd  #$0004
         lbsr  L238D
         ldd   >$0280,y
         std   ,s
L2382    ldd   ,s
         std   $02,s
         ldd   [,s]
         std   ,s
         lbra  L22F2
L238D    pshs  b,a
         leas  -$04,s
         ldd   $04,s
         subd  #$0004
         std   ,s
         ldd   >$0280,y
         std   $02,s
L239E    ldd   ,s
         cmpd  $02,s
         bls   L23AD
         ldd   ,s
         cmpd  [<$02,s]
         bcs   L23CC
L23AD    ldd   $02,s
         cmpd  [<$02,s]
         bcs   L23C4
         ldd   ,s
         cmpd  $02,s
         bhi   L23CC
         ldd   ,s
         cmpd  [<$02,s]
         bcs   L23CC
L23C4    ldd   [<$02,s]
         std   $02,s
         lbra  L239E
L23CC    ldd   ,s
         addd  #$0002
         tfr   d,x
         ldd   ,x
         lslb  
         rola  
         lslb  
         rola  
         addd  ,s
         cmpd  [<$02,s]
         bne   L23FF
         ldd   [<$02,s]
         addd  #$0002
         pshs  b,a
         ldd   $02,s
         addd  #$0002
         tfr   d,u
         ldd   ,u
         addd  [,s++]
         std   ,u
         ldx   [<$02,s]
         ldd   ,x
         std   [,s]
         bra   L2404
L23FF    ldd   [<$02,s]
         std   [,s]
L2404    ldd   $02,s
         addd  #$0002
         tfr   d,x
         ldd   ,x
         lslb  
         rola  
         lslb  
         rola  
         addd  $02,s
         cmpd  ,s
         bne   L2433
         ldd   ,s
         addd  #$0002
         pshs  b,a
         ldd   $04,s
         addd  #$0002
         tfr   d,u
         ldd   ,u
         addd  [,s++]
         std   ,u
         ldd   [,s]
         std   [<$02,s]
         bra   L2438
L2433    ldd   ,s
         std   [<$02,s]
L2438    ldd   $02,s
         std   >$0280,y
         leas  $06,s
         rts   
L2441    lbra  L25A8
L2444    pshs  b,a
         ldb   $01,s
         cmpb  #$30
         bcs   L2456
         ldb   $01,s
         cmpb  #$39
         bhi   L2456
         ldb   #$01
         bra   L2457
L2456    clrb  
L2457    clra  
         leas  $02,s
         rts   
L245B    pshs  b,a
         ldb   $01,s
         clra  
         lbsr  L2474
         addd  #$0000
         beq   L246E
         ldb   $01,s
         addb  #$20
         bra   L2470
L246E    ldb   $01,s
L2470    clra  
         leas  $02,s
         rts   
L2474    lbra  L2477
L2477    pshs  b,a
         ldb   $01,s
         cmpb  #$41
         bcs   L2489
         ldb   $01,s
         cmpb  #$5A
         bhi   L2489
         ldb   #$01
         bra   L248A
L2489    clrb  
L248A    clra  
         leas  $02,s
         rts   
L248E    pshs  b,a
L2490    ldd   ,s
         addd  #$0001
         std   ,s
         subd  #$0001
         pshs  b,a
         ldx   $06,s
         ldb   ,x+
         stx   $06,s
         stb   [,s++]
         tstb  
         bne   L2490
         leas  $02,s
         rts   
L24AA    pshs  b,a
         leas  -$02,s
         ldd   $02,s
         std   ,s
L24B2    ldb   [,s]
         beq   L24BF
         ldd   ,s
         addd  #$0001
         std   ,s
         bra   L24B2
L24BF    ldd   ,s
         subd  $02,s
         leas  $04,s
         rts   
L24C6    leas  -$05,s
         clr   ,s
         bsr   L24FF
         std   $01,s
         ldd   $07,s
         bsr   L24FF
         std   $07,s
         lda   $02,s
         ldb   $08,s
         mul   
         std   $03,s
         lda   $01,s
         ldb   $08,s
         mul   
         tfr   b,a
         clrb  
         addd  $03,s
         std   $03,s
         lda   $02,s
         ldb   $07,s
         mul   
         tfr   b,a
         clrb  
         addd  $03,s
         tst   ,s
         bpl   L24F9
         nega  
         negb  
         sbca  #$00
L24F9    ldx   $05,s
         leas  $09,s
         jmp   ,x
L24FF    tsta  
         bpl   L2508
         com   $02,s
         nega  
         negb  
         sbca  #$00
L2508    rts   
L2509    ldx   $02,s
         bsr   L2588
         pshs  cc
         stx   $03,s
         puls  cc
         bra   L2517
L2515    andcc #$F7
L2517    orcc  #$01
         pshs  cc
         ldx   #$0000
         puls  cc
         bra   L2536
         ldx   $02,s
         bsr   L2588
         pshs  cc
         stx   $03,s
         ldx   #$7FFF
         puls  cc
         bra   L2536
L2531    ldx   #$FFFF
         andcc #$F6
L2536    leas  -$03,s
         pshs  cc
         std   $02,s
         bne   L2544
         puls  cc
         tfr   x,d
         bra   L2582
L2544    lda   #$01
         sta   $01,s
L2548    tst   $02,s
         bmi   L2554
         lsl   $03,s
         rol   $02,s
         inc   $01,s
         bra   L2548
L2554    ldd   $06,s
         clr   $06,s
         clr   $07,s
L255A    subd  $02,s
         bcc   L2564
         addd  $02,s
         andcc #$FE
         bra   L2566
L2564    orcc  #$01
L2566    rol   $07,s
         rol   $06,s
         lsr   $02,s
         ror   $03,s
         dec   $01,s
         bne   L255A
         puls  cc
         bcs   L257C
         pshs  cc
         ldd   $06,s
         puls  cc
L257C    bpl   L2582
         nega  
         negb  
         sbca  #$00
L2582    ldx   $03,s
         leas  $07,s
         jmp   ,x
L2588    pshs  u
         tfr   d,u
         pshs  x
         eora  ,s++
         andcc #$FE
         pshs  cc
         tfr   x,d
         bsr   L25A0
         tfr   d,x
         tfr   u,d
         bsr   L25A0
         puls  pc,u,cc
L25A0    tsta  
         bpl   L25A7
         nega  
         negb  
         sbca  #$00
L25A7    rts   
L25A8    pshs  b,a
         leax  >-$00FD,y
         tfr   x,d
         nega  
         negb  
         sbca  #$00
         addd  <u0000
         addd  ,s
         pshs  y
         os9   F$Mem    
         puls  y
         puls  x
         bcs   L25CA
         ldd   <u0000
         leax  d,x
         stx   <u0000
         rts   
L25CA    clra  
         std   <u0002
         ldd   #$FFFF
         rts   

L25D1    tfr   d,x
         lda   #$01
         os9   I$ChgDir 
         bcc   L25E0
         std   <u0002
         ldd   #$FFFF
         rts   
L25E0    clra  
         clrb  
         rts   

L25E3    leas  -$04,s
         ldu   $06,s
         tfr   d,x
         ldd   ,x
         std   ,s
         lda   $02,x
         sta   $02,s
         ldd   $08,s
         bra   L260B
L25F5    lsr   ,s
         ror   $01,s
         ror   $02,s
         bcc   L2607
         inc   $02,s
         bne   L2607
         inc   $01,s
         bne   L2607
         inc   ,s
L2607    lsr   ,u
         ror   u0001,u
L260B    lsra  
         rorb  
         bcc   L25F5
         clra  
         ldb   $02,s
         andb  #$07
         ldu   $0E,s
         std   ,u
         ldd   $01,s
         lsra  
         rorb  
         lsra  
         rorb  
         lsra  
         rorb  
         clra  
         ldu   $0C,s
         std   ,u
         ldd   ,s
         lsra  
         rorb  
         lsra  
         rorb  
         lsra  
         rorb  
         ldu   $0A,s
         std   ,u
         leas  $04,s
         rts   

L2634    tfr   d,x
         clra  
         clrb  
         std   ,x
         stb   $02,x
         ldd   $04,s
         lslb  
         rola  
         lslb  
         rola  
         lslb  
         rola  
         std   ,x
         ldd   $06,s
         lslb  
         rola  
         lslb  
         rola  
         lslb  
         rola  
         addd  $01,x
         std   $01,x
         bcc   L2656
         inc   ,x
L2656    addd  $08,s
         std   $01,x
         bcc   L265E
         inc   ,x
L265E    ldd   $02,s
         bra   L2668
L2662    lsl   $02,x
         rol   $01,x
         rol   ,x
L2668    asra  
         rorb  
         bne   L2662
         rts   

L266D    tfr   d,x
         ldu   $02,s
         ldb   ,x
         stb   ,u
         ldd   $01,x
         addd  $04,s
         std   u0001,u
         bcc   L267F
         inc   ,u
L267F    clra  
         clrb  
         rts   

;---------------------------------------------
; 24 bits compartison
; IN : *(d)   firts 24 bits value to compare
;      *(2+s) Seconds value to compare
; OUT: D = -1 : 1st < 2nd
;           0 : 1st = 2nd
;           1 : 1st > 2nd
;---------------------------------------------
L2682    tfr   d,x
         ldu   $02,s
         ldb   ,x
         cmpb  ,u
         bhi   L269E
         bcs   L269A
         ldd   $01,x
         cmpd  1,u
         bhi   L269E
         bcs   L269A
         clra  
         clrb  
         rts   
         
L269A    ldd   #$FFFF
         rts   
         
L269E    ldd   #$0001
         rts   

;---------------------------------------------
;
; OUT: D = -1 : error
;           0 : No error occured
;---------------------------------------------
L26A2    tfr   b,a
         ldb   #$05
         os9   I$GetStt 
         bcs   L26B9
         tfr   x,d
         ldx   $04,s
         stu   ,x
         ldx   $02,s
         std   ,x
         clra  
         clrb  
         bra   L26BC
L26B9    ldd   #$FFFF
L26BC    rts   

;---------------------------------------------
;
;---------------------------------------------
L26BD    tfr   d,x
         lda   $03,s
         os9   I$Open   
         bcs   L2728
         tfr   a,b
         clra  
         rts   

;---------------------------------------------
;
;---------------------------------------------
L26CA    tfr   b,a
         os9   I$Close  
         bcs   L2728
         clra  
         clrb  
         rts   
         
;---------------------------------------------
;
;---------------------------------------------
L26D4    pshs  y
         tfr   b,a
         ldx   $04,s
         ldy   $06,s
         os9   I$Read   
         puls  x
         exg   x,y
         bcs   L2728
         tfr   x,d
         rts   
         
;---------------------------------------------
;
;---------------------------------------------
L26E9    pshs  y
         tfr   b,a
         ldx   $04,s
         ldy   $06,s
         os9   I$Write  
         puls  x
         exg   x,y
         bcs   L2728
         tfr   x,d
         rts   

;---------------------------------------------
;
;---------------------------------------------
         pshs  y
         tfr   b,a
         ldx   $04,s
         ldy   $06,s
         os9   I$ReadLn 
         puls  x
         exg   x,y
         bcs   L2728
         tfr   x,d
         rts   

;---------------------------------------------
;
;---------------------------------------------
L2713    pshs  y
         tfr   b,a
         ldx   $04,s
         ldy   $06,s
         os9   I$WritLn 
         puls  x
         exg   x,y
         bcs   L2728
         tfr   x,d
         rts   

;---------------------------------------------
;
;---------------------------------------------
L2728    clra  
         std   <u0002
         ldd   #$FFFF
         rts   

;---------------------------------------------
;
;---------------------------------------------
L272F    tfr   d,x
         lda   #$02
         ldb   $03,s
         bmi   L273B
         tfr   b,a
         anda  #$03
L273B    orb   #$01
         pshs  x,b,a
         os9   I$Create 
         puls  u,x
         exg   x,u
         bcc   L2758
         pshs  x
         os9   I$Delete 
         puls  x
         bcs   L2728
         tfr   u,d
         os9   I$Create 
         bcs   L2728
L2758    tfr   a,b
         clra  
         rts   
	 
;---------------------------------------------
;
;---------------------------------------------
L275C    pshs  b,a
         ldx   $04,s
         ldd   ,x
         std   $04,s
         clrb  
         lda   $02,x
         addd  $06,s
         std   $06,s
         puls  b,a
L276D    tfr   b,a
         ldb   $07,s
         ldx   $02,s
         ldu   $04,s
         decb  
         bne   L2781
         ldb   #$05
         os9   I$GetStt 
         bcs   L2728
         bra   L278B
L2781    decb  
         bne   L2799
         ldb   #$02
         os9   I$GetStt 
         bcs   L2728
L278B    exg   d,u
         addd  $04,s
         exg   d,u
         exg   d,x
         adcb  $03,s
         adca  $02,s
         exg   d,x
L2799    os9   I$Seek   
         bcs   L2728
         clra  
         clrb  
         rts   

;---------------------------------------------
;
;---------------------------------------------
L27A1    tfr   d,x
         os9   I$Delete 
         bcs   L2728
         clra  
         clrb  
         rts   

;---------------------------------------------
;
;---------------------------------------------
L27AB    os9   F$Exit   
L27AE    bsr   L27B9
         tfr   a,b
         clra  
         rts   

;---------------------------------------------
;
;---------------------------------------------
         bsr   L27B9
         tfr   x,d
         rts   

;---------------------------------------------
;
;---------------------------------------------
L27B9    pshs  y
         os9   F$ID     
         tfr   y,x
         puls  y
         rts   

name     equ   *
         fcs   /dcheck/
         fcb   edition

         emod
eom      equ   *
         end