

                  JR    C,0D2D,PO-SCR-4B       
                                             (B =  DF-SZ).
                  INC   (HL)                 S-POSN-hi 
                  LD    B,+18                  
                                            (B = +18).
0D2D PO-SCR-4B    CALL  0E00,CL-SCROLL       'B' .
                  POP   AF                    
                  DEC   A                   " ".
                  JR    NZ,0D1C,PO-SCR-4A     , 
                                            .
                  POP   HL                   
                  LD    (P-FLAG),L          P-FLAG.
                  POP   HL                    ATTR-T
                  LD    (ATTR-T),HL          MASK-T.
                  LD    BC,(S-POSN)          ,   
                  RES   0,(TV-FLAG)         S-POSN,  CL-SET,
                  CALL  0DD9,CL-SET           
                                               DF-CC.
                  SET   0,(TV-FLAG)          , ,
                  POP   BC                      
                  RET                       ,   
                                             ,   .
                                         
 'TEMPORARY COLOUR ITEMS' ("  ")
   .    ,   ""     ""  .
  ATTR-T  MASK-T.

0D4D TEMPS        XOR   A                    +00   A.
                  LD    HL,(ATTR-P)            ATTR-P
                  BIT   0,(TV-FLAG)          MASK-P.
                  JR    Z,0D5B,TEMPS-1        
                                             ,   .
                  LD    H,A                    
                  LD    L,(BORDCR)          +00   BORDER.
0D5B TEMPS-1      LD    (ATTR-T),HL           ATTR-T  MASK-T.

  P-FLAG.

                  LD    HL,+5C91             P-FLAG.
                  JR    NZ,0D65,TEMPS-2        
                                             (A= +00),  
                                            .
                  LD    A,(HL)                 
                  RRCA                       P-FLAG  
                                               .
0D65 TEMPS-2      XOR   (HL)                  
                  AND   +55                  A  P-FLAG.
                  XOR   (HL)
                  LD    (HL),A
                  RET


 'CLS COMMAND' (" ")

      -   ,        ATTR-P,      .

0D6B CLS          CALL  0DAF,CL-ALL           
0D6E CLS-LOWER    LD    HL,+5C3C             TV-FLAG.
                  RES   5,(HL)                "  
                                                
                                            "
                  SET   0,(HL)               ' '.
                  CALL  0D4D,TEMPS            ,
                                            .. ATTR-T   BORDER.
                  LD    B,(DF-SZ)              
                  CALL  0E44,CL-LINE           .

      ,     22  23,      ATTR-P.

                  LD    HL,+5AC0                 22.
                  LD    A,(ATTR-P)           ATTR-P.
                  DEC   B                    .
                  JR    0D8E,CLS-3             .
0D87 CLS-1        LD    C,+20               +20   .
0D89 CLS-2        DEC   HL                     ,
                  LD    (HL),A                .
                  DEC   C
                  JR    NZ,0D89,CLS-2
0D8E CLS-3        DJNZ  0D87,CLS-1          ,    
                                            .

     .

                  LD    (DF-SZ),+02            
                                               .

     .

0D94 CL-CHAN      LD    A,+FD                 'K'.
                  CALL  1601,CHAN-OPEN
                  LD    HL,(CURCHL)             
                  LD    DE,+09F4               +09F4
                  AND   A                   (= PRINT-OUT)   
0DA0 CL-CHAN-A    LD    (HL),E              +10A8 (= KEY-INPUT)
                  INC   HL                  
                  LD    (HL),D              
                  INC   HL
                  LD    DE,+10A8
                  CCF                         , 
                  JR    C,0DA0,CL-CHAN-A     . ..  .
                  LD    BC,+1721             , 
                                                23.
                  JR    0DD9,CL-SET           CL-SET.

 'CLEARING THE WHOLE DISPLAY AREA' ("   ")
   :
1)   CLS;
2)   ;
3)    .

