% === DX:BOOT === %  06.10.88 VERSION 41
GLOBAL (LOCATION=0) (START=0)
%---   ------------------------------------%
%-  NEX.ADDRESS  :   -   ...    -     0     1     2    ...  -%
%-  TRACK/SECTOR :  0/1  ...  0/26   1/1   1/5   1/9   ...  -%
%-                                  <BOOT> <VL> <STARTER..  -%
%------------------------------------------------------------%
LOCALS LDXBOO
%                   --    --
  EQUALS CSR=&FE78,DBR=&FE7A
%                --    () --
  EQUALS RDBUFF=&02           %   
  EQUALS RDSECT=&06           %   

  EQUALS ERROR=&8000
  EQUALS INIT=&4000
  EQUALS READY=&80
  EQUALS DONE=&20
  EQUALS UNIT=&10             %  
  EQUALS GO=1                 % 

%---     --%
. CCL                *    
. MOVB CHUNIT(%0),OPCODE                *  
. BR  DXBOOT                            *
  DATA QSECT=&7777                      %   -  128
  DATA =WAIT.&00E0                      %BPT-
  DATA TRC0=&01,SEC0=&09                %  -> +
%---------------------------------------%

  BYTES CHUNIT=RDSECT+GO.UNIT+RDSECT+GO

  EQUALS LDADDR=&400
  REGISTERS TRACK=%1,SECTOR=%2,ADBUFF=%3
  REGISTERS ACSR=%4,ADBR=%5

  EQUALS CARRY=1                        % ^C   

%--    --
PROGRAM WAIT()
  REPEAT WHILE (@ACSR=.BIT.'ERROR+DONE+READY')=
  IF IS NEGATIVE GOTO $                 % 15 ->  !
  2[SP]:=@ACSR.ASL..ROL.                %  7   0 (^C)
.DESACT DEF DESACT                      * 
  DESACTIVATE

%--   DX#: N/4    2 --
% INP: R0    -   ( )
%      QSECT -   (  )
PROGRAM DXBOOT()
  ADBUFF='LDADDR' ; SP=ADBUFF
  TRACK=TRC0 ; SECTOR=SEC0
  ACSR='CSR'
  GOTO OVERTI

. DAT DESACT,&00E0            *   

LABEL OVERTI
  ADBR='DBR'
  (DCYCLE(QSECT) QSECT
    @ACSR=^PC                 %  ` '
.OPCODE DAT 0
.   BPT                       *  7 (TRANSF. REQ)
    @ADBR=SECTOR
.   BPT
    @ADBR=TRACK
.   BPT                       *  5 (DONE)
    @ACSR='RDBUFF+GO'         %  ` '
    (WHILE
.     BPT
    WHILE IS CARRY            %  7
      ^ADBUFF:=@ADBR
    )WHILE
    @&FF76:="+"
    (IF SECTOR(+1)=27
      SECTOR=1 ; TRACK=+1
    )IF
  )DCYCLE
  PC=SP                       % 
