         NLS 
;INTRO
XLO      EPZ $00
REM      EPZ $00
XHI      EPZ $01
DIV      EPZ $01
XVAL     EPZ $02
QUO      EPZ $03
YVAL     EPZ $04
RYLO     EPZ $05
YLO      EPZ $05
RYHI     EPZ $06
YHI      EPZ $06
YSIZE    EPZ $07
XSIZE    EPZ $08
SHIFTL   EPZ $09
SHIFTH   EPZ $0A
XREG     EPZ $0B
BLKL     EPZ $0C
BLKH     EPZ $0D
MSKL     EPZ $0E
MSKH     EPZ $0F
YREG     EPZ $10
TEMP     EPZ $11
TN1      EPZ $12
TN2      EPZ $13
PAGE     EPZ $14
N1       EPZ $15
N2       EPZ $16
FDTIME   EPZ $17
HDX      EPZ $1D
HDY      EPZ $1E
HDN      EPZ $1F
RNDNEW   EPZ $4E
RNDOLD   EPZ $4F
BLO      EPZ $86
BHI      EPZ $87
MLO      EPZ $88
MHI      EPZ $89
         JSR $FC58
         LDA #$20
         STA PAGE
         JSR FCLEAR
         LDX #$12
^1       LDA MES2-1,X
         JSR $FDED
         DEX 
         BNE <1
         LDA $C050
         LDA $C057
         LDA $C054
         LDA $C052
         LDA #$40
         STA PAGE
         JSR CLEAR
         LDA #$01
         STA FDTIME
         STA N1
         LDA #$00
         STA N2
         LDA #$71
         STA HDX
         LDA #$85
         STA HDY
         JSR SWITCH
         LDA #$07
         STA HDN
         JSR DHD
         JSR DSOLVE
         JSR SWITCH
         JSR DHD
         JSR SWITCH
         JSR D1
         JSR DSOLVE
         JSR SWITCH
         JSR D1
         JSR SWITCH
         JSR D2
         JSR DSOLVE
         JSR SWITCH
         JSR D2
         JSR SWITCH
         JSR D3
         JSR DSOLVE
         JSR SWITCH
         JSR D3
         JSR SWITCH
         JSR D4
         JSR DSOLVE
         JSR SWITCH
         JSR D4
         JSR SWITCH
         JSR D5
         JSR DSOLVE
         JSR SWITCH
         JSR D5
         JSR SWITCH
         JSR D6
         JSR DSOLVE
         JSR SWITCH
         JSR D6
         JSR SWITCH
         JSR D7
         JSR DSOLVE
         JSR SWITCH
         JSR D7
         JSR SWITCH
         JSR D8
         JSR DSOLVE
         JSR SWITCH
         JSR $FC58
         LDX #139
^1       LDA MESS6-1,X
         JSR $FDED
         DEX 
         BNE <1
         LDA $C051
         LDA $C054
         LDA $C010
^1       INC RNDNEW
         BNE >2
         INC RNDOLD
^2       LDA $C000
         BPL <1
         LDX #$0B
^1       LDA MESS-1,X
         JSR $FDED
         DEX 
         BNE <1
MESS     .DA #$8D,"NIB NURB",#$84,#$8D
MESS6    .DA "DEVRESER STHGIR LLA          ERAWTFOS TSOMATAD  YB 2891 THGIRYPOC )C(",#$8D
         .DA #$8D,#$8D,#$8D,#$8D
         .DA "EOHSHTRAE EVORGNAM YB         ",#$8D
         .DA "DAOTSELIB EHT             ",#$8D,#$8D,#$8D,#$8D,#$8D,#$8D,#$8D,#$8D
MES2     .DA #$8D,"0006$A,BI DAOLB",#$84,#$8D
         RTS 
D1       JMP >1
D2       JMP >2
D3       JMP >3
D4       JMP >4
D5       JMP >5
D6       JMP >6
D7       JMP >7
D8       LDX #$0C
         LDA #$40
         STA HDY
^9       LDA ME1-1,X
         STA HDN
         LDA ME2-1,X
         STA HDX
         TXA 
         PHA 
         JSR DHD
         PLA 
         TAX 
         DEX 
         BNE <9
         RTS 
ME1      HEX 08090A0B0C0D0A0E0F101112
ME2      HEX 1024386C8490A0B0C0D0E0F0
^1       LDA #$07
         STA HDN
         JSR DHD
         LDA #$06
         STA HDN
         JSR DHD
         RTS 
^2       LDA #$05
         STA HDN
         JSR DHD
         RTS 
^3       LDA #$04
         STA HDN
         JSR DHD
         RTS 
^4       LDA #$03
         STA HDN
         JSR DHD
         RTS 
^5       LDA #$02
         STA HDN
         JSR DHD
         RTS 
^6       LDA #$01
         STA HDN
         JSR DHD
         RTS 
^7       LDA #$00
         STA HDN
         JSR DHD
         RTS 
RND      LDA RNDNEW
         PHA 
         ASL 
         LDA RNDOLD
         ADC RNDNEW
         STA RNDNEW
         PLA 
         STA RNDOLD
         RTS 
         RTS 
RELOC    LDX #$7F
         STX MHI
         LDY #$00
         STY MLO
         STY BLO
         LDA #$BF
         STA BHI
         LDX #$60