0DAF CL-ALL       LD    HL,+0000              
                  LD    (C00RDS),HL         C00RDS  0.
                  RES   0,(FLAGS2)           ' '.
                  CALL  0D94,CL-CHAN         " "
                  LD    A,+FE                 'S'.
                  CALL  1601,CHAN-OPEN
                  CALL  0D4D,TEMPS           ""
                                            .
                  LD    B,+18                24  .
                  CALL  0E44,CL-LINE       
                  LD    HL,(CURCHL)           
                  LD    DE,+09F4             +09F4
                  LD    (HL),E              (PRINT-OUT).
                  INC   HL
                  LD    (HL),D
                  LD    (SCR-CT),+01          .
                  LD    BC,+1821            ..   
                                            , " 
                                            "   0.
                                              CL-SET.

 'CL-SET'
        BC (     )     (    ).       .    PO-STORE ,        .

0DD9 CL-SET       LD    HL,+5B00               .
                  BIT   1,(FLAGS)              ,
                  JR    NZ,0DF4,CL-SET-2      .
                  LD    A,B                   .
                  BIT   0,(TV-FLAG)            
                  JR    Z,0DEE,CL-SET-1     ,   .
                  ADD   A,(DF-SZ)              
                  SUB   +18                   
                                            ' +18'   
                                            .
0DEE CL-SET-1     PUSH  BC                      
                  LD    B,A                   .
                  CALL  0E9B,CL-ADDR           
                                              HL.
                  POP   BC                    
                                             .
0DF4 CL-SET-2     LD    A,+21                 
                  SUB   C                      
                  LD    E,A                   DE.
                  LD    D,+00
                  ADD   HL,DE                  ;
                  JP    0ADC,PO-STORE        ,     
                                               
                                            PO-STORE.

 'SCROLLING' ("")
  ,   ,         B.

0DFE CL-SC-ALL    LD    B,+17                  
                                            'scroll?'.

   -     INPUT..AT.

0E00 CL-SCROLL    CALL  0E9B,CL-ADDR           .
                  LD    C,+08                  
                                            .

    .
 :
-  B    ,    ;
-   HL -       ;
-  C -  -.

0E05 CL-SCR-1     PUSH  BC                    .
                  PUSH  HL                    .
                  LD    A,B                  ,   
                  AND   +07                     ""
                  LD    A,B                 .
                  JR    NZ,0E19,CL-SCR-3    

-   ""      2-  ( ""   2 ).

0E0D CL-SCR-2     EX    DE,HL                 
                  LD    HL,+F8E0             HL , 
                  ADD   HL,DE               DE,   
                  EX    DE,HL               .
                  LD    BC,+0020             +20 .
                  DEC   A                    , ..
                                              .
                  LDIR                       32 .

   -  "" .  A     +01 - +07, +09 - +0F  +11 - +17.

0E19 CL-SCR-3     EX    DE,HL               DE   
                  LD    HL,+FFE0            .
                  ADD   HL,DE                    32 .
                  EX    DE,HL                 B  .
                  LD    B,A                   
                  AND   +07                 ,   ""
                  RRCA                      .
                  RRCA                      
                  RRCA
                  LD    C,A                    
                                             C.
                  LD    A,B                   .
                  LD    B,+00               BC  " " 
                  LDIR                      -  
                                             .
                  LD    B,+07                  
                                            ,   
                                            "" .
                  ADD   HL,BC                HL  +0700.
                  AND   +F8                   -
                  JR    NZ,0E0D,CL-SCR-2    ""  , 
                                             .

,     8 ,      -.

                  POP   HL                    .
                  INC   H                     -.
                  POP   BC                   .
                  DEC   C                     -
                  JR    NZ,0E05,CL-SCR-1      ,  
                                             8 .

    ,   B    ,  ,     0.

                  CALL  0E88,CL-ATTR            
                                                
                                            "B" .
                  LD    HL,+FFE0               
                  ADD   HL,DE                  32 
                  EX    DE,HL               
                  LDIR                        .

      .

                  LD    B,+01                B   +01 
                                             CL-LINE.

 'CLEAR LINES' (" ")
    B  .

