/
/  DF32 SYSTEM DEVICE MONITOR HEAD
/
DEAC=6616
DEAL=6615
/
SAVBLK=373
/
*5200
/  ASSEMBLED HERE ONLY BECAUSE THIS IS WHERE IT
/ APPARENTLY IS IN THE SYSTEM BUILDER.  IT IS
/ LOADED FROM BLOCK 0 AND EXECUTED AT 7600.
/
C77,77
  COREADDR=.
  7200
MONLNK,7400
  7200
  7400
/ EXECUTING THE PREVIOUS CONSTANTS HAS NO EFFECT.
/ MEANINGFUL EXECUTION OF THE MONITOR CALL STARTS
/ HERE BUT WE CAN TELL EVERYONE TO START AT 7600.
/
  TAD TADCORE
  DCA ICORE
  TAD WFUNCT
  DCA FUNCT
  TAD SCRATCH
  JMS DOER / SAVE 7200 AT SCRATCH
  TAD SCRATCH
  IAC
  JMS DOER / SAVE 7400 AT SCRATCH + 1
  TAD RFUNCT
  DCA FUNCT
  IAC
  JMS DOER / READ SAVE COMMAND DECODER INTO 7200
  CLA CLL CML RTL
  JMS DOER / READ TTY SERVER INTO 7400
  JMP I MONLNK / GO TO TTY SERVER
/
DOER,0
  DCA BLOCK
ICORE,0 / SET TO TAD COREADDR ABOVE
  ISZ ICORE
  DCA CORE
  JMS SYSIO / USE REGULAR SYSIO FOR SAVE AND LOAD
/  THE NEXT FOUR WORDS ARE ALSO USED BY SYSIO
/ FOR TEMPORARY STORAGE.
FUNCT,0
BLOCK,0
CORE, 0
LINK,0
  HLT / ON ERROR ON RETRY ON ERROR
  JMP I DOER
/
SCRATCH, SAVBLK
/
/  THIS IS THE SYSTEM I/O ROUTINE FOR THE DF32
/
SYSIO, 0
  CLA CMA
  DCA SWITCH / RESET SWITCH TO ALLOW 1 RETRY
  TAD I SYSIO / FUNCTION
  ISZ SYSIO
  CLL RTL
  SPA / SKIP NOT INDIRECT RETURN
  TAD SETLINK
  RTR
  C200=.
  AND C77
  DCA AFUNCT
  TAD I SYSIO / BLOCK
  ISZ SYSIO
  DCA BLOCK
  TAD I SYSIO / CORE ADDRESS
  DCA ACORE
  TAD SYSIO
  SZL
  CLA CMA
  DCA RECA
  ISZ SYSIO / BYPASS LINK
  ISZ SYSIO
  TAD I SYSIO
  SZL
  DCA SYSIO / STRIPPING INDIRECT ADDRESS
  C7600=.
RETRY,CLA+400
  TAD BLOCK
  CLL RAL
  AND C3700
  DCA DSKHI
  TAD BLOCK
  AND C37
  CLL RTR
  RTR
  RTR
  TAD BLOCK
  IAC
  DCA DSKLO
  SZL
  TAD C100
  TAD DSKHI
  TAD AFUNCT
  DEAL / SEND EXTENDED ADDRESS
  AND C7 / RETAIN FUNCTION
  TAD C6600
  DCA DKINST / EITHER 6603(READ) OR 6605(WRITE)
  TAD C7600
  DCA WC / SET WORD COUNT
  CMA
  TAD ACORE
  DCA CA / SET CORE ADDRESS
  JMS DSKRTN
  CMA
  DCA WC / RESET WORD COUNT
  DEAC / GET STATUS
  AND C3700 / RETAIN ADDRESS
  DEAL
  CLA CLL
  TAD RECA
  DCA CA / RESET CORE ADDRESS
  TAD C200
  JMS DSKRTN
  ISZ SYSIO / SHIFT TO NORMAL RETURN
  JMP FINIS
ERRONE,ISZ SWITCH
  SKP
  JMP RETRY
FINIS,DCMA / STOP DISK OPERATIONS
  CLA CLL
  JMP I SYSIO
/
/****FOR THE DF32****
WC,0 / WORD COUNT @ 7750
CA,0 / CORE ADDR. @ 7751
/
RECA,0
C37,37
SWITCH,0
AFUNCT,0 / MEMFLD(6-8), FUNCTION(9-11)
DSKLO,0
DSKHI,0
RFUNCT=.
SETLINK,3
C100,100
/
DSKRTN,0
  TAD DSKLO
DKINST,0 / ASSEMBLED DISK INSTRUCTION
  DFSC
  JMP .-1
  DFSE
  JMP ERRONE / ON ERROR
  JMP I DSKRTN
/
C3700,3700
WFUNCT=.
C5,5
C7,7
C6600,6600
TADCORE,TAD COREADDR
ACORE,0
$