^1       LDA (MLO),Y
         STA (BLO),Y
         LDA #$00
         STA (MLO),Y
         INY 
         BNE <1
         DEC MHI
         DEC BHI
         DEX 
         BNE <1
         RTS 
DHD      LDA HDN
         ASL 
         TAX 
         LDA HS,X
         STA MSKL
         LDA HS+1,X
         STA MSKH
         LDA DS,X
         STA BLKL
         LDA DS+1,X
         STA BLKH
         LDA HD,X
         BMI >1
         LDA HDX
         SEC 
         SBC HD,X
         BCC DHDEX
         STA XVAL
         JMP >2
^1       LDA HDX
         SEC 
         SBC HD,X
         BCS DHDEX
         STA XVAL
^2       LDA HD+1,X
         BMI DHSK2A
         LDA HDY
         SEC 
         SBC HD+1,X
         BCC DHDEX
         STA YVAL
         JMP DHSK2B
DHSK2A   LDA HDY
         SEC 
         SBC HD+1,X
         BCS DHDEX
         STA YVAL
DHSK2B   LDA HSIZ+1,X
         STA YSIZE
         LDA HSIZ,X
         STA XSIZE
DHREM    JSR OUTBLK
DHDEX    RTS 
XCALC    LDA #$00
         STA DIV
         LDA #$E0
         STA QUO
         LDA XVAL
         LDY #$06
LP       CMP QUO
         BLT CON
         SBC QUO
CON      ROL DIV
         LSR QUO
         DEY 
         BNE LP
         STA REM
         RTS 
YCALC    LDA YVAL
         SEC 
         SBC #36
         JSR YMUS
         RTS 
REYCAL   LDA YVAL
YMUS     PHA 
         PHA 
         AND #$C0
         STA YLO
         PLA 
         LSR 
         ROR 
         PHA 
         AND #$30
         ORA YLO
         STA YLO
         PLA 
         ROR 
         ROR 
         ROR YLO
         AND #$03
         STA YHI
         PLA 
         ASL 
         ASL 
         AND #$1C
         ORA YHI
         ORA PAGE
         STA YHI
         RTS 
DLIN     LDA YHI
         CLC 
         ADC #$04
         PHA 
         AND #$1C
         BEQ DLIN2
         PLA 
         STA YHI
         RTS 
DLIN2    PLA 
         SEC 
         SBC #$20
         ASL YLO
         ROL 
         ADC #$01
         PHA 
         AND #$07
         BEQ DLIN3
         PLA 
         LSR 
         ROR YLO
         STA YHI
         RTS 
DLIN3    LSR YLO
         PLA 
         LSR 
         SEC 
         SBC #$04
         STA YHI
         LDA YLO
         CLC 
         ADC #$28
         CMP #$A0
         BEQ DLIN4
         STA YLO
         RTS 
DLIN4    LDA #$00
         STA YLO
         RTS 
OUTBLK   JSR XCALC
         JSR YCALC
         LDX YSIZE
OLP1     JSR MOVEL
         JSR PREP
         JSR OUTLN
         DEX 
         BNE OLP1
         RTS 
MOVEL    LDY XSIZE
         LDA #$00
         STA BYTES,Y
         STA BYTES+1,Y
         LDA #$FF
         STA MASKS,Y
         STA MASKS+1,Y
MLP1     LDA (BLKL),Y
         STA BYTES-1,Y
         LDA (MSKL),Y
         STA MASKS-1,Y
         DEY 
         BNE MLP1
         LDA BLKL
         CLC 
         ADC XSIZE
         STA BLKL
         LDA BLKH
         ADC #$00
         STA BLKH
         LDA MSKL
         CLC 
         ADC XSIZE
         STA MSKL
         LDA MSKH
         ADC #$00
         STA MSKH
         RTS 
PREP     STX XREG
         LDX XSIZE
         INX 
         INX 
         STX SHIFTH
         LDA #$00
         STA SHIFTL
         LDX XLO
         BEQ PREPL2
PREPL1   JSR SHIFT
         DEX 
         BNE PREPL1
PREPL2   STX SHIFTL
         JSR SHIFT
         LSR BYTES,X
         SEC 
         ROR MASKS,X
         INX 
         CPX SHIFTH
         BNE PREPL2
         LDX XREG
         RTS 
SHIFT    STX YREG
         CLC 
         LDX SHIFTL
         PHP 
SHIFL1   PLP 
         ROL BYTES,X
         PHP 
         INX 
         CPX SHIFTH
         BNE SHIFL1
         PLP 
         SEC 
         LDX SHIFTL
         PHP 
SHIFL2   PLP 
         ROL MASKS,X
         PHP 
         INX 
         CPX SHIFTH
         BNE SHIFL2
         PLP 
         LDX YREG
         RTS 
OUTLN    STX XREG
         LDX #$00
         LDY XHI
OUTLP1   LDA MASKS,X
         EOR #$FF
         ORA (YLO),Y
         EOR BYTES,X
         STA (YLO),Y
         INY 
         INX 
         CPX SHIFTH
         BNE OUTLP1
         JSR DLIN
         LDX XREG
         RTS 
;
BYTES    HEX 00000000000000000000
;
MASKS    HEX 00000000000000000000
         ICL "TWO"
