//------
//    8-      -60
//------

//      0     .
//      NOP,  
//   .      0 
// -       .
//      r0  ,  
//  .

//       
//            .

//---   -----------------------------------//
//   NEX.ADDRESS  :   -   ...    -     0     1     2    ...  //
//   TRACK/SECTOR :  0/1  ...  0/26   1/1   1/5   1/9   ...  //
//                                   <BOOT> <VL> <STARTER..  //
//-----------------------------------------------------------//

/CSR = 177170; DBR=CSR+2        //EQUALS CSR=&FE78,DBR=&FE7A
.globl CSR,DBR

//        CSR
 Error =100000                  // 
 Init  = 40000                  //  
 Ready =   200
 Done  =    40
 Unit  =    20                  //  
 RDsect=    06                  //    
 RDbuff=    02                  //    
 Go    =     1                  // 

//---     --//
  nop               //    
  movb Units(r0),opcode         //  
  br  DXboot
 Qsect: 073567                  //     128
        Wait; 000340            //BPT-
 TRC0:  01
 SEC0:  11                      //  -> +
//---------------------------------------//

 Units:  .byte RDsect+Go; .byte Unit+RDsect+Go

 AddrLoad = 2000
 Track=r1; Sector=r2; AddrBuff=r3; AddrCSR=r4; AddrDBR=r5

 CarryBit = 1                   // ^C   

//--    --
Wait:
  1:
    bit $[Error+Done+Ready],*AddrCSR
  beq 1b
  2:  bmi 2b                    // 15 ->  !
   //  7   0 PSW
  movb *AddrCSR,2(sp); aslb 2(sp); rolb 2(sp)
Desact:                         //  
  rti

//--   DX#: N/4    2 --
DXboot:
  mov $AddrLoad,AddrBuff;  mov AddrBuff,sp
  mov TRC0,Track;  mov SEC0,Sector
  mov $CSR,AddrCSR
  br TimeOver

  Desact; 000340                //   

 TimeOver:
  mov $DBR,AddrDBR
  br 3f
  4:
    mov (pc)+,*AddrCSR          //  ` '
    opcode: 0
    bpt                         //  7 (TRANSF. REQ)
    mov Sector,*AddrDBR;  bpt
    mov Track,*AddrDBR;   bpt   //  5 (DONE)
    mov $RDbuff\!Go,*AddrCSR    //  ` '
    5:
      bpt
    bcc 6f                      //  7 CSR
      movb *AddrDBR,(AddrBuff)+
    br 5b
    6:
    movb $'=,177566             //  
    inc Sector
    cmp Sector,$27.
    bne 7f
      mov $1,Sector;  inc Track
    7:
  3:
  dec Qsect;  bpl 4b
  mov sp,pc                     // 