0E44 CL-LINE      PUSH  BC                    
                                               ( C).
                  CALL  0E9B,CL-ADDR          HL  
                                            .
                  LD    C,+08                  -
                                            .

    -.

0E4A CL-LINE-1    PUSH  BC                      
                                            -.
                  PUSH  HL                    .
                  LD    A,B                     A.
0E4D CL-LINE-2    AND   +07                   
                  RRCA                        'B mod 8' .
                  RRCA                          
                  RRCA                      (    +00,
                  LD    C,A                 .. 256dec.  "" )
                  LD    A,B                   .
                  LD    B,+00                  BC 
                  DEC   C                    -1
                  LD    D,H                 DE    
                  LD    E,L                 .
                  LD    (HL),+00             - 
                                            .
                  INC   DE                  DE    .
                  LDIR                       - 
                                            .
                  LD    DE,+0701                
                  ADD   HL,DE                HL    +0701.
                  DEC   A                     .
                  AND   +F8                    
                  LD    B,A                    ""  B.
                  JR    NZ,0E4D,CL-LINE-2    ,   
                                              "" .

  8 .

                  POP   HL                    -.
                  INC   H                     -.
                  POP   BC                    -.
                  DEC   C                    .
                  JR    NZ,0E4A,CL-LINE-1        ,
                                              .

 ,    .   ATTR-P  ,     ,    BORDER -     .

                  CALL  0E88,CL-ATTR           
                                               .
                  LD    H,D                 HL    
                  LD    L,E                  ,  DE -  .
                  INC   DE                  
                  LD    A,(ATTR-P)            ATTR-P.
                  BIT   0,(TV-FLAG)            
                  JR    Z,0E80,CL-LINE-3    ,   .
                  LD    A,(BORDER)             
                                            BORDER.
0E80 CL-LINE-3    LD    (HL),A                .
                  DEC   BC                    .
                  LDIR                         
                                                .
                  POP   BC                    .
                  LD    C,+21                   
                  RET                         .

 'CL-ATTR'
   :

1)       HL   DE   . ,         ""  .
2)      B   BC          .

0E88 CL-ATTR      LD    A,H                   .
                  RRCA                        32
                  RRCA                    
                  RRCA
                  DEC   A                      8.
                  OR    +50                   .
                  LD    H,A                    
                                              
                  EX    DE,HL                   DE.
                  LD    H,C                   =0.
                  LD    L,B                  .
                  ADD   HL,HL                 32.
                  ADD   HL,HL
                  ADD   HL,HL
                  ADD   HL,HL
                  ADD   HL,HL
                  LD    B,H                    BC
                  LD    C,L               
                  RET                     

 'CL-ADDR'
  HL   ,      B.

0E9B CL-ADDR      LD    A,+18                  
                  SUB   B                    .
                  LD    D,A                    D.
                  RRCA                       
                                             '(A mod 8) * 32'.
                  RRCA                          
                  RRCA                          :
                  AND   +E0                 1-  = +00,
                                            2-  = +20,  ..
                  LD    L,A                     L.
                  LD    A,D                    .
                  AND   +18                  
                                            '64 +8 * INT (A/8)'
                  OR    +40                     
                                              = +40,
                                               'third' = +48,
                                                = +50.
                  LD    H,A                      H.
                  RET                      

  'COPY'
176 -    .

0EAC COPY         DI                         .
                  LD    B,+B0               176 .
                  LD    HL,+4000               .

 .

0EB2 COPY-1       PUSH  HL                   .
                  PUSH  BC                    .
                  CALL  0EF4,COPY-LINE        176 .
                  POP   BC                     
                  POP   HL                   .
                  INC   H                     
                  LD    A,H                     
                  AND   +07                    8 -
                  JR    NZ,0EC9,COPY-2        .

         .

                  LD    A,L                   .
                  ADD   A,+20                 32 .
                  LD    L,A                     ""
                                            ,     .
                  CCF                         C.
                  SBC   A,A                  A   +F8,
                  AND   +F8                    
                                            "" ,  +00, 
                                              "".
                  ADD   A,H                    
                  LD    H,A                 .
