ASMB,R,L,C RTML1 * NAME: RTML1 RTE-M SEGMENTED GEN.-LOADER (SEGMENT 1) * SOURCE: 91740-18046 * RELOC: 91740-16046 * PGMR: MIKE SCHOENDORF * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * * * * HED RTE-M SYSTEM GENERATOR-LOADER NAM RTML1,5 91740-16046 REV 1926 790426 * * * * EXTERNAL REFERENCE NAMES * EXT ABL1,ABL2,.ABR,ABREC,ABRT1,AFILE,AL EXT ATBUF,BPAG4,BPLOC,BU#ER EXT CFILE,CKS,CLBPL,CMDLU,COML,CONSL,CONSO EXT DCB1,DCB2,DCB3,DCB4,DCB5,DCB6,DCB7 EXT ECFIL,ECHO1,ECHOS,EFILE,EMSAM,ERACT EXT ERDVC,ER#OR,FL1OP,FRTRU,FT#ME,FUTA,FWABP EXT FWAC,FWAM,GE#NA,GREAD,ICR,IDCB,IERR# EXT INACT,IN#CK,IN#RR,INTER,IOPTN,ISECU,JLU,KONSO EXT LBF10,LBUF5,LBUFA,LDGEN,LFILE,LGER2,LINTP EXT LISTO,LNKDR,LOCFS EXT LST,LSTA,LWABP,LWAC EXT MAPON,MEMRY,MLOCC,NAMR.,NBUF6,NBUFA EXT NBUFT,NXTC2,OFILE,OPEN1,OPFLA EXT OPFLB,OPFLC,OPFLD,OPFLE,OPFLF,OPFLG,OPFLH EXT OPNLU,OTFIL,OUTON,PNAMA,QBUFA EXT QQCNT,QQPTR,RBTA,RBTO,RT.G1,RTLG1,SCP EXT SERFG,SNAPS,SP#CE,STFER,TRUNC,TYPRO EXT UEXFL,UNDEF,WERR1,WRTBT,?XFER,XNAMA * EXT $CON,DTTY,$OPSY EXT DU#MY * EXT CREAT,OPEN * EXT PNZQZ * * BUFER EQU BU#ER ERROR EQU ER#OR FTIME EQU FT#ME GETNA EQU GE#NA IERR EQU IERR# INDCK EQU IN#CK INERR EQU IN#RR SPACE EQU SP#CE LOCC EQU MLOCC * SUP ************************************************************************ * * THIS SEGMENT OF THE RTE-M SEGMENTED LOADER AND * GENERATOR INITIALIZES ALL NECESSARY LOCATIONS, * REMOVES INDIRECT ADDRESS FOR DEFS AND PROCESSES * THE LOADER AND GENERATOR ON PARAMETERS. CONTROL * IS RETURNED TO EITHER THE LOADER OR GENERATOR MAIN. * * ******************************************************************** HED RTM LOADER UTILITY SUBROUTINES SKP RTML1 NOP NOP JSB LGUNT INITIALIZE LOADER OR GEN JSB SPACE GEN? JSB INTER LDA P14 LDB MES09 JSB GREAD LDA N2 JSB GETNA CCB CPA GE CLB CPA LO CLB,INB SSB,RSS JMP GEN1 JSB INERR JMP GEN? GEN1 STB LDGEN SZB,RSS JMP RTLG1 STB LNKDR JMP RT.G1 * GE ASC 1,GE LO ASC 1,LO * MES09 DEF *+1 ASC 7,* GEN OR LOAD? * N2 DEC -2 P14 DEC 14 * * * SUBROUTINE TO INITIALIZE LOADER SUBCONTROL * * INIT NOP LDA ABL2 REMOVE JSB INDCK STA ABL2 LDA .ABR JSB INDCK STA .ABR LDA ATBUF JSB INDCK STA ATBUF LDA BPAG4 JSB INDCK INDIRECT STA BPAG4 LDA BUFER JSB INDCK STA BUFER LDA DCB1 JSB INDCK STA DCB1 LDA DCB2 JSB INDCK STA DCB2 ADDRESSES LDA DCB3 JSB INDCK STA DCB3 LDA DCB4 JSB INDCK STA DCB4 LDA DCB5 JSB INDCK STA DCB5 LDA DCB6 FOR JSB INDCK STA DCB6 LDA DCB7 JSB INDCK STA DCB7 LDA FUTA JSB INDCK STA FUTA LDA LBF10 JSB INDCK DEFS STA LBF10 LDA LBUF5 JSB INDCK STA LBUF5 LDA LBUFA JSB INDCK STA LBUFA LDA LSTA JSB INDCK STA LSTA LDA MEMRY JSB INDCK STA MEMRY LDA NBUF6 JSB INDCK STA NBUF6 LDA NBUFA JSB INDCK STA NBUFA LDA NBUFT JSB INDCK STA NBUFT LDA PNAMA JSB INDCK STA PNAMA LDA QBUFA JSB INDCK STA QBUFA LDA RBTA JSB INDCK STA RBTA LDA RBTO JSB INDCK STA RBTO LDA XNAMA JSB INDCK STA XNAMA LDB BUFER STB PRMAD LDA B4 INITIALIZE TO INPUT/DEVICE FILE MODE STA CMDLU LDA B100 STA FWABP FIRST WORD OF AVAILABLE BASE PAGE LDA B1646 STA LWABP LAST WORD OF AVAILABLE BASE PAGE LDA B2000 STA FWAM FIRST WORD OF AVAILABLE MEMORY JSB CLBPL CLEAR BASE PAGE LINKS LDA OPFLA SET FOR NO PAUSE AND UDFE JSB PAUSE LDA ABL2 STA ABL1 CLA STA LISTO INITIALIZE MAP OUTPUT STA UNDEF START SEARCH AT BEGINING OF LST STA LINTP LINKS IN FLAG (SET TO BASE) STA FWAC FIRST WORD OF COMMON STA LWAC LAST WORD OF COMMON STA FRTRU FIRST TIME THRU FLAG STA ?XFER "HAVE MAIN FLAG" STA LOCC PROGRAM RELOCATION BASE STA BPLOC BASE PAGE RELOCATION BASE STA COML "COMMON USED" FLAG STA LST,I LOADER SYMBOL TABLE LENGTH STA ECHO1 ECHO OFF STA NAMR. ALLOW A NAM RECORD STA MAPON MAP OFF STA AL CLEAR MAP FILE NAME STA ECFIL CLEAR ECHO FILE NAME STA EMSAM MAP/ECHO FILE OFF STA OUTON ABSOLUTE OUTPUT FILE CLOSED STA INACT SET INPUT TO NON-INTERACTIVE STA FL1OP CLEAR COMMAND FILE OPEN BIT STA ERDVC CLEAR ERROR LOG DEVICE STA OPEN1 CLEAR COMMAND FILE OPEN BIT STA FTIME OUTPUT TYOFF REC ONLY AT START STA ISECU SECURITY CODE STA ICR LABEL STA WRTBT NO RELOCATION YET STA TRUNC DON'T TRUNCATE ON ABORT STA ABREC CLEAR RECORD LENGTH STA CKS CLEAR CHECK SUM STA TYPRO SET TO ANY TYPE MODULE ALLOWED STA CONSO GET INPUT FROM SESSION CONSOLE STA SERFG LIBRARY LOAD FLAG STA UEXFL UNDEFINED EXTERNALS STA PNZQZ PROGRAM NAME STA KONSO END OF INPUT FILE FLAG JMP INIT,I * B4 OCT 4 B100 OCT 100 B1646 OCT 1646 B2000 OCT 2000 UDFE OCT 77777 * PRMAD NOP SKP * * * STORE NOP LDB LU ASCII LU STB OTFIL,I ISZ OTFIL LDB .. ASCII .. STB OTFIL,I ISZ OTFIL STA OTFIL,I LU JMP STORE,I * LU ASC 1,LU .. ASC 1,.. SKP * * * SUBROUTINES TO OPEN FILES * * OPFL1 NOP CLA,INA STA OPEN1 COMMAND INPUT CALLING LDA OPFLA STA OPFLM LDA CFILE OPEN COMMAND FILE LDB DCB1 JSB OPNFL OPFLM OCT 410 KEYBOARD ECHO CLA,INA SET COMMAND FILE TO OPEN STA FL1OP CLA STA OPEN1 CLEAR COMMAND INPUT CALLING JMP OPFL1,I * * * * OPFL8 NOP LDA OPFLH STA OPFLT LDA EFILE OPEN ERROR/PROMPT FILE LDB DCB7 JSB OPNFL OPFLT OCT 610 PRINT 1ST COLUMN KEYBOARD ECHO JMP OPFL8,I SKP SKP * * * OPEN FILES * * A REG = ADDRESS OF FILE NAME ARRAY * B REG = ADDRESS OF DATA CONTROL BLOCK * * OPNFL NOP STA AFILE SAVE ADDRESS OF FILE STB IDCB SAVE ADDRESS OF DCB LDA OPNFL,I STA IOPTN OPEN OPTION ISZ OPNFL JSB OPEN OPEN FILE DEF *+7 RETURN ADDRESS DEF IDCB,I DCB DEF IERR ERROR CODE DEF AFILE,I ADDRESS OF FILE DEF IOPTN OPEN OPTION DEF ISECU SECURITY CODE DEF ICR LABEL SSA JMP OPN1 OPEN ERROR LDA OPFLA AND UDFE CLEAR PAUSE BIT JSB PAUSE JMP OPNFL,I * OPN1 CPA M100 JMP OPN7 JSB OPNLU CHECK IF LU JMP OPN8 NOT LUUU JMP OPNFL,I LU, EXIT OPN8 LDB OPEN1 COMMAND INPUT CALLING? CPB B1 JMP ABRT0 YES, ABORT LDB OPFLA SSB BEEN HERE ALREADY? JMP OPN2 YES, FILE NOT FOUND CPA MD6 OPEN ERROR (6)? RSS JMP ERROE NO, OPEN ERROR LDA OPFLA SET PAUSE BIT IOR C1000 JSB PAUSE OPN4 CLA STA QQCNT RESET INPUT BUFFER LDA QBUFA STA QQPTR LDA QBUFA,I GET FIRST CHARACTER ALF,ALF AND B177 CPA B55 IS COMMAND ID SUPPLIED? ISZ QQCNT YES--BUMP CHAR. POINTER JMP NXTC2 * OPN2 LDA OPFLA CLEAR PAUSE BIT AND UDFE JSB PAUSE LDA AFILE CPA OFILE OPENING OUTPUT FILE? JMP OPN3 YES LDB B4 CPA SNAPS OPENING SNAP FILE? JMP OPN6 YES CPA LFILE OPENING MAP FILE? JMP OPN6 CPA ECHOS OPENING ECHO FILE? JMP OPN6 YES OPN5 LDA FN FILE NOT FOUND LDB IERR ERROR CODE JSB ERROR JMP CONSL TRY AGAIN * OPN3 LDA D300 LDB LDGEN LOADER CALLING? SZB LDA D30 YES LDB B7 RSS OPN6 LDA D15 JSB CRETE GO TRY TO CREATE FILE JMP OPN4 * OPN7 LDA DI LDB IERR ERROR CODE JSB ERROR JMP CONSL DISK INITIALIZATION ERROR * ERROE LDA OE LDB IERR ERROR CODE JMP WERR1 * ABRT0 LDA OE OPEN FILE ERROR LDB IERR ERROR CODE JSB ERROR JMP ABRT1 * MD6 DEC -6 B1 OCT 1 B7 OCT 7 B55 OCT 55 B177 OCT 177 * D15 DEC 15 D30 DEC 30 C1000 OCT 100000 * * CREATE OUTPUT FILE IF IN FLOPPY ENVIRONMENT * CRETE NOP STA DSIZE FILE SIZE STB ITYPE TYPE OF FILE 4=ASCII 7=ABS JSB CREAT CREATE FILE DEF *+8 DEF IDCB,I DCB DEF IERR DEF AFILE,I ADDRESS OF FILE DEF DSIZE FILE SIZE DEF ITYPE TPE OF FILE DEF ISECU SECURITY CODE DEF ICR LABEL CPA MD200 JMP OPN5 CAN'T CREATE FILE ON NON-FLOPPY SSA,RSS JMP CRETE,I * LDA CR CREATE ERROR LDB IERR ERROR CODE JSB ERROR JMP CONSL * CR ASC 1,CR DI ASC 1,DI * MD200 DEC -200 M100 DEC -100 D300 DEC 300 * DSIZE NOP ITYPE NOP SKP * OE ASC 1,OE OPEN FILE ERROR FN ASC 1,FN FILE NOT FOUND ERROR * * * SUBROUTINE TO ADD/DELETE PAUSE BIT FROM CONTROL WORDS * PAUSE NOP STA OPFLA STA OPFLF XOR B500 STA OPFLB IOR B200 STA OPFLC XOR B100 STA OPFLD STA OPFLE STA OPFLG IOR B400 STA OPFLH JMP PAUSE,I * B200 OCT 200 B400 OCT 400 B500 OCT 500 HED *** FILE PROCESSORS *** * * SUBROUTINE TO GET INPUT COMMAND DEVICE AND ERROR-PROMPT * DEVICE.LAST PARAMETER DETERMINES IF PROGRAM IS IN A * PARTITION AND IF SSGA AND SYSTEM COMMON NEEDED. * * LGUNT NOP JSB INIT INITIALIZE LOADER SUBCONTROL LDA PRMAD,I SZA,RSS IF NO INPUT DEVICE/FILE USE JMP LGUNA SESSION CONSOLE FOR INPUT LGUNB STA INDVC SZA SSA JMP LGER1 NOT VALID LU OR FILE NAME CMA,INA ADA BLANK SSA LU OR FILE NAME? JMP LGUN1 MUST BE FILE NAME LDA INDVC JSB INTR1 DETERMINE IF INTERACTIVE INPUT LDA INDVC INPUT COMMAND LU LDB $OPSY GET TYPE OF OPERATING SYSTEM CPB M7 RTE-MI? JMP LGUN9 YES CPB M15 RTE-MII? JMP LGUN9 YES CPB M5 RTE-MIII? JMP LGUN9 YES LDB INACT INTERACTIVE INPUT? SZB STA $CON,I YES, SAVE LU FOR MESSAGES LGUN9 LDB CFILE ADDRESS OF INPUT COMMAND FILE NAME JSB FILNM GET DEFAULT FILE NAME ISZ PRMAD ISZ PRMAD ISZ PRMAD INCREMENT PARAMETER ADDRESS TO 4TH PARAM. LGUN2 JSB OPFL1 OPEN COMMAND INPUT FILE JSB GETVL GET ERROR LOG DEVICE LU STA ERDVC SZA,RSS ANY ERROR/PROMPT LOG DEVICE? JMP LGUN4 NO, USE INPUT COM. DEV. IF POSSIBLE LDA ERDVC ERROR-PROMPT LOG DEVICE LU LDB EFILE ADDRESS OF ERROR LOG FILE NAME JSB FILNM GET DEFAULT FILE NAME JSB OPFL8 OPEN ERROR/PROMPT FILE LDA ERDVC GET ERROR LOG LU JSB DTTY CHECK IF INTERACTIVE CLB,INB INTERACTIVE SZA,RSS CLB NON-INTERACTIVE STB ERACT LGUN7 JSB GETVL LDB 0 CLA 0 = MEMORY RESIDENT SLB INA 1 = PROGRAM IN PARTITION RBR,SLB IOR B2 2 = USES SYSTEM COMMON RBR,SLB IOR B4 4 = USES SSGA RBR,SLB IOR B10 8 = LOAD WITH DEBUG STA SCP AND B10 JMP LGUNT,I LGUNA LDA $CON,I SESSION CONSOLE AND B77 JMP LGUNB * LGUN1 LDA CFILE STA FILEI LDA M3 STA COUNT LGUN3 LDB PRMAD GET PARAMETER ADDRESS LDA 1,I GET NEXT TWO CHARACTERS OF INPUT SZA,RSS COMMAND FILE LDA BLANK NO MORE CHARACTERS IN FILE NAME STA FILEI,I SAVE FILE NAME FOR OPEN CALL ISZ FILEI ISZ PRMAD ISZ COUNT JMP LGUN3 PROCESS NEXT TWO CHARACTERS CLA STA INDVC SET TO FILE FOR INPUT JMP LGUN2 * * LGUN4 STA ERACT NON-INTERACTIVE ERROR LOG LDA INDVC GET INPUT LU SZA,RSS JMP LGUN5 NO LU, INPUT MUST BE FILE LGUN8 JSB INTR1 IS DEVICE INTERACTIVE? JMP LGUN7 LGUN5 LDA DCB1 INA LDA 0,I GET FILE TYPE SZA JMP LGUN7 NOT TYPE 0, NOT INTERACTIVE LDA DCB1 JSB LOCFS SSA JMP LGER2 LDA JLU GET LU OF FILE NAME JMP LGUN8 * * M5 DEC -5 M7 DEC -7 M15 DEC -15 SPC 5 SKP * * LGER1 LDA ON CLB NO FMP ERROR JSB STFER OUTPUT ERROR TO SYSTEM CONSOLE JMP ABRT1 TERMINATE LOADER EXECUTION * ON ASC 1,ON * BLANK ASC 1, * B2 OCT 2 B10 OCT 10 B77 OCT 77 M3 DEC -3 * COUNT NOP INDVC NOP FILEI NOP * * SUBROUTINE TO GET VALUES FROM ON COMMMAND * * B REGISTER CONTAINS ADDRESS OF NEXT PARAMETER * GETVL NOP LDB PRMAD ADDRESS OF NEXT PARAMETER LDA 1,I PARAMETER VALUE ISZ PRMAD JMP GETVL,I * * * SUBROUTINE TO DETERMINE IF INPUT DEVICE IS INTERACTIVE * * INTR1 NOP JSB DTTY CLB,INB INTERACTIVE SZA,RSS CLB NON-INTERACTIVE STB INACT JMP INTR1,I SKP * * * SUBROUTINE TO GET FILE NAMES * * FILNM NOP STB OTFIL SET DESTINATION ADDRESS CLB STB HDGIT FIL01 ADA M10 CONVERT LU TO ASCII TWO DIGITS SSA JMP FIL02 ISZ HDGIT JMP FIL01 FIL02 ADA D10 IOR B60 MAKE ASCII STA LDGIT LDA HDGIT IOR B60 ALF,ALF IOR LDGIT JSB STORE SAVE LU IN ARRAY JMP FILNM,I * HDGIT NOP HIGH ASCII CHARACTER LDGIT NOP LOW ASCII CHARACTER * M10 DEC -10 B60 OCT 60 D10 DEC 10 * END RTML1