Directory of image this file is from
This file as a plain text file
/ BSF1
/
/
/
/
/
/
/
/
/
/
/ PROZESSRECHNER - BETRIEBSSYSTEM
/ ===============================
/
/
/
/
/ FUER EINE PDP-8E VON DIGITAL EQUIPMENT GMBH
/
/ FUER DIE HERKONFERTIGUNG DER SEL STUTTGART
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/
/ BEARBEITET VON:
/
/ G. DIPPER AS/SVE 1969
/ F. WESSELY ZV/SVE 1971
/ G. MUELLER CS/SVE 1974
/
/
/
/
/
/
/
/
/EXTERNE ADRESSEN
CLOCK=3600 /STARTADRESSE UHRPR.
SOND=3601 /STARTADRESSE SONDERPRUEFUNGSPR.
STARTP=3602 /STARTADRESSE STEUERPROGRAMM
MNETZ=1722 /MERKER F. NETZAUSFALL IM COMMON
TPA=6000 /ANFANGSADRESSE AUSGABEPUFFER
/ IN STEUERPROGRAMM
/
/IN PAL8-ASSEMBLER NICHT ENTHALTENE BEFEHLE
DTLA=6766 /CLEAR AND LOAD STATUS REGISTER A
CLSK=6131 /SKIP ON CLOCK INTERRUPT
CLSA=6135 /CLOCK STATUS TO AC
SRQ=6003 /SKIP IF INTERRUPT REQUEST
SPL=6102 /SKIP ON POWER LOW
TSF1=6311 /SKIP ON TELEPRINTER 1 FLAG
KSF1=6301 /SKIP ON KEYBOARD 1 FLAG
CDI=CDF CIF
/
/IOT'S
PASK=6141 /SKIP ON FLAG PRUEFAUTOMATEN
/DEFINITIONEN
GNRDT=10 /GERAETENR. DECTAPE
ZG=-11 /NEG. GERAETEANZAHL IN
/ DVA UND DVB
EBENEP=2 /EBENE STEUERPROGRAMM
EBENE0=12 /EBENE TTY-0 (KONSOLE)
EBENE1=4 /EBENE TTY-1 (LA30)
EBENEB=13 /EBENE BEDIENUNGSPROGRAMM
FIXTAB
/
/
/ ERSTE BEFEHLE BEIM ORGANISATIONS-AUFRUF
/ ---------------------------------------
/
FIELD 2
*2
ORGP2, ORG
NOP /ENTHAELT PC
CDF 20 /SETZE DATA FIELD = INST.FIELD
CIF 0 /INST.FIELD FUER ORG AENDERN
JMP I ORGP2 /SPRUNG INS BETRIEBSSYSTEM
/ADRESSE DES ORG-AUFRUF-EINGANGS
///
/
/RUN TIME LINKAGE ROUTINES IN FELD 2
/------------------------------------
/
/(NORMALERWEISE VOM LINKING LOADER GELADEN)
/
*33
BYNK=20
/
/COMMON SUBROUTINE CALL LINKAGE ROUTINE
/
LYINK, 0
KY6201, CDF BYNK /SET DATA FIELD TO THIS BANK
KY6202, CIF 00 /SET INSTRUCTION FIELD TO ZERO
JMP I YLINKP /EXIT TO MASTER LINKAGE ROUTINE
YLINKP, MLINK
/
/COMMON SUBROUTINE RETURN LINKAGE ROUTINE
/
RYTN, 0
CDF BYNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO ZERO
JMP I MYRTNP /EXIT TO MASTER RETURN ROUTINE
MYRTNP, MRTN
/
/CHANGE DATA FIELD TO CURRENT AND SKIP
/
YDFSKP, 0
ISZ YDFSKP /INDEX ADDRESS FOR SKIPPING
CDF BYNK /CHANGE DATA FIELD TO CURRENT BANK
JMP I YDFSKP /EXIT
/
/CHANGE DATA FIELD TO COMMON AND SKIP
/
YDZSKP, 0
ISZ YDZSKP /INDEX RETURN ADDRESS FOR SKIPPING
CDF 10 /CHANGE DATA FIELD TO 1
JMP I YDZSKP /EXIT
/
/OFF BANK INDIRECT SUBROUTINE
/
YBISUB, 0
CDF BYNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO ZERO
JMP I MYOBIP /EXIT TO MASTER OFF BANK INDIRECT
MYOBIP, MOBI
/
/OFF PAGE INDIRECT SUROUTINE
/
YPISUB, 0
CDF BYNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO BANK ZERO
JMP I MYOPIP /EXIT TO MASTER OFF PAGE INDIRECT
MYOPIP, MOPI
/
/ROUTINE TO HANDLE DUMMY ARGUMENTS
/
YUMSUB, 0
CDF BYNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO BANK ZERO
JMP I MYDUMP /EXIT TO MASTER DUMMY ARGUMENT ROUT.
MYDUMP, MDUM
/
/VON BIBLIOTHEKS-ROUTINEN BENUTZTE ZELLEN IN FELD 2
/--------------------------------------------------
/
/
*7
0
0
*20
0
0
0
0
0
0
0
0
0
0
0
*74
0
0
*121
0
0
*175
0
0
0
PAGE
ZBLOCK 600 /RESERVE
/
/
/ ERSTE BEFEHLE BEIM ORGANISATIONS-AUFRUF
/ ---------------------------------------
/
FIELD 1
*2
ORGP1, ORG
NOP /ENTHAELT PC
CDF 10 /SETZE DATA FIELD = INST.FIELD
CIF 0 /INST.FIELD FUER ORG AENDERN
JMP I ORGP1 /SPRUNG INS BETRIEBSSYSTEM
/ADRESSE DES ORG-AUFRUF-EINGANGS
///
/
/RUN TIME LINKAGE ROUTINES IN FELD 1
/-----------------------------------
/
/(NORMALERWEISE VOM LINKING LOADER GELADEN)
/
*33
BXNK=10
/
/COMMON SUBROUTINE CALL LINKAGE ROUTINE
/
LXINK, 0
KX6201, CDF BXNK /SET DATA FIELD TO THIS BANK
KX6202, CIF 00 /SET INSTRUCTION FIELD TO ZERO
JMP I XLINKP /EXIT TO MASTER LINKAGE ROUTINE
XLINKP, MLINK
/
/COMMON SUBROUTINE RETURN LINKAGE ROUTINE
/
RXTN, 0
CDF BXNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO ZERO
JMP I MXRTNP /EXIT TO MASTER RETURN ROUTINE
MXRTNP, MRTN
/
/CHANGE DATA FIELD TO CURRENT AND SKIP
/
XDFSKP, 0
ISZ XDFSKP /INDEX ADDRESS FOR SKIPPING
CDF BXNK /CHANGE DATA FIELD TO CURRENT BANK
JMP I XDFSKP /EXIT
/
/CHANGE DATA FIELD TO COMMON AND SKIP
/
XDZSKP, 0
ISZ XDZSKP /INDEX RETURN ADDRESS FOR SKIPPING
CDF 10 /CHANGE DATA FIELD TO 1
JMP I XDZSKP /EXIT
/
/OFF BANK INDIRECT SUBROUTINE
/
XBISUB, 0
CDF BXNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO ZERO
JMP I MXOBIP /EXIT TO MASTER OFF BANK INDIRECT
MXOBIP, MOBI
/
/OFF PAGE INDIRECT SUROUTINE
/
XPISUB, 0
CDF BXNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO BANK ZERO
JMP I MXOPIP /EXIT TO MASTER OFF PAGE INDIRECT
MXOPIP, MOPI
/
/ROUTINE TO HANDLE DUMMY ARGUMENTS
/
XUMSUB, 0
CDF BXNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO BANK ZERO
JMP I MXDUMP /EXIT TO MASTER DUMMY ARGUMENT ROUT.
MXDUMP, MDUM
/
/VON BIBLIOTHEKS-ROUTINEN BENUTZTE ZELLEN IN FELD 1
/--------------------------------------------------
/
/
*7
0
0
*20
0
0
0
0
0
0
0
0
0
0
0
*74
0
0
*121
0
0
*175
0
0
0
FIELD 0
/
/ ERSTE BEFEHLE NACH EINEM INTERRUPT.
/ -----------------------------------
/
*0
RESTRT, JMP I INTRT1 /RESTART-BEFEHL BEI POWER UP
/ENTHAELT PC ZUR FORTSETZUNG
JMP I .+1 /SPRUNG INS BETRIEBSSYSTEM
INT /ADRESSE DES INTERRUPT-EINGANGS
///
/
/ERSTE BEFEHLE NACH EINEM ORGANISATIONSAUFRUF
/--------------------------------------------
/
*3
NOP /ENTHAELT PC
CDF 0 /SETZE DATA FIELD = INST.FIELD
JMP I .+1 /SPRUNG INS BETRIEBSSYSTEM
ORG /ADRESSE DES ORG-AUFRUF-EINGANGS
///
/
/
/
/ DEFINITIONEN PAGE 0
/ -------------------
/
*17
IR0, 0 /AUTO-INDEX-REGISTER
/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
/
/FUER TESTZWECKE
/
*150
STOP0, IOF
JMS 3
1
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
*156
INTRT1, INTRET
MPA, 1 /* MERKER F. PRUEFAUTOMATENFLAG
/GESETZT, DAMIT NACH LADEN DES BS
/START EINES PRUEFAUTOMATEN VOR
/GRUNDSTART NICHT SCHADET.
/
MCOM, 0 /GERAETENR.
VERS1, 0 /AUFRUF-VERSORGUNGEN AUS ANWENDER-PROGR.
VERS2, 0
VERS3, 0
VERS4, 0
VERS5, 0
AC, 0
L, 0
PC, 0
SF, 0
M, 0
APR, 0001 /ANGEFORDERTES-PROGRAMM-REGISTER
/ENTHAELT EIN BIT JE ANGEFORDERTER EBENE
/ANFANGS-STAND FUER DUTY-CYCLE-PROGRAMM
LPR, 0014 /LAUFENDES PROGRAMM-REGISTER
/ENTHAELT DIE NUMMER DER AKTUELLEN EBENE
/ANFANGS-STAND FUER DUTY-CYCLE-PROGRAMM
/
/RUN TIME LINKAGE ROUTINES IN FELD 0
/-----------------------------------
/
/(NORMALERWEISE VOM LINKING LOADER GELADEN;
/ NOTWENDIG FUER FORTRAN-PROGRAMME)
/
*33
BNK=00
/
/COMMON SUBROUTINE CALL LINKAGE ROUTINE
/
LINK, 0
K6201, CDF BNK /SET DATA FIELD TO THIS BANK
K6202, CIF 00 /SET INSTRUCTION FIELD TO ZERO
JMP I MLINKP /EXIT TO MASTER LINKAGE ROUTINE
MLINKP, MLINK
/
/COMMON SUBROUTINE RETURN LINKAGE ROUTINE
/
RTN, 0
CDF BNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO ZERO
JMP I MRTNP /EXIT TO MASTER RETURN ROUTINE
MRTNP, MRTN
/
/CHANGE DATA FIELD TO CURRENT AND SKIP
/
CDFSKP, 0
ISZ CDFSKP /INDEX ADDRESS FOR SKIPPING
CDF BNK /CHANGE DATA FIELD TO CURRENT BANK
JMP I CDFSKP /EXIT
/
/CHANGE DATA FIELD TO COMMON AND SKIP
/
CDZSKP, 0
ISZ CDZSKP /INDEX RETURN ADDRESS FOR SKIPPING
CDF 10 /CHANGE DATA FIELD TO 1
JMP I CDZSKP /EXIT
/
/OFF BANK INDIRECT SUBROUTINE
/
OBISUB, 0
CDF BNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO ZERO
JMP I MOBIP /EXIT TO MASTER OFF BANK INDIRECT
MOBIP, MOBI
/
/OFF PAGE INDIRECT SUBROUTINE
/
OPISUB, 0
CDF BNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO BANK ZERO
JMP I MOPIP /EXIT TO MASTER OFF PAGE INDIRECT
MOPIP, MOPI
/
/ROUTINE TO HANDLE DUMMY ARGUMENTS
/
DUMSUB, 0
CDF BNK /SET DATA FIELD TO THIS BANK
CIF 00 /SET INSTRUCTION FIELD TO BANK ZERO
JMP I MDUMP /EXIT TO MASTER DUMMY ARGUMENT ROUT.
MDUMP, MDUM
*200
/RESERVIERT FUER USER TABLE
/--------------------------
/
/DIE BEIM START EINES FORTRAN-PROGRAMMES HIER
/EINGELESEN WERDEN MUSS
START, JMP INTRET /STARTADRESSE DES BS
PAGE
/
/FIELD 0
/FULL LINKAGE ROUTINES
/---------------------
/
/
K77A, 77 /MUST BE FIRST LOC ON PAGE
/
/MASTER OFF PAGE INDIRECT ROUTINE
/
MOPI, DCA AXC /SAVE AC
TAD I OPIP /PICK UP ADDRESS OF PARAMETER
DCA DUMSUB
TAD I DUMSUB /ACTUAL PARAMETER
DCA 7 /TO A TEMP
TAD I 7 /PICK UP FINAL DATA
DCA I K7 /TO LOC 7 IN FROM BANK
RDF
ATVX, TAD K6202 /MAKE A CIF FROM INSTRUCTION
DCA ATV /SAVE IN THIS SEQUENCE
JMP ATV-1
/
/MASTER OFF BANK INDIRECT ROUTINE
/
MOBI, DCA AXC /SAVE AC
TAD I OBIP /ADDRESS OF PARAMETER
DCA DUMSUB
TAD I DUMSUB /ACTUAL COMMON ADDRESS
DCA 7 /SAVE IT
RDF /FROM BANK
TAD K6201 /MAKE A CDF FROM INSTRUCTION
DCA .+3 /PLACE IN THIS SEQUENCE
CDF 10 /CHANGE DATAA FIELD TO COMMON
TAD I 7 /ACTUAL DATA
NOP /BECOMES CDF AND CIF FROM INSTRUCTION
DCA I K7 /TO LOCATION 7 IN FROM BANK
RDF
CDF 10
JMP ATVX
/
/MASTER INDIRECT DUMMY ARGUMENT SUBROUTINE
/
MDUM, DCA AXC /SAVE AC
TAD I DUMP /PICK UP ADDRESS OF PAR
DCA DUMSUB
TAD I DUMSUB /PICK UP POINTER TO 2 WORD VECTOR
DCA DUMTEM /TO A TEMPORARY
TAD I DUMTEM /FIELD IS IN AS A CDF
DCA ABORT /TO THIS SEQUENCE
RDF /FROM FIELD
TAD K6202 /MAKE A CIF INSTRUCTION
DCA ATV /TO THIS SEQUENCE FOR EXIT
ISZ DUMTEM /POINT TO LOC IN FIELD
TAD I DUMTEM /ACTUAL LOC IN UNKNOWN FIELD
DCA I K7 /TO FROM FIELD LOC 7
ABORT, NOP /BECOMES CDF UNKNOWN
ISZ DUMSUB /BUMP RETURN ADDRESS
ATV, NOP /BECOMES CIF FROM
TAD AXC /RESTORE AC
JMP I DUMSUB /EXIT
AXC=CDZSKP
DUMTEM=OBISUB
OPIP, OPISUB
OBIP, OBISUB
DUMP, DUMSUB
/
/MASTER LINKAGE ROUTINE
/
MLINK, DCA AXC /SAVE AC
RDF
TAD K6201 /MAKE A CDF
DCA DUMTEM
TAD I LINKP /ADDRESS OF CODE WORD
JMS RTS1
TAD DUMTEM /CDF FROM INSTRUCTION
DCA I DUMSUB /TO FIRST WORD OF 2 WORD VECTOR
ISZ DUMSUB /POINT TO DISPLACEMENT
TAD LINK /ADDRESS OF CODE WORD
IAC /INCREMENT TO FIRST ARGUMENT
DCA I DUMSUB /TO SECOND WORD OF 2 WORD VECTOR
JMP ATVX-1
/
/MASTER RETURN ROUTINE
/
MRTN, DCA AXC /SAVE AC
TAD I RTNP /ADDRESS OF CODE WORD
JMS RTS1
TAD I DUMSUB /FIELD TO RETURN TO AS A CDF INSTR.
TAD K2
DCA ATV
ISZ DUMSUB
TAD I DUMSUB
DCA DUMSUB
JMP ATV
/
/DATA
/
K2, 2
K100A, 100
K7700A, 7700
LINKP, LINK
RTNP, RTN
/
/SUBROUTINE 1
/
RTS1, 0
DCA LINK
TAD I LINK /CODE WORD
K200A, AND K77A /MASK OUT NUMBER OF ARGUMENTS
TAD K200A /+DISPLACEMENT
DCA ABORT /GIVES ADDRESS OF BORT ENTRY
TAD ABORT
TAD K100A /+DISPLACEMENT
DCA ATV /GIVES ADDRESS OF TV DISPLACEMENT
K6203, CDF CIF 00 /SET UP USE TABLES IN BANK 0
TAD I ABORT /TO CDF INSTRUCTION
DCA RTSCDF /TO FIRST WORD OF 2 WORD VECTOR
TAD I ATV /TO BANK DISPLACEMENT
SNA /WAS IT LOADED
JMP NOTIN /NO
DCA DUMSUB /TO SECOND WORD OF 2 WORD VECTOR
RTSCDF, 0
JMP I RTS1
NOTIN, CIF 10
JMS I K7700A
K7, 7
1 /USER ERROR 1-PROGRAM NOT LOADED
/
//
/DUTY-CYCLE-PROGRAMM AUF EBENE 12
/(ZAEHLT TOTZEIT)
DUTY, RAR
ISZ COUNT
JMP .-1
ISZ COUNT
JMP .-1
ISZ COUNT
JMP .-1
ISZ CLOOP /1 MINUTE ?
JMP DUTY / NEIN
ISZ TOTMNT /ERHOEHE TOTZEIT (MINUTEN SEIT 0 UHR)
NOP
DCA DUTYAC
TAD (-2404 /1284
DCA CLOOP /SETZE LOOP-ZAEHLER NEU
TAD DUTYAC
JMP DUTY
/ ---
COUNT, 0
CLOOP, -2404 /1284 MAL 46,6968 MILLISEC = 1 MINUTE
DUTYAC, 0 /ZWISCHENSPEICHER
PAGE
/
/ EINGANG INS BETRIEBSSYSTEM
/ DURCH EINEN INTERRUPT
/ --------------------------
/
INT, DCA AC /AC ZUR VERSORGUNG VON SAVREG
RAL
DCA L / L ZUR VERSORGUNG VON SAVREG
TAD 0
DCA PC /PC ZUR VERSORGUNG VON SAVREG
RIB /SF = IF 6-8 + DF 9-11
DCA SF /SF ZUR VERSORGUNG VON SAVREG
JMS SAVREG /REGISTER DER AKT. EBENE RETTEN
JMP RETURN /SPRUNG IN DIE FLAG-ABFRAGE
///
/
/
/ EINGANG INS BETRIEBSSYSTEM
/ DURCH ORGANISATIONS-AUFRUF
/ --------------------------
/
ORG, DCA AC /AC ZUR VERSORGUNG VON SAVREG
RAL
DCA L / L ZUR VERSORGUNG VON SAVREG
TAD I (3 /PC AUS ZELLE 3 FIELD X HOLEN
DCA PC /PC ZUR VERSORGUNG VON SAVREG
RDF /ANWENDER-DATA-FIELD BIT 6-8 = X
TAD CDFBEF /6201
DCA CDFX /62X1
RDF
CLL RTR
RAR
RDF /SF = IF 6-8 + DF 9-11
DCA SF /SF ZUR VERSORGUNG VON SAVREG
CDFBEF, CDF 0
JMS SAVREG /REGISTER DER AKT. EBENE RETTEN
JMS HOLVER /HOLE AUFRUF-CODE
DCA CALL /CODE DES AUFRUFES MERKEN
TAD CALL
TAD JMPBEF /ERRECHNE POINTER-ADRESSE
DCA .+1
JMP I TAB /SPRUNG IN DIE AUFRUF-BEARBEITUNG
///
JMPBEF, JMP I TAB
/
/
/UP. ZUM HOLEN EINER VERSORGUNG
/------------------------------
/
HOLVER, NOP
CDFX, CDF
TAD I PC /HOLE VERSORGUNG INDIREKT
CDF 0
ISZ PC /ERHOEHE PC FUER NAECHSTE ZELLE
JMP I HOLVER
///
CALL, 0 /CODE DES AUFRUFES
TAB, CALL0 / 0 = PROGRAMM-ANFORDERUNG
CALL1 / 1 = PROGRAMMENDE GLEICHE EBENE
CALL2 / 2 = BAND LESEN
CALL2 / 3 = BAND SCHREIBEN
CALL2 / 4 = BAND LESEN, PROGR. START
CALL5 / 5 = AUSGABE ZEICHENFOLGE
CALL6 / 6 = EINGABE EINES ZEICHENS
CALL7 / 7 = PROGRAMMENDE ANDERE EBENE
/
/
/UP. ZUM RETTEN DER REGISTER IN SAVE-AREA
/---------------------------------------
/
SAVREG, NOP
TAD IR0
DCA ISAVE0 /INDEXREGISTER RETTEN
TAD LPR /NUMMER DER AKT.EBENE = A
CLL RTL /MAL 4
TAD (ACSAVE-5 / + BEZUGSADRESSE
DCA IR0
TAD AC /AC NACH ACSAVE EBENE A
DCA I IR0
TAD L / L NACH LSAVE EBENE A
DCA I IR0
TAD PC /PC NACH PCSAVE EBENE A
DCA I IR0
TAD SF /SF NACH SFSAVE EBENE A
DCA I IR0
JMP I SAVREG
///
ISAVE0, 0 /ENTHAELT IND.REG.STAND IR0 BEI
/EINGANG INS BETRIEBSSYSTEM
/
/
/ INTERRUPT-RETURN, AUSGANG AUS DEM
/ BETRIEBSSYSTEM FUER ALLE EINGAENGE
/ ----------------------------------
/
INTRET, CLA CLL
DCA IR0 /VERSCHIEBE-ZAEHLER LOESCHEN
TAD APR
SHIFT, CLL RAL /VERSCHIEBE APR
ISZ IR0 /ERHOEHE EBENENR.
SNL /HOECHSTANGEFORDERTE EBENE ?
JMP SHIFT / NEIN
CLA CLL
TAD IR0
DCA LPR /HOECHSTE EBENE STARTEN
TAD LPR /EBENEN-NUMMER N
CLL RTL /MAL 4
TAD (SFSAVE-4 / + BEZUGSADRESSE
DCA SF /ADRESSE VON SFSAVE EBENE N
TAD I SF /SF
RTL
CLL RAL
AND (70
TAD CDFBEF /6201
DCA REST2
TAD I SF /SF
AND (70
TAD (6202
DCA REST1
TAD ISAVE0
DCA IR0 /INDEXREG.STAND ZURUECKHOLEN
CMA
TAD SF
DCA SF /ADRESSE VON PCSAVE EBENE N
TAD I SF /PC
DCA PC
CMA
TAD SF
DCA L /ADRESSE VON LSAVE EBENE N
CMA
TAD L
DCA AC /ADRESSE VON ACSAVE EBENE N
TAD I L /
CLL RAR
TAD I AC /AC
REST1, CIF /SETZE INST.FIELD
REST2, CDF /SETZE DATA FIELD
ION /INTERRUPT EINSCHALTEN
JMP I PC /SPRUNG INS ANWENDER-PROGRAMM
///
PAGE
/
/ EINGANG INTERRUPT SKIP CHAIN
/ ABFRAGE AUF GERAETE-FLAGS
/ ----------------------------
/
/
RETURN, SPL /SKIP ON POWER LOW
JMP CH0
JMP PFAIL
///
CH0, JMS DCABFR /DECTAPE FERTIG ?
/
/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
NOP
NOP
/ SRQ /INTERRUPT ?
/ JMP INTRET / NEIN, STARTE HOECHSTE EBENE
/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
JMS DCFLG /ABFRAGE DECTAPE FLAG ON?
/
CLSK /CLOCK-FLAG ON?
JMP CH1 /NEIN
CLSA /CLEAR CLOCK-FLAG
JMS ANFORD /JA, PROGRAMMANFORDERUNG
1 /LEVELNR.
CLOCK /STARTADRESSE
0 /IF + DF
/
CH1, PASK /FLAG DER PRUEFAUTOMATEN ?
JMP CH10 / NEIN
TAD MPA /MERKER F. AUTOMATENFLAG ?
SZA CLA /FLAG ERSTMALIG ?
JMP CH10 / NEIN
ISZ MPA /SETZE MERKER AUTOMATENFLAG
JMS ANFORD /PROGRAMMANFORDERUNG
EBENEP /EBENENNR.
STARTP /STARTADRESSE
0 /IF+DF
/
CH10, TSF /TTY-PRINTER-0 FLAG ON?
JMP CH11 /NEIN
JMS INTFSA /JA, AUSGABE
0 /PRINTERNR.
/
CH11, TSF1 /DECWRITER PRINTER FLAG ?
JMP CH12 / NEIN
JMS INTFSA
1 /PRINTERNR.
/
CH12, KSF /TTY-KEYBOARD-0-FLAG ON ?
JMP CH13 /NEIN
JMS INTFSE /JA, EINGABE
0 /KEYBOARDNR.
/
CH13, KSF1 /DECWRITER KEYBOARD FLAG ?
JMP CH14 / NEIN
JMS INTFSE
1 /KEYBOARDNR.
/
CH14, JMP CH15 /RESERVE
NOP
NOP
NOP
/
NOP
NOP
NOP
NOP
/
CH15, JMS DCFLG /DECTAPE FLAG ABFRAGE
JMP INTRET /STARTE HOECHSTANGEFORD.
/PRIORITAETSEBENE
///
/
/VERSORGUNGEN AUS DEM AUFRUF IN FIELD X
/NACH PAGE 0 FIELD 0 UMSPEICHERN UND
/KORRIGIERTE FORTSETZUNGSADRESSE IN
/PC-SAVE EBENE A SICHERSTELLEN
/-------------------------------------
/
VERS, NOP
JMS DCFLAG /ABFRAGE AUF DECTAPE-FLAG
TAD I VERS
CMA IAC
DCA AC /ZAEHLER FUER VERSORGUNGEN
CMA
TAD IR0
DCA L /ADRESSE PCSAVE EBENE A
TAD (VERS1-1
DCA IR0
VERSA, JMS HOLVER
DCA I IR0 /VERSORGUNG ABSPEICHERN
ISZ AC /ZAEHLER ERHOEHEN
JMP VERSA
TAD PC /=FORTSETZUNGSADR. AKT. EBENE A
DCA I L /ABSPEICHERN IN PCSAVE EBENE A
ISZ VERS
JMP I VERS
///
/
/
/ ANFORDERUNG EINES PROGRAMMES
/ ----------------------------
/
ANFORD, NOP /ENTHAELT ADRESSE DER VERSORGUNG
CLA
ANFO1, TAD I ANFORD /EBENENUMMER N
TAD (MASKTB-1
DCA AC
/EBENE SCHON EINGETRAGEN ?
TAD I AC /BIT N-1
AND APR
SZA CLA
JMP RETURN /WENN GLEICHE EBENE, BIT GESETZT
/(ANFORDRUNG EINER SCHON ODER NOCH
/ ANGEFORDERTEN EBENE KOMMT NICHT
/ DURCH !)
TAD I ANFORD /EBENENNR.
CIA
DCA NEGEB /NEG. EBENENNR.
TAD (ZG /ANZAHL GERAETE
DCA ZGER
TAD (DVB-1 /DEVICE BUSY
DCA IR0 /SETZE INDEX DEVICE BUSY
ANFO2, TAD I IR0 /EBENE IN DEVICE BUSY
TAD NEGEB /NEG. EBENENNR.
SNA CLA /BENUTZT EBENE DIESES GERAET ?
JMP RETURN / JA
ISZ ZGER
JMP ANFO2
/EINTRAG DER EBENE
TAD I AC
TAD APR /SETZE EBENE N IN APR
DCA APR
TAD I ANFORD /EBENENNUMMER N
ISZ ANFORD
CLL RTL /MAL 4
TAD (PCSAVE-5 /+BEZUGSADRESSE
DCA IR0 /ADRESSE PCSAVE EBENE N
TAD I ANFORD /CORELOC
ISZ ANFORD
DCA I IR0 /ABLEGEN NACH PCSAVE EBENE N
TAD I ANFORD /SF= IF 6-8 + DF 9-11 EBENE N
DCA I IR0 /ABLEGEN NACH SFSAVE EBENE N
JMP RETURN /RETURN
///
NEGEB, 0 /NEG. EBENENNR.
ZGER, 0 /GERAETEZAEHLER
/
/
/ ORGANISATIONSAUFRUF ZUR
/ ANFORDERUNG EINES ANWENDERPROGRAMMES
/ -------------------------------------
/
CALL0, JMS VERS /VERSORGUNGEN HOLEN
3 /ANZAHL DER VERSORGUNGEN
TAD (VERS1 /ADRESSE DER ERSTEN VERSORGUNG
DCA ANFORD /IN ANFORD ABLEGEN
JMP ANFO1 /SPRUNG IN ANFORD
///
PAGE
/
/
/ ORGANISATIONSAUFRUF
/ 2 = BAND LESEN
/ 3 = BAND SCHREIBEN
/ 4 = BAND LESEN, PROGRAMM STARTEN
/ --------------------------------
/
CALL2, TAD (GNRDT /GERAETENUMMER FUER DECTAPE = 8
JMS DEVCHK /UP GERAET PRUEFEN
JMP RETURN /AUSGANG WENN GERAET TAETIG
///
TAD CALL /CODE DES AUFRUFES
TAD (-4
SNA CLA /CODE 2 ODER 3, 4 VERSORGUNGEN
IAC /CODE 4 5 VERSORGUNGEN
TAD (4
DCA B2
JMS VERS /VERSORGUNGEN HOLEN
B2, 4 /ANZAHL DER VERSORGUNGEN
TAD CALL /CODE DES AUFRUFES
TAD (-4
DCA DLS /DLS=0 WENN CODE 4
CLA CLL CMA RTL /-3
TAD CALL /CODE DES AUFRUFES
SZA CLA /WENN CODE 3, WRITE, AC=0
IAC /WENN CODE 2 ODER 4, READ, AC=1
JMP DECPR /SPRUNG IN DIE DECTAPE PROGRAMME
///
DLS, 0 /BEI CODE 2/3 UNGL 0, CODE 4 = 0
/
/
/ AUSGANG AUS DEN DECTAPE PROGRAMMEN,
/ WENN DER DATENTRANSFER BEENDET IST.
/ -----------------------------------
/
INTDEC, TAD (GNRDT /GERAETENR. DECTAPE
DCA M /GERAETENUMMER M
TAD M
TAD (DVB /+BEZUGSADRESSE
DCA SF /=ADRESSE DVB GERAET M
TAD I SF /EBENENNUMMER A
DCA AC
JMS DEVRET /BITS AUS DVA NACH APR, DVA,DVB=0
TAD DLS
SZA CLA /WENN DLS=0 WAR CODE 4
JMP RETURN /RETURN
TAD AC /EBENENNUMMER A
TAD (MASKTB-1 /+BEZUGSADRESSE
DCA SF /ADRESSE BIT A-1
TAD I SF /NUR BIT A-1 =1
CMA /NUR BIT A-1 =0
AND APR
DCA APR /BIT A-1 IN APR = 0
TAD VERS5
DCA STRT+1 /LEVELNO. N
IAC
TAD DCORE
DCA STRT+2 /CORELOC
TAD DUF
RTR
RAR
TAD DUF
AND (77
DCA STRT+3 /SF = IF 6-8 + DF 9-11
STRT, JMS ANFORD
0 /LEVELNO. N
0 /CORELOC
0 /IF + DF
///
/
/
/ ABMELDUNG EINES GERAETES
/ BITS AUS DVA NACH APR,
/ DVA UND DVB GERAET M LOESCHEN
/ -----------------------------
/
DEVRET, NOP
TAD M /GERAETENR. M
TAD (DVA /+BEZUGSADRESSE
DCA SF /=ADRESSE DVA GERAET M
TAD I SF /DVA GERAET M
TAD APR /BITS AUS DVA SIND IN APR = 0
DCA APR /DAHER UEBERTRAGEN MIT TAD MOEGL.
DCA I SF /DVA GERAET M LOESCHEN
TAD M /GERAETENR. M
TAD (DVB /+BEZUGSADRESSE
DCA SF /ADRESSE DVB GERAET M
DCA I SF /DVB GERAET M LOESCHEN
JMP I DEVRET
///
/
/ PRUEFEN EINES GERAETES, DEVICE CHECK
/ GERAET FREI - DVA UND DVB BELEGEN
/ GERAET TAETIG - PCSAVE EBENE A RUECKSETZEN
/ -------------------------------------------
/
DEVCHK, NOP
DCA M /AC = GERAETENR. M
TAD M
TAD (DVB /+BEZUGSADRESSE
DCA SF /= ADRESSE DVB GERAET M
TAD I SF /DVB GERAET M
SZA CLA /WENN GERAET M FREI
JMP DEVCH1 /WENN GERAET M TAETIG
TAD LPR /EBENENNR. A
DCA I SF /NACH DVB GERAET M LADEN
ISZ DEVCHK /ERHOEHE RUECKKEHRADRESSE FUER
JMP DEVCH2 /AUSGANG GERAET FREI
///
DEVCH1, TAD LPR /EBENENNR. A
CLL RTL /MAL 4
TAD (PCSAVE-4 /+BEZUGSADRESSE
DCA SF /= ADRESSE PCSAVE EBENE A
CLA CLL CMA RAL /-2
TAD I SF
DCA I SF /ANF.ADR. IM ANWENDERPROGRAMM
DEVCH2, TAD M /GERAETENR. M
TAD (DVA /+BEZUGSADRESSE
DCA SF /= ADRESSE DVA GERAET M
TAD LPR /EBENENNR. A
TAD (MASKTB-1 /+BEZUGSADRESSE
DCA L /ADRESSE BIT A-1
TAD I SF /DVA GERAET M
AND I L /ADRESSE BIT A-1
SZA CLA
JMP DEVCH3
TAD I SF /DVA GERAET M
TAD I L /BIT A-1
DCA I SF /BIT A-1 IN DVA GERAET M SETZEN
DEVCH3, TAD I L /NUR BIT A-1 = 1
CMA /NUR BIT A-1 = 0
AND APR
DCA APR /BIT A-1 IN APR = 0
JMP I DEVCHK
///
PAGE
/
/
/TC01 SUBROUTINES REV. 7/67
/----------------------------
/
/
/GEAENDERT ZUR VERWENDUNG IM BETRIEBSSYSTEM PDP-8/E
/ZUR HERKON-RELAIS FERTIGUNG
/
/
DECPR, TAD (DR128
DCA DRET /READ-WRITE-RETURN AFTER SEARCH
CLA CMA
TAD VERS1
DCA DCORE /FIRST CORE LOCATION-1 OF TRANSFER
TAD VERS2
DCA DUF /UNIT AND FIELD
TAD VERS3
DCA DNCB /-NUMBER OF BLOCKS TO BE TRANSFERRED
TAD VERS4
DCA DTEM /STORE BLOCK NO.
/
DSERH, TAD (DTBLK /DTBLK TO 7755 (CA)
DCA I (7755
TAD (DTINT
DCA MCOM /INTERRUPT ENTRANCE
TAD DUF
AND D7000 /PICK UP UNIT NUMBER
TAD (614 /SET TO SEARCH,NORMAL,REVERSE
DTLA /LOAD STATUS A
DTLB /FIELD 0
JMP I RET4 /INTERRUPT RETURN INS BETRIEBSSYSTEM
///
DR128, TAD D20 /WRITE (NOT READ),(40-20)
TAD (30 /READ, CANCEL SEARCH (20+10)
DTXA /SET FUNCTION
TAD DCORE /FIRST CORE LOCATION-1 OF TRANSFER
DCA I (7755 / TO CURRENT ADDRESS
ISZ MCOM /POINT INTERRUPT ENTRANCE TO DINT
DR127, DTXA /SEND READ OR WRITE
TAD D7600 /SET WORD COUNT FOR 1 PAGE
DCA I (7754 /-128 TO WORD COUNT
TAD DNCB
SNA /BLOCK COUNT NOT ZERO, CONTINUE
JMP I DECINT /END OF TRANSFER, GO TO INTDEC
JMP I RET4 /INTERRUPT RETURN INS BETRIEBSSYSTEM
///
/EINGANG NACH INTERRUPT
DTINT, JMP DTS3A
/
DINT, DTRB /READ STATUS B
SPA CLA
JMP DER /ERROR FLAG
ISZ DNCB /COUNT BLOCKS
JMP DR127 /CONTINUE OPERATION
DTURNX, TAD D200 /COMPLEMENT MOTION AND DIRECTION
TAD D400
JMP DR127
///
/
DTS3A, DTRB /READ STATUS B
RTL /LOOK AT BIT 2
SPA CLA /END ZONE?
JMP DTURNX /YES (MOTION BIT=0), TURN
DTRB
SPA CLA
JMP DER /ERROR FLAG BIT 0=1
DTRA
D7000, RTL
RTL /FOR-REV STATUS (BIT 3) IN LINK
D7600, 7600 /GROUP 2 CLA
TAD DTBLK
CMA IAC
TAD DTEM /LINK COMP. IF REQUIRED BLK NO.
SNA /IS BIGGER I.E. MUST GO FORWARD
JMP DTFIND /FOUND BLOCK CHECK DIRECTION
CMA IAC
SNL
IAC /GO 2 MORE BLOCKS BEFORE TURNING
SNL CLA
TAD D400 /TURN IF HERE
JMP DR127 /XOR TO A STATUS AND DISMIS
///
DER, DTRA /ERROR ROUTINE, READ STATUS A
AND D200 /STOP TAPE IF RUNNING, SET BIT 4 = 0
TAD D2 /DON'T CLEAR ERRORS BIT 10=1
DTXA
DTRB /ERROR STATUS B
JMP DTHLT /DECTAPE-FEHLER-AUSGANG
///
/NACH CONTINUE:
/
/ABBRUCH DER LAUFENDEN EBENE, AUF DER DER
/LESE- ODER SCHREIB-FEHLER AUFTRAT
DTCONT, CLA CLL
TAD (214 /CLEAR ERROR FLAG BY STOPPING
/DECTAPE 0
DTLA
TAD (DVB+GNRDT /DEVICE-BUZY-TABELLE: DECTAPE
DCA SF
TAD I SF /EBENENNR.
JMS CAL7 /ABBRUCH
CLA CMA
DCA DLS /KEIN START BEI CODE 4
JMP INTDEC
///
DTFIND, SNL CLA /TEST DIRECTION
JMP DR127 /DONT TURN YET, STILL IN REVERSE
DTXA /CLEAR FLAG
TAD DUF
DTLB /SET MEMORY FIELD
JMP I DRET /EXIT TO COMPLETION RETURN
///
DRET, 0 /DR128 IF WRITE, OR DR128+1 IF READ
DUF, 0 /UNIT AND FIELD
DNCB, 0 /-NUMBER OF BLOCKS TO BE TRANSFERRED
DTEM, 0 /HOLDS REQUIRED BLK NO.
DTBLK, 0 /BLOCK NO. DEPOSITED HERE BY CONTROL
DCORE, 0 /FIRST LOCATION-1 OF TRANSFER
RET4, RETURN /INTERRUPT RETURN INS BETRIEBSSYSTEM
DECINT, INTDEC /RETURN INS BETRIEBSSYSTEM,
/WENN DECTAPE-AUFRUF ERLEDIGT.
/DIAGONALMATRIX
MASKTB, 4000 /BIT0 DIAGONAL-MATRIX
2000 / 1
1000 /BIT2
D400, 400 / 3 CHANGE DIRECTION
D200, 200 /BIT4 CHANGE STOP/GO
100 / 5
40 /BIT6
D20, 20 / 7
10 /BIT8
4 / 9
D2, 2 /BIT10
1 / 11
*1554
DTHLT, HLT /DECTAPE-FEHLER-HALT
JMP DTCONT /DRUECKE "CONTINUE", FALLS
/NICHT GERADE GESCHRIEBEN WIRD
/ODER DIES UNGEFAEHRLICH IST
PAGE
/
/
/ORGANISATIONSAUFRUF ZUM
/AUSDRUCKEN EINER ZEICHENFOLGE
/AUF EINEM FERNSCHREIBER
/------------------------------
/
CALL5, JMS DEV /VERSORGUNGEN HOLEN
/GERAET M PRUEFEN
/AUSGANG WENN GERAET TAETIG
2 /ANZAHL DER VERSORGUNGEN
TAD VERS2 /ADRESSE DES TEXTES UMSPEICHERN
DCA AC
JMS UPFS /POINTER FUER GERAET M LADEN
TAD AC /ADRESSE DES TEXTES
DCA I VERS1 /IN POINT+M ABSPEICHERN
TAD CDFX /SETZE OUTPUT-MODE
DCA I VERS2 /MODE+M = CDFX, DAHER UNGL 0
JMP CALL5A
///
/
/
/ INTERRUPT VOM FERNSCHREIBER
/ NACH AUSGABE EINES ZEICHENS
/ ---------------------------
/
INTFSA, NOP /EINSPRUNG BEI INTERRUPT VON FS
TAD I INTFSA /GERAETENUMMER M
DCA M
JMS UPFS /POINTER FUER GERAET M LADEN
CALL5A, JMS UPFSA /IOT-BEFEHLE LADEN
TCFBF, TCF /CLEAR TELEPRINTER FLAG
TAD I VERS2 /MODE+M = CDFX
SPA /WENN INPUT-MODE
JMP OUT /WENN OUTPUT-MODE
CLA CMA
DCA I VERS2 /SETZE OUTPUT-MODE
JMP ECHINT /AUSGANG BEI ECHO-INTERRUPT
///
OUT, DCA CDFBF
TAD I VERS1
DCA L /ADRESSE NAECHSTES ZEICHEN
CDFBF, CDF /CDFX
TAD I L /ZEICHEN Z
CDF 0
SZA /WENN Z = ENDEZEICHEN
JMP E
ECHINT, JMS DEVRET /BITS AUS DVA NACH APR, DVA,DVB=0
JMP RETURN
///
E, DCA L /Z ZWISCHENSPEICHERN
ISZ I VERS1
NOP
JMS UPRINT /ZEICHEN AUS L DRUCKEN
JMP RETURN
///
UPRINT, NOP
JMS UPFSA /IOT-BEFEHLE LADEN
TAD L
TLSBF, TLS /ZEICHEN DRUCKEN, FLAG LOESCHEN
CLA CLL
JMP I UPRINT
///
/
/ HILFSPROGRAMM FUER FS- AUSGABE
/ ZUM LADEN DER IOT-BEFEHLE GERAET M
/ ----------------------------------
/
UPFSA, NOP
TAD Z M /GERAETENUMMER M
TAD (ADR /ADRESSE DEVICE-CODE
DCA AC
TAD I AC /DEVICE-CODE
TAD (6012 /ABGESCHNITTENER TCF
DCA TCFBF
CLA CLL IAC RTL /4
TAD TCFBF /TLS-BEFEHL BERECHNEN
DCA TLSBF
JMP I UPFSA
///
/
/HILFSPROGRAMM FUER TTY-EIN/AUSGABE
/VERSORGUNGEN HOLEN UND GERAET PRUEFEN
/--------------------------------------
/
DEV, NOP
JMS HOLVER /HOLE GERAETENUMMER
JMS DEVCHK /UP GERAET PRUEFEN
JMP RETURN /AUSGANG WENN GERAET TAETIG
///
CLA CMA
TAD Z PC /PC AUF GERAETENR. ZURUECKSETZEN
DCA Z PC
TAD I DEV /ANZAHL UMSPEICHERN
DCA B
JMS VERS /VERSORGUNGEN HOLEN
B, 0 /ANZAHL VERSORGUNGEN
ISZ DEV
JMP I DEV
///
/
/POWER-FAIL-SERVICE-ROUTINE
/-------------------------
/
/
PFAIL, CLA CMA
CDF 10
DCA I (MNETZ /SETZE MERKER F. NETZAUSFALL
CDF 00
TAD (EBENEP /EBENE DES STEUERPROGRAMMS
CLL RTL /MAL 4
TAD (PCSAVE-5
DCA IR0 /INDEX AUF PCSAVE
TAD (STOP /ADRESSE AUFRUF HALT
DCA I IR0 / F. ABBRUCH DER EBENE
DCA I IR0 /SFSAVE DES AUFRUFES
TAD DVB+GNRDT /DEVICE BUSY
SNA CLA /DECTAPE BELEGT ?
JMP POWLOW / NEIN
/DECTAPE BELEGT BEI NETZAUSFALL
TAD DVB+GNRDT /NR. DER EBENE
CLL RTL
TAD (PCSAVE-4
DCA AC
TAD DLS /MERKER KODE 4
SNA CLA /KODE 4 ?
CLA CMA / JA
TAD (-7
TAD I AC
DCA I AC /SETZE PC ZURUECK F. AUFRUF-
/ WIEDERHOLUNG
TAD DVB+GNRDT
TAD (MASKTB-1
DCA AC
TAD I AC
TAD APR
DCA APR /TRAGE EBENE ALS ANGEFORDERT EIN
DCA DVB+GNRDT /DAMIT WIEDERSTART MOEGLICH
POWLOW, TAD (INTRT1 /ADRESSE PAGE 0
TAD (5400 /JMP I
DCA 0 / FUER POWER UP
HLT /HALT BEI POWER LOW
///
PAGE
/
/
/ORGANISATIONSAUFRUF ZUM BEENDEN
/EINES ANWENDERPROGRAMMES
/--------------------------------
/
CALL1, TAD LPR /AKT . EBENE A
TAD (MASKTB-1
DCA AC
TAD LPR
TAD (-EBENE1 /EBENENNR.
SNA CLA /EBENE DES LA30 ?
DCA M4 / JA, SETZE MERKER ZURUECK,
/ DAMIT ANDERES FORTRAN-
/ PROGRAMM STARTBAR
TAD LPR
TAD (-EBENEP
SNA CLA /STEUERPR. ?
DCA MPA /LOESCHE MERKER PRUEFAUTOMATENFLAG
TAD I AC /NUR BIT A-1 =1
CMA /NUR BIT A-1 =0
AND APR
DCA APR /BIT A-1 IN APR=0
JMP RETURN
///
/
/
/ORGANISATIONSAUFRUF ZUR EINGABEE EINES
/ZEICHENS VOM FERNSCHREIBER AUS
/--------------------------------------
/
CALL6, JMS DEV /VERSORGUNGEN HOLEN
/GERAET M PRUEFEN
/AUSGANG WENN GERAET TAETIG
1 /ANZAHL DER VERSORGUNGEN
JMS UPFS /POINTER FUER GERAET M LADEN
DCA I VERS2 /MODE+M = 0 = INPUT-MODE
JMS UPFSE /IOT-BEFEHLE LADEN
KCCBF, KCC /CLEAR KEYBOARD FLAG
JMP RETURN
///
/
/ORGANISATIONSAUFRUF ZUR BEENDIGUNG EINES PROGRAMMES
/---------------------------------------------------
/
/VON EINER ANDEREN EBENE AUS
/
CALL7, JMS VERS /VERSORGUNGEN HOLEN
1 /ANZAHL DER VERSORGUNGEN
TAD VERS1 /ZU BEENDENDE EBENE
CALL7A, JMS CAL7 /BRECHE EBENE AB
JMP RETURN
///
/
/UNTERPROGRAMM ZUM ABBRECHEN EINER EBENE
/--------------------------------------
/
CAL7, HLT
CLL RTL /EBENE MAL 4
TAD (PCSAVE-4
DCA AC /ADRESSE PC-SAVE F. EBENE
TAD (STOP /ADRESSE AUFRUF CODE 1
DCA I AC /SPEICHERE IN PC-SAVE
ISZ AC /ADRESSE SF-SAVE F. EBENE
DCA I AC /SETZE FELD F. AUFRUF
JMP I CAL7
///
/
/HILFSPROGRAMM FUER FS-EINGABE
/ZUM LADEN DER IOT-BEFEHLE FUER GERAET M
/-----------------------------------------
/
UPFSE, NOP
TAD M /GERAETENUMMER M
TAD (ADR /ADRESSE DEVICE-CODES
DCA AC
TAD I AC /DEVICE-CODE
TAD (6002 /ABGESCHNITTENER KCC
DCA KCCBF
CLA CLL IAC RTL /4
TAD KCCBF
DCA KRBBF
JMP I UPFSE
///
/
/ INTERRUPT VOM FERNSCHREIBER
/ NACH EINGABE EINES ZEICHENS
/ ---------------------------
/
INTFSE, NOP /EINSPRUNG BEI INTERRUPT VON FSE
TAD I INTFSE /GERAETENUMMER M
DCA M
JMS UPFS /POINTER FUER GERAET M LADEN
JMS UPFSE /IOT-BEFEHLE LADEN
TAD M /GERAETENUMMER M
TAD (DVB /+BEZUGSADRESSE
DCA SF / = ADR. DVB GERAET M
KRBBF, KRB /READ CHARACTER, CLEAR FLAG
DCA L /ZEICHEN Z
TAD L
DCA AC /ASCII-ZEICHEN ALS EINGABE
TAD I VERS2 /MODE+M
SZA CLA /WENN INPUT-MODE
JMP OUTMOD /WENN OUTPUT-MODE
TAD I SF /DVB GERAET M = EBENENNR. N
CLL RTL /MAL 4
TAD (ACSAVE-4 /+BEZUGSADRESSE
DCA SF / = ADR. ACSAVE EBENE N
TAD AC /ASCII-ZEICHEN ALS EINGABE
DCA I SF /NACH ACSAVE EBENE N ABSPEICHERN
ECHO, JMS UPRINT /ZEICHEN ABDRUCKEN
JMP RETURN
///
OUTMOD, TAD I SF /DVB GERAET M
SNA CLA /GERAET FREI ?
JMP BEFEHL / JA, UNTERSUCHE, OB EINGABE BEFEHL
/ES WURDE TROTZ LAUFENDER AUSGABE EIN FERNSCHREIBER BEDIENT
TAD AC /EINGEGEBENES ZEICHEN
TAD (-310 /ASCII KODE : H
SZA CLA /STOP-ZEICHEN F. AUSWERTUNG ?
JMP RETURN / NEIN
TAD M /GERAETENR.
SZA CLA /KONSOLE ?
JMP RETURN / NEIN
TAD (EBENE0 /NR. DER AUSWERTE-EBENE, DIE DURCH
/EINGABE V. H AUF TTY 0
/ABGEBROCHEN WERDEN KANN
JMP CALL7A /BRECHE EBENE AB
///
/
/HILFSPROGRAMM FUER FS-EIN-UND AUSGABE
/ZUR ERRECHNUNG DER POINTER FUER GERAET M
/----------------------------------------
/
UPFS, NOP
TAD M /GERAETENUMMER M
TAD (POINT /+BEZUGSADRESSE
DCA VERS1 / = ADR. POINT+M
TAD M
TAD (MODE
DCA VERS2 / = ADR. MODE+M
JMS DCFLAG /DECTAPE-FLAG-ABFRAGE
JMP I UPFS
///
/DEVICE-CODES MAL 8
ADR, 30 /TTY 0
300 /TTY 1 (LA30)
ZBLOCK 6 /RESERVE F. WEITERE FERNSCHREIBER
PAGE
/
/VERGLEICH MIT OPERATORZEICHEN
/-----------------------------
/
/EINGEGEBENES ZEICHEN = OPERATORZEICHEN: ECHO UND
/PROGRAMMANFORDERUNG.
/SONST: KEIN ECHO.
/
BEFEHL, DCA I VERS2 /MODE := 0 WEGEN ECHO
TAD AC /ZEICHEN
CLL RTL
RAL
TAD M /ZEICHEN, GERAETENUMMER
CMA IAC
DCA AC
JMS DCFLAG /DECTAPE-FLAG ABFRAGE
/
BEF, JMS UPBEF /WIRD BEIM ERSTEN F GEAENDERT
3060 /F-GRUNDSTARTPROGRAMM
EBENEP /EBENE
GRUND1 /STARTADRESSE
0 /IF+DF
/
BEFL, JMS UPBEF
3141 /L-LOSENDEPROGRAMM
/********************************
/EXTERN FUER LOSENDEPROGRAMM
EBENE1 /EBENE
LOSND1
0
/
JMS UPBEF
3050 /E-VORAUSWERTEPR.
EBENE0
VOR1
0
/
JMS UPBEF
3230 /S-SOLLWERTAENDERUNGSPR.
EBENE0
SOLLA1
0
/
JMS UPBEF
2201 /CONTROL-SHIFT-P -SCHICHTENDEPR.
EBENE1 /EBENE
SCHT1
0
/
JMS UPBEF
3070 /G-FABRIKTAGAENDERUNGSPR.
EBENE0 /EBENE
FABR
0
/
JMS UPBEF
3051 /E-SONDERPRUEFUNGSPR.
EBENE1
SOND
0
/
JMP BEFB /RESERVE
NOP
NOP
NOP
NOP
/
NOP
NOP
NOP
NOP
NOP
/
NOP
NOP
NOP
NOP
NOP
/
NOP
NOP
NOP
NOP
NOP
/
NOP
NOP
NOP
NOP
NOP
/
BEFB, JMS UPBEF
3020 /"B"-BEDIENUNGSPROGRAMM
EBENEB /EBENENNR.
BEDI
0
/
CLA CMA
DCA I VERS2 /SETZE OUTPUTMODE
JMP RETURN
///
/
/UP. FUER VERGLEICH MIT EINEM OPERATORZEICHEN
/--------------------------------------------
/
UPBEF, NOP
TAD AC
TAD I UPBEF
SZA CLA
JMP U1 /WENN AC UNGLEICH BEFEHLSCODE
JMS UPRINT /EINGEGEBENES ZEICHEN DRUCKEN
CLA IAC
TAD UPBEF
DCA ANFORD
JMP ANFO1 /PROGRAMM-ANFORDERUNG
U1, CLA CLL IAC RTL /4
TAD UPBEF
DCA UPBEF
JMP I UPBEF
///
JP, JMP BEFL /BEFEHL F. VERHINDERUNG EINES
/ 2. GRUNDSTARTES
/
/
/UP FUER ZUSAETZLICHE ABFRAGE DER DECTAPE FLAG
/IM LAUFENDEN PROGRAMM.
/---------------------------------------------
/
DCFLAG, NOP
DTSF /SKIP ON DECTAPE-FLAG
JMP I DCFLAG /RUECKSPRUNG, WENN KEINE
CLA CLL / FLAG GESETZT
TAD (DCF2 /ADRESSE IN DECTAPE-UP UMSCHALTEN
DCA RET4
TAD (DCF6
DCA DECINT
JMP I MCOM /EINGANG IN DECTAPE-UP
///
/
/RUECKSPRUNG AUS DEN DECTAPE-ROUTINEN, WENN DIE
/BANDBEARBEITUNG NOCH NICHT ABGESCHLOSSEN IST,
/Z.B. WEITER SUCHEN.
/
DCF2, CLA CLL
DCF2A, DCA MKDECT /MERKER F. ANSTEHENDE DECTAPE-BEARB.
TAD (RETURN /ADR. IN DECTAPE-UP RUECKSTELLEN
DCA RET4
TAD (INTDEC
DCA DECINT
JMP I DCFLAG
///
DCF6, TAD DCFLAG /MERKER SETZEN
JMP DCF2A
///
/
/ABFRAGE, OB ABSCHLIESSENDE DECTAPE-BEARBEITUNG NOCH ANSTEHT
/
DCABFR, NOP
CLA CLL
TAD MKDECT
SNA CLA /BEARBEITUNG NOTWENDIG ?
JMP I DCABFR / NEIN
DCA MKDECT
JMP INTDEC /DECTAPE-ROUTINEN ABSCHLIESSEN
///
MKDECT, 0 /MERKER F. ANSTEHENDE
/ DECTAPE-BEARBEITUNG
PAGE
/
/
/ SPEICHERBEREICH ALS SAVE-AREA
/ FUER HARDWARE-REGISTER-STAENDE
/ VON 12 SOFTWARE-EBENEN
/ ------------------------------
/
ACSAVE, 0 /AC1
LSAVE, 0 /L 1
PCSAVE, 0 /PC1
SFSAVE, 0 /SF1
/
0 /AC2
0 /L 2
0 /PC2
0 /SF2
/
0 /AC3
0 /L 3
0 /PC3
0 /SF3
/
0 /AC4
0 /L 4
0 /PC4
0 /SF4
/
0 /AC5
0 /L 5
0 /PC5
0 /SF5
/
0 /AC6
0 /L 6
0 /PC6
0 /SF6
/
0 /AC7
0 /L 7
0 /PC7
0 /SF7
/
0 /AC10
0 /L 10
0 /PC10
0 /SF10
/
0 /AC11
0 /L 11
0 /PC11
0 /SF11
/
0 /AC12
0 /L 12
0 /PC12
0 /SF12
/
0 /AC13
0 /L 13
0 /PC13
0 /SF13
/
1 /AC14 /ANFANGS-STAND FUER DUTY CYCLE
1 /L 14
DUTY /PC14
0 /SF14
/
/
/TABELLE "DEVICE ANGEFORDERT"
/(FUER JEDE EBENE 1 BIT)
/
DVA, 0 /TTY-0
0 /TTY-1 (LA30)
ZBLOCK 6 /RESERVE
0 /DECTAPE (= GERAET NR. 8)
/
/
/TABELLE "DEVICE BUSY"
/(ENTHAELT DIE NUMMER DER EBENE, DIE DAS GERAET GERADE
/ BENUETZT)
/
DVB, 0 /TTY 0
0 /TTY 1 (LA30)
ZBLOCK 6 /RESERVE
0 /DECTAPE (= NR. 8)
/
/REGISTER FUER ORGANISATIOSAUFRUFE
/ZUR EIN-/AUSGABE UEBER FERNSCHREIBER
/
/LAUFENDE STRINGADRESSE BEI CODE 5
POINT, 0 /TTY 0
0 /TTY 1 (LA30)
ZBLOCK 6 /RESERVE
/
/MODE: INPUT-MODE = 0
/ OUTPUT-MODE = -1 BZW. 620X
MODE, -1 /TTY 0 (ANFANG IN OUTPUT-MODE !)
-1 /TTY 1 (LA30)
-1 /RESERVE
-1
-1
-1
-1
-1
/
/UNTERPROGRAMM FUER DECTAPE-FLAG-ABFRAGE
/
DCFLG, NOP
DTSF /SKIP ON DECTAPE-FLAG
JMP I DCFLG
JMP I MCOM /SPRUNG IN DIE DECTAPE-ROUTINEN
///
PAGE
/
/ROUTINEN FUER LADEN UND
/----------------------
/
/STARTEN VON ANWENDERPROGRAMMEN AUF
/GRUND VON OPERATORBEFEHLEN
/
STOP, IOF /ADRESSE EXTERN *******************
JMS 3 /HALT PROGRAMM DIESE EBENE
1 /AUFRUF-CODE F. HALT
///
/EXTERN F. FORTRANPROGRAMME *****************************
EXTERN, JMP AUSWT1 /* START AUSWERTEPR. LOSENDE 1
JMP MISTR1 /* START LANGZEITAUSWERTEPR. 1
JMP KLSVT1 /* START LANGZEITAUSWERTEPR. 2
JMP AUSWT2 /* START AUSWERTEPR. LOSENDE 2
JMP SOLLB1 /* START SOLLWERTAENDERUNGSPR. TEIL 2
NOP /RESERVE
NOP /RESERVE
///
/TTY-0: F
GRUND1, TAD JP /EIN BEFEHL
DCA BEF /VERHINDERE 2. GRUNDSTART
/
JMS PRLES /STARTE GRUNDSTARTPROGRAMM
603;2000;614;637;227 /PARAMETER
///
/TTY-0: G
FABR, JMS PRLES /STARTE FABRIKTAGAENDERUNGSPR.
603;2000;614;637;746
///
/TTY-1: L
LOSND1, JMS PRLES
777;3400;1032;1053;1252
///
/START DURCH LOSENDEPROGRAMM
AUSWT1, JMS PRLES /STARTE AUSWERTEPR. LOSENDE 1
1115;3400;1150;1173;727
///
/START DURCH AUSWERTEPROGRAMM LOSENDE 1
AUSWT2, JMS PRLES /STARTE AUSWERTEPR. LOSENDE 2
1235;3400;1272;1315;551
///
/START DURCH VORAUSWERTEPROGRAMM
MISTR1, JMS PRLES /STARTE LANGZEITAUSWERTEPR.
/ MITTELWERT/STREUUNG
1457;3400;1502;1523;632
///
/START DURCH VORAUSWERTEPROGRAMM
KLSVT1, JMS PRLES /STARTE LANGZEITAUSWERTEPR.
/ KLASSENVERTEILUNG
1565;3400;1610;1631;616
///
/TTY-1: CONTROL-SHIFT-P
SCHT1, JMS PRLES /STARTE SCHICHTENDEPR.
701;2000;712;735;237
///
/
/UNTERPROGRAMM ZUM EINLESEN EINES FORTRAN-PROGRAMMES
/---------------------------------------------------
/
/IN FELD 1 UND 2, EINSCHLIESSLICH USER TABLE IN FELD 0
/UND FORTSETZEN AUF GLEICHER EBENE
/
/AUFRUF:
/ JMS PRLES
/ A /BLOCKNR. FELD 2 (ADRESSE 20200)
/ B /ANFANGSADRESSE FELD 1 (NACH COMMON)
/ C /ZUGEHOERIGE BLOCKNR. FELD 1
/ D /BLOCKNR. USER TABLE (ADRESSE 00200)
/ E /STARTADRESSE MAIN
/
PRLES, HLT
TAD LPR /LAUFENDE PRIORITAET
TAD (-EBENEP
SNA /GRUNDSTARTPROGRAMM ?
JMP PRLES1 / JA
TAD (EBENEP-EBENE0
SNA CLA /TTY-0 ?
JMP PRLES2 / JA
/EBENE FUER LA30
IOF
JMS 3 /BRECHE EBENE FUER TTY-0 AB
7 /AUFRUF-KODE
EBENE0 /EBENENNR.
/
ISZ M4 /SETZE MERKER F. EBENE 4
/FUER BEIDE EBENEN
PRLES1, TAD I PRLES
DCA BL2 /SPEICHERE BLOCKNR. FELD 2
ISZ PRLES
TAD I PRLES /ANFANGSADRESSE FELD 1
DCA AD1 /SPEICHERE IN AUFRUF
TAD AD1
CLL RTL
RTL
RTL
TAD (-37
DCA PA1 /SPEICHERE BLOCKANZAHL IN FELD 1
ISZ PRLES
TAD I PRLES
DCA BL1 /SPEICHERE BLOCKNR. FELD 1
ISZ PRLES
TAD I PRLES
DCA USTB /SPEICHERE BLOCKNR. USER TABLE
ISZ PRLES
TAD I PRLES
DCA MAIN /SPEICHERE STARTADRESSE
/
IOF
JMS 3 /LIES USER TABLE
2
200 /ADRESSE
0 /BANDEINH. UND FELD
-1 /BLOCKANZAHL
USTB, 0 /BLOCKNR.
/
IOF
JMS 3 /LIES PR.TEIL FELD 1
2
AD1, 0 /ANFANGSADRESSE
10 /FELD
PA1, 0 /BLOCKANZAHL
BL1, 0 /BLOCKNR.
/
IOF
JMS 3 /LIES PR.TEIL FELD 2
2
200 /ANFANGSADRESSE
20
-36 /BLOCKANZAHL (200-7577)
BL2, 0 /BLOCKNR.
/
CDI 20 /FELD V. MAIN
JMP I MAIN
MAIN, 0 /STARTADRESSE DES FORTRANPROGR.
///
/EBENE FUER TTY-0
PRLES2, TAD M4
SZA CLA /LAEUFT SCHON EIN FORTAN-
/ PROGRAMM (FUER LA30 ?
JMP STOP / JA
JMP PRLES1
///
M4, 0 /MERKER EBENE FUER TTY-1
PAGE
/TTY-0: E
VOR1, JMS PRLES /STARTE VORAUSWERTEPR.
1357;3400;1374;1415;553
///
/TTY-0: T
SOLLA1, JMS PRLES /STARTE SOLLWERTAENDERUNGSP. TEIL 1
1673;3400;1730;1751;635
///
/START DURCH SOLLWERTAENDERUNGSPROGRAMM 1
SOLLB1, JMS PRLES /STARTE SOLLWERTAENDERUNGSPR. TEIL 2
2013;3400;2042;2063;565
///
TESTP1, JMS PRLES /STARTE INTERFACE-TESTPROGRAMM
311; 200; 337; 363; 232
///
JMS PRLES /RESERVE
ZBLOCK 5
///
/
/BEDIENUNGSPROGRAMM A: BEDIENUNG DER AUFRUFE
/-----------------------------------------
/
/START DURCH B AUF TTY-0
BEDI, JMS PRINT
A-1
JMP BEDI2
///
BEDI2A, JMS PRINT /AUSGABE V. CR, LF UND "A"
A
BEDI2, JMS PRINT /AUSGABE V. CR, LF UND
ZW1 / 2 MAL LEERTASTE
JMS EWORT
DCA CAL
JMS EWORT
DCA CAL+1
JMS EWORT
DCA CAL+2
JMS EWORT
DCA CAL+3
JMS EWORT
DCA CAL+4
JMS EWORT
DCA CAL+5
/
IOF
JMS 3
CAL, 1
0
0
0
0
0
JMP BEDI2
///
BEDI2E, JMS PRINT /AUSGABE V. CR , LF UND "O"
O
JMP BEDI4 /STARTE BEDIENUNGSPR. O
///
/EINGABE EINES WORTES OKTAL
EWORT, NOP
CLA
EWRT1, DCA WORT
JMS READ
TAD (-257
SZA CLA /SLASH ?
JMP EWRT2 / NEIN
TAD WORT / JA
JMP I EWORT
///
EWRT2, TAD CHAR
TAD (-270
SMA / >270 OKTAL ?
JMP BEDI2 / JA
TAD (10
SPA / < 260 OKTAL ?
JMP BEDI2 / JA
AND (7
DCA CHAR
TAD WORT
CLL RAL
CLL RAL
CLL RAL
TAD CHAR
JMP EWRT1
///
READ, NOP
/
IOF
JMS 3 /EINGABE EINES ZEICHENS
6 /KODE
0 /TTY-NR.
/
DCA CHAR
TAD CHAR
TAD (-317
SNA /"O" ?
JMP BEDI2E / JA
TAD (7
SNA CLA /"H" ?
JMP H
TAD CHAR
JMP I READ
///
H, JMS PRINT /AUSGABE V. CR UND LF
CRLF
/
JMP STOP /HALT PROGRAMM
///
PRINT, NOP
CLA
TAD I PRINT
DCA STRADR
/
IOF
JMS 3 /AUSGABE EINER ZEICHENFOLGE
5 /KODE
0 /TTY-NR.
STRADR, 0
/
ISZ PRINT
JMP I PRINT
///
WORT, 0
CHAR, 0
/
PAGE
/
/BEDIENUNGSPROGRAMM O: OKTALE EIN- UND AUSGABE
/--------------------------------------------
/
/
BEDI4, JMS PRINT
ZW1 /CR, LF, 2 MAL LEERTASTE
JMS EWORT1
TAD (CDF
DCA CDFY
JMS EWORT1
JMP .+3
///
NEXT, CLA IAC
TAD ADRS
DCA ADRS
EXAMIN, JMS PRINT /DRUCKE "="
ISTGL
CDFY, CDF 00 /WECHSLE AUF EINGEGEBENES FELD
TAD I ADRS
CDF 00
JMS AWORT /AUSGABE DES ADRESSENINHALTES
JMS PRINT /AUSGABE VON LEERTASTE
ZWRAUM
TAD CDFY
DCA .+2
JMS EWORT1
CDF 00
DCA I ADRS /SPEICHERE NEUEN INHALT
CDF 00
JMP EXAMIN
///
/OKTALE AUSGABE EINES WORTES
AWORT, NOP
CLL RAL
DCA WORT
TAD (-4
DCA CNT
UNPACK, TAD WORT
RAL
RTL
DCA WORT
TAD WORT
AND (7
TAD (260
DCA ZCH
JMS PRINT /DRUCKE ZEICHEN
ZCH
ISZ CNT /4. ZEICHEN ?
JMP UNPACK / NEIN
JMP I AWORT
///
/OKTALE EINGABE EINES WORTES
EWORT1, NOP
EWRT3, DCA WORT
JMS READ1
TAD (-257
SZA /SLASH ?
JMP EWRT4 / NEIN
TAD WORT
JMP I EWORT1
///
EWRT4, TAD (-11
SMA / > 270 OKTAL ?
JMP BEDI4 / JA
TAD (10
SPA / < 260 OKTAL ?
JMP BEDI4 / JA
AND (7
DCA CHAR
TAD WORT
CLL RAL
CLL RAL
CLL RAL
TAD CHAR
JMP EWRT3
///
READ1, NOP
/
IOF
JMS 3 /EINGABE EINES ZEICHENS
6 /KODE
0 /TTY-NR.
/
TAD (-310
SNA /"H" ?
JMP H / JA
TAD (7
SNA /"A" ?
JMP BEDI2A / JA
TAD (-15
SNA /"N" ?
JMP NEXT / JA
TAD (101
SNA /CR ?
JMP BEDI4 / JA
TAD ZW1
JMP I READ1
///
ZCH, 0 /ZEICHEN (ASCII-CODE)
0
CNT, 0 /ZAEHLER
ADRS, 0
/
ISTGL, 275
0
/
ZW1, 215
212
240
ZWRAUM, 240
0
/
CRLF, 215
212
212
0
/
302 /WEGEN BS
A, 215
212
301
0
/
O, 215
212
317
0
PAGE
ZBLOCK 200 /RESERVE
/
/VARIABLE AUF PAGE 0 FUER STEUERPROGRAMM
/
FIELD 0
*11
AUT1, 0 /AUTOINDEX
AUT2, 0
AUT3, 0
0
0
0
0
*76
TOTMNT, 0 /TOTZEIT: MINUTEN SEIT 0 UHR
ANR, 0 /AUTOMATENNR.
TYP, 0 /KONTAKTTYPNR.
ANZ, 0 /ANZUGSWERT ZUSAMMEN- ...
ABF, 0 /ABFALLWERT
WID, 0 /WIDERSTANDSWERT ... HAENGEND
IST, 0 /IST-KLASSE
SOLLH, 0 /SOLL-KLASSE (HARDWAREMAESSIG)
SOLLT, 0 /SOLLKLASSE (TATSAECHLICH)
R0, 0 /MESSWERT 0
R3, 0 /MESSWERT 3
PSOL, 0 /P. SOLL-KLASSEN
PD, 0 /ANFANGSADRESSE DATENBLOCK
/FUER TEXTAUSGABE
PI, TPA /INPOINTER F. TEXTAUSGABE
PO, TPA /OUTPOINTER F. DITO
PST, 0 /STRINGP.
MPNL, 0 /MERKER "AUSGABEPUFFER NICHT LEER"
MAP, 0 /MERKER TEXTAUSGABE LAUEFT
MAUSDR, 0 /MERKER F. UP-BEENDIGUNG
*123
Z1, 0 /ZAEHLER
Z2, 0
Z3, 0
S1, 0 /ZWISCHENSPEICHER
S2, 0
S3, 0
P1, 0 /POINTER
P2, 0
P3, 0
M1, 0 /MERKER
M2, 0
M3, 0
MUN, 0 /MERKER F. UNGEPRUEFTEN KONTAKT
0
0
0
0
0
0
0
0 /BIS 147 BZW. 155
$