0EC9 COPY-2       DJNZ  0EB2,COPY-1         ,    
                                            176  .
                  JR    0EDA,COPY-END          .

 'COPY-BUFF'("  ")
    ,      .

0ECD COPY-BUFF    DI                         .
                  LD    HL,+5B00              .
                  LD    B,+08               8 -
0ED3 COPY-3       PUSH  BC                    .
                  CALL  0EF4,COPY-LINE        8 .
                  POP   BC                    .
                  DJNZ  0ED3,COPY-3          ,   
                                            8 .

   COPY-END.

0EDA COPY-END     LD    A,+04                 .
                  OUT   (+FB),A
                  EI                         .
                                              
                                            CLEAR-PRB.

 'CLEAR PRINTER BUFFER' ("  ")
      .

0EDF CLEAR-PRB    LD    HL,+5B00              .
                  LD    (PR-CC-lo),L          .
                  XOR   A                     A.
                  LD    B,A                    B
                                            (   , 
                                             B  256)
0EE7 PRB-BYTES    LD    (HL),A               256  
                  INC   HL                  
                  DJNZ  0EE7,PRB-BYTES     
                  RES   1,(FLAGS2)            " 
                                            ".
                  LD    C,+21                  
                  JP    0DD9,CL-SET           CL-SET & P0-STORE.

 'COPY-LINE'
     HL    32- -,    B    -.

0EF4 COPY-LINE    LD    A,B                   -.
                  CP    +03                   A  +00,  
                  SBC   A,A                    
                  AND   +02                 .

                  OUT   (+FB),A                
                                               -.
                  LD    D,A                  D   
                                            +00  +02.

       .

0EFD COPY-L-1     CALL  1F54,BREAK-KEY          
                  JR    C,0F0C,COPY-L-2     BREAK,   .
                  LD    A,+04                 BREAK 
                  OUT   (+FB),A             ,
                  EI                         ,
                  CALL  0EDF,CLEAR-PRB          
                  RST   0008,ERROR-1          
                  DEFB  +0C                   
                                            'BREAK-CONT repeats'.
0F0C COPY-L-2     IN    A,(+FB)               
                  ADD   A,A                 
                  RET   M                      , 
                                             ,  .
                  JR    NC,0EFD,COPY-L-1      .
                  LD    C,+20               32 .

   32   .

0F14 COPY-L-3     LD    E,(HL)               .
                  INC   HL                     
                                               .
                  LD    B,+08               8    .
0F18 COPY-L-4     RL    D                    D .
                  RL    E                    7  E   .
                  RR    D                    D    
                                             (  7   E).
0F1E COPY-L-5     IN    A,(+FB)                
                  RRA                          
                  JR    NC,0F1E,COPY-L-5    .
                  LD    A,D                    .
                  OUT   (+FB),A              :
                                             2=0 -  
                                             1=1 -  
                                             7=1 -  
                  DJNZ  0F18,COPY-L-4         .
                  DEC   C                     .
                  JR    NZ,0F14,COPY-L-3     ,   
                  RET                         .

 'EDITOR' ("")
    :
1)      ,     BASIC-  ;
2)       INPUT.

  "  "      .

0F2C EDITOR       LD    HL,(ERR-SP)           
                  PUSH  HL                   .
0F30 ED-AGAIN     LD    HL,+107F             ED-ERROR.
                  PUSH  HL                   ,  
                  LD    (ERR-SP),SP          
                                             ,  
                                              ED-ERROR.

      .

0F38 ED-LOOP      CALL  15D4,WAIT-KEY       ,   .
                  PUSH  AF                    .
                  LD    D,+00                 
                  LD    E,(PIP)              (  ).
                  LD    HL,+00C8               .
                  CALL  03B5,BEEPER           "".
                  POP   AF                     .
                  LD    HL,+0F38                ED-LOOP.
                  PUSH  HL               

    .

