ASMB,A,B,L * * *** OCTAPUS-D *** * * Preconfigured for TTY 11, PTRead 12, PTPunch 13, LPrint 11 (octal) * run 70000 to execute * run 72400 to run help * run 72161 to run config (TTY slot in SR) * * Revised 2/3/02 3/30/02 5/11/02 11/26/02 8/29/07 * Modified 9/29/07... * fixed control-S search typo/bug * removed output of bell character * changed reloc constants to end (instead of overwriting config code) * 10/2/07 - added headers etc for compatibility with extasmb assembler * 1/29/08 - added space after QMARK's ? mark for asm21 compatibility * * ORG 2B * JMP *+1,I * DEF ENTRY * * ORG 4000B * for top of 16K machine... * ORG 34000B * for top of 32K machine... * ORG 74000B * for hpiplos binary... ORG 70000B *ENTRY JMP ADCON,I JSB EOL AFTER CONFIG * preconfigured... ENTRY JSB BELL LDA MSL15 LDB MSG15 JSB PRTBF * STCLR LIA 01 REMOVE ABORT, LP & AND M1 RELOCATE WARNING BITS OTA 01 FROM SW REGISTER START JSB BELL LDA QMARK PRINT "?" JSB PRTWD JSB CHRIN JMP START * ASMBL LDA MSL12 ASSEMBLY/ ADDRESS= LDB MSG12 JSB PRTBF NEWAD JSB .ATB STA ORG NEWLN JSB EOL LDA ORG JSB PRTNM JSB BLANK CLA STA WORD ALOOP JSB CHRIN GET CHARACTER STA 01 CPA SPACE SPACE? JMP GETAD YES, GET OPCODE & ADDRESS CPA CR CARRIAGE RETURN? JMP NOADD YES, NO ADDRESS FIELD - GET OPCODE CPA ./. SLASH? JMP NEWAD YES, GET NEW ORG ADDRESS CPA CTRLC CONTROL C? JMP CNTNS YES: PRINT CONTENTS CPA COMMA JMP REVSS AND B37 THEN PACK LEAST 5 BITS OF LDB WORD CHARACTER INTO PSEUDO BLF,RBL OPCODE WORD. IOR 01 STA WORD JMP ALOOP * REVSS JSB .ATB CPA RSS TEST FOR ,RSS * RSS JMP OPERR JSB TBSCH IF SO, GET OPCODE CLA,INA AND SET RSS BIT JMP CMBIN+1 & COMBINE * CNTNS LDA ORG FOR CONTROL & C IN STA SA ASSEMBLY MODE, PRINT LDA ORG,I INVERSE OF CURRENT JSB INVIT ADDRESS JMP NEWLN+1 * EOL NOP END OF LINE, PRINT CARRIAGE LDA B6412 RETURN & LINE FEED JSB PRTWD JMP EOL,I * CHRIN NOP INPUT ONE CHARACTER LDB CW1 *modified TTYx and LPx for channel 11 TTY1 OTB 000011B TTY2 STC 000011B,C TTY3 SFS 000011B JMP *-1 TTY4 LIA 000011B AND M177 CPA CTRLA CONTROL A? JMP ASMBL YES, ASSEMBLY MODE CPA CTRLP CONTROL P? JMP PUNCH YES, PUNCH TAPE CPA CTRLT CONTROL T? JMP LOAD YES, LOAD TAPE CPA CTRLV CONTROL V? JMP COMPR YES, VERIFY TAPE CPA CTRLD CONTROL D? JMP INVRS YES, DUMP & INVERSE OF CORE CPA CTRLS JMP SURCH SEARCH MEMORY CPA CTRLR JMP RUN RUN CPA CTRLB JMP BOUND PRINT BOUNDS OF BINARY TAPE CPA CTRLL JMP RELOC RELOCATE CPA CTRLI JMP EPAT INVERSE OF TAPE CPA M177 RUBOUT? JMP START RESTART CPA ESC ESCAPE? JMP NEWLN NEW LINE JMP CHRIN,I * CHARO NOP OUTPUT ONE CHARACTER LIB 01 BIT 1 CONTROLS TTY BRS,SLB OFF GIVES TTY ON JMP LP1 ON GIVES LP ON LDB CW2 TTY5 OTB 000011B AND M177 TTY6 OTA 000011B TTY7 STC 000011B,C TTY8 SFS 000011B JMP *-1 JMP CHARO,I LP1 OTA 000011B LP2 STC 000011B,C LP3 SFS 000011B JMP *-1 JMP CHARO,I * BLANK NOP LDA SPACE JSB CHARO JMP BLANK,I * TBSCH NOP TABLE SEARCH LDA TABL2 INITIALIZE STA PNTR THE LDA TABL1 POINTERS LDB WORD LOOP3 CPB A,I BEGIN LINEAR SEARCH JMP FOUND ISZ PNTR INA * CPA TBEND END OF TABLE ? JMP OPERR YES, OPCODE NOT FOUND JMP LOOP3 FOUND LDB PNTR,I GET AND SAVE STB OPCOD TRUE OPCODE JMP TBSCH,I * FAB LDA OPCOD IS OPCOD NOP OR OCT? SZA,RSS JMP CMBIN YES, EXIT LDA ADDR AND B176K MASK OFF BITS 0-9 SZA,RSS IS ADDRESS ON BASE PAGE? JMP CMBIN YES, EXIT XOR ORG IS ADDRESS ON SAME PAGE AND B176K WITH MACHINE INSTRUCTION SZA DESTINATION? * JMP PGERR NO, OUTPUT ERROR MESSAGE LDA ADDR YES, GET BITS 0-9 OF ADDRESS AND B1777 IOR B2000 SET BIT 10 (CURRENT PAGE) STA ADDR CMBIN LDA ADDR IOR OPCOD STA ORG,I ISZ ORG JMP NEWLN+1 * INVRS LDA MSL13 DUMP RANGE? LDB MSG13 JSB PRTBF JSB .ATB GET STARTING ADDRESS STA SA JSB .ATB GET ENDING ADDRESS STA EA NEXT1 LDA SA JSB PRTNM PRINT ADDRESS JSB BLANK LDA SA,I JSB INVIT BUMP LDA SA CPA EA JMP STCLR ISZ SA JMP NEXT1 * INVIT NOP STA INSTR JSB PRTNM JSB BLANK CLO CLEAR BASE PAGE FLAG LDA INSTR AND MRMSK * CLE, SZA MRG? *compiles to 000040 cle, za for some reason, hpasm bug? OCT 2102 JMP MRG YES LDA INSTR SSA IOG OR EAG JMP IOG * JSB MNSCH GO SEARCH MNEMONIC TABLE JMP RETRY NOT FOUND - TRY RSS GOTYA JSB PRTIT FIN JSB EOL JMP INVIT,I * RETRY LDA INSTR AND N2 REMOVE RSS BIT STA INSTR ALF,RAL SSA ASG? JSB MNSCH SEARCH MNE TABLE AGAIN JMP FIN NOT FOUND JSB PRTIT PRINT MNEMONIC LDA COMAR JSB PRTWD PRINT ",RSS" LDA COMAR+1 JSB PRTWD * JMP FIN * MRG LDA INSTR AND B2000 BASE PAGE REFERENCE? SZA,RSS STO YES: SET BP FLAG LDA INSTR * CLE,SSA INDIRECT? *same kind of bug, shows up as 000040 CLE, SA OCT 2120 CCE YES: SET APPEND FLAG AND B1777 STA LOBTS SAVE BITS 0 - 9 LDA INSTR AND B74K STRIP ADDRESS & INDIRECT OFF STA INSTR JSB MNSCH GO SEARCH MNEMONIC TABLE JMP FIN RETURN HERE IF DEFAULT JSB PRTIT ELSE HERE - GO PRINT MNEMONIC JSB BLANK LDA SA GET PAGE AND B176K BITS SOC BASE PAGE FLAG SET? CLA YES IOR LOBTS ADD ADDRESS & JSB PRTNM PRINT IT LDA COMAI GX1 SEZ JSB PRTWD APPENDS ,I OR ,C JMP FIN * IOG LDB B17 ALF,RAL SSA IOG OR EAG? LDB B77 IOG LDA INSTR GET SELECT CODE AND B OR NO. OF SHIFTS STA I/O AND SAVE CLA CPB B77 IF EAG & ZERO SHIFTS INA OR IOG & SELECT CODE 1 CPA I/O THEN LOOK FOR INSTRUCTIONS JSB MNSCH WITHOUT SELECT CODES * JMP NONO NONE FOUND LDA PNTR CMA,INA DOES ADA SOSAD IT NEED SSA,RSS CODE? JMP GOTYA NO NONO LDA INSTR XOR I/O STA INSTR JSB MNSCH JMP TRYAC NOT FOUND, GO REMOVE CBIT WASAC JSB PRTIT FOUND, PRINT MNEMONIC JSB BLANK LDA I/O JSB PRTNM PRINT SELECT CODE LDA COMAC JMP GX1 APPEND ,C IF E SET * TRYAC LDA INSTR AND NOT9 REMOVE H/C BIT STA INSTR JSB MNSCH JMP FIN STILL NOT FOUND CCE JMP WASAC YES, WAS A C * MNSCH NOP MNEMONIC TABLE SEARCH LDA TABL2 INITIALIZE STA PNTR THE LDA TABL1 POINTERS LDB INSTR GOMAN CPB PNTR,I BEGIN LINEAR SEARCH JMP GOTIT ISZ PNTR INA CPA TBEND END OF TABLE ? JMP MNSCH,I YES, NOT FOUND JMP GOMAN NO GOTIT LDA 0,I GET & SAVE STA NEMON MNEMONIC ISZ MNSCH BUMP RETURN ADDRESS & JMP MNSCH,I EXIT * PRTIT NOP PRINT MNEMONIC LDA NEMON ALF,RAL RAL STA TEMP1 JSB MAKIT LDA TEMP1 ALF,RAL STA TEMP1 JSB MAKIT * LDA TEMP1 ALF,RAL JSB MAKIT JMP PRTIT,I * MAKIT NOP MAKE ASCII & PRINT AND B37 IOR ALPHA JSB CHARO JMP MAKIT,I * SURCH LDA MSL6 SEARCH FOR ? LDB MSG6 corrected 9/29/07 JSB PRTBF JSB .ATB STA NEMON LDA MSL7 LDB MSG7 RANGE ? JSB PRTBF JSB .ATB STA SA JSB .ATB STA EA JSB EOL LDA SA SLOOP LDB A,I CPB NEMON JSB MATCH CPA EA JMP START INA JMP SLOOP MATCH NOP STA I/O JSB PRTNM JSB EOL LDA I/O JMP MATCH,I RUN LDA MSL9 ADDRESS= LDB MSG9 JSB PRTBF JSB .ATB STA ADDR JSB EOL CLC 0,C JMP ADDR,I * * PRTNM NOP RAL STA TEMP1 AND M1 ADA M60 JSB CHARO LDA M5 STA TEMP2 LOOP7 LDA TEMP1 ALF,RAR STA TEMP1 AND MSK7 ADA M60 JSB CHARO ISZ TEMP2 JMP LOOP7 LIA 01 ABORT IF SW15 IS SET SSA JMP STCLR JMP PRTNM,I * .ATB NOP GET ASCII FROM TTY & CONVERT CLA,CLE STA TEMP2 JSB CHRIN CPA COMMA JMP EXITA CPA CR JMP EXIT CPA SPACE ILLEGAL SPACE? JMP FMTER YES,FORMAT ERROR LDB TEMP2 BLF,RBR AND MSK7 IOR B STA TEMP2 JMP .ATB+3 EXITA CCE,RSS EXIT JSB EOL LDA TEMP2 JMP .ATB,I * GETAD JSB TBSCH GET OPCODE & SAVE JSB .ATB GET ADDRESS STA ADDR SEZ,RSS JMP FAB JSB .ATB CPA CTRLC JMP G2 CPA M1 RSS JMP OPERR RAR G1 IOR OPCOD STA OPCOD JMP FAB * G2 LDA BIT9 JMP G1 * NOADD JSB TBSCH GET OPCODE & SAVE JSB EOL CLA SET ADDRESS=0 JMP CMBIN+1 * PRTWD NOP PRINT 16 BIT WORD IN ASCII * FORMAT STA TEMP1 ALF,ALF AND M177 JSB CHARO LDA TEMP1 JSB CHARO JMP PRTWD,I * PRTBF NOP PRINT ASCII FROM BUFFER CMA,INA (LENGTH IN A) STA CNTR1 (ADDRESS IN B) STB TEMP2 MORE LDA TEMP2,I JSB PRTWD ISZ TEMP2 ISZ CNTR1 JMP MORE JMP PRTBF,I * BELL NOP RING TTY BELL JSB EOL LDA MSK7 NOP was JSB CHARO 9/29/07 no bell JMP BELL,I PGERR JSB BELL LDA MSL3 PAGE ERROR LDB MSG3 JSB PRTBF JMP NEWLN * OPERR JSB BELL LDA MSL4 OPCODE ERROR LDB MSG4 JSB PRTBF JMP NEWLN * FMTER JSB BELL LDA MSL5 FORMAT ERROR LDB MSG5 JSB PRTBF JMP NEWLN * * * THIS SUBROUTINE GIVES A CORE DUMP ON PAPER TAPE BBL FORMAT * * * TAPE RECORD FORMAT: * * *************** * * * * * REC LENGTH * BYTE * * * * *************** * * * * * STARTING * * * RECORD * 2 BYTES * * ADDRESS * * * * * *************** * * * * * * * * D * * * A * UP TO 128 WORDS * * T * 256 BYTES * * A * * * * * *************** * * * * * * * * CKSUM * * * * * *************** * * * PUNCH LIA 1 ENSURE NOT AND N2 ONLINE FOR OTA 1 PUNCHING LDA MSL2 LDB MSG2 JMP PLINK LINK TO RELOCATION PROG ENDCN LDB N15 JSB LEADR * * CALCULATE WHETHER A COMPLETE 128 WORD RECORD CAN BE PUNCHED. * IF NOT, PUNCH THE REMAINING SHORT RECORD AND TERMINATE. * NEWRC LDA END LDB BEGIN CMB,INB -BEGIN ADA B END-BEGIN ADA N127 END-BEGIN-127 SZA CHECK FOR EXACT FIT SSA JMP ENDRC PUNCH LAST SHORT RECORD * LDA P128 PUNCH WORDS IN RECORD JSB PCHRD PUNCH FULL RECORD * * PUNCH 4-FEED FRAMES,END OF RECORD * LDB N2 4-FEED FRAMES JSB LEADR JMP NEWRC CHECK FOR NEXT RECORD * * PUNCH LAST SHORT RECORD * ENDRC LDA END END ADA B END-BEGIN ADA M1 JSB PCHRD * * PUNCH TRAILER 30-FEED FRAMES * LDB N15 JSB LEADR LDA PSWCH SZA RELOCATION ? JMP START NO, SUPPRESS MESSAGE JSB EOL LDA MSL24 LAST WORD= LDB MSG24 JSB PRTBF CCA ADA NEWAS JSB PRTNM PRINT ADDRESS JMP START * PCHRD NOP CMA,INA STA TEMP1 NEG OF LENGTH AS COUNTER CMA,INA ALF,ALF JSB PCHDR PUNCH REC LENGTH IN TAPE-1ST WD LDA NEWAS STA CHKSM JSB PCHDR PUNCH ADD IN TAPE-2ND WD * * OUTPUT DATA WORDS AND CALCULATE CHECKSUM * NXT CCA CPA EAUFG EAU FLAG SET ? JMP EAPNT LDA BEGIN SEARCH CONST TABLE FOR ADDRESS LDB ADCON START OF TABLE CONCK CPB ADFIN END OF CONST TABLE JMP ENDPC REACHED ? CPA 1,I IS IT A POINTER OR CONSTANT ? JMP POINT YES INB JMP CONCK TRY AGAIN ENDPC LDA CORRN AND B1777 SZA,RSS NULL CORRECTION ? JMP PNCHK YES LDA BEGIN,I LOAD THE WORD AND MRMSK (070000) SZA IS IT MRG ? JMP MMALT YES, GO AND ADJUST LDA BEGIN,I SSA,RSS BIT 15 = 0 ? JMP PNCHK YES, ASG OR SRG ALF,RAL SSA BIT 10 = 0 ? JMP PNCHK NO, PUNCH (IOG) LDA BEGIN,I AND EAMSK BITS 7,8 SZA,RSS TWO WORD EAU INSTR ? JMP PNCHK NO CCA YES, SO SET STA EAUFG EAU FLAG * * OUTPUT DRIVER DRIVER * PNCHK LDB BEGIN,I FETCH UNALTERED WORD PUNSH LDA 1 WORD TO BE PUNCHED IN IN B ADB CHKSM UPDATE CHECKSUM STB CHKSM LIB 1 LOAD SW REG SSB ABORT IF BIT JMP STCLR 15 SET SLB ONLINE RELOCATION ? STA NEWAS,I YES JSB PCHDR ISZ BEGIN UPDATE OLD AND ISZ NEWAS NEW ADDRESSES ISZ TMP1 JMP NXT LDA CHKSM JSB PCHDR OUTPUT CHECKSUM JMP PCHRD,I RETURN * PCHDR NOP SETS UP THE ALF,ALF TWO CHARS IN JSB CHROT THE WORD TO BE ALF,ALF PUNCHED JSB CHROT JMP PCHDR,I RETURN * CHROT NOP STA TMP2 LIA 1 SLA ONLINE RELOCATION ? JMP CHROT,I YES LDA CW3 *was 0 (not initialised) assuming channel 13 (punch)... OUT1 OTA 000013B LDA TMP2 AND M377 OUT4 OTA 000013B OUT2 STC 000013B,C OUT3 SFS 000013B JMP *-1 LDA TMP2 JMP CHROT,I RETURN * LEADR NOP CLA CHARACTER TO BE PUNCHED JSB PCHDR PUNCH WORD INB,SZB JMP *-2 JMP LEADR,I RETURN * * RELOCATION PROGRAM * RELOC CCA SET FLAG FOR STA PSWCH RELOCATION LDA MSL20 SECTION FOR RELOCATION ? LDB MSG20 PLINK JSB PRTBF JSB .ATB STA BEGIN STA FIRST JSB .ATB STA END LDA ADCON SET THE POINTER FOR STA ADFIN THE CONSTANT TABLE LDA BEGIN ISZ PSWCH PUNCH OR RELOCATE ? JMP PNCHO PUNCH LDA MSL21 NEW ORIGIN ? LDB MSG21 JSB PRTBF JSB .ATB PNCHO STA NEWAS LDB BEGIN CMB,INB ADA 1 STA CORRN STORE * * SECTION TO STORE POINTER & CONSTANT TABLE * SZA,RSS RELOCATION ? JMP ENDCN NO LDA MSL23 LDB MSG23 MESSAGE TO INPUT JSB PRTBF POINTERS JSB CONIN LDB ADFIN STORE END OF STB PFIN POINTER TABLE LDA CORRN AND B1777 SZA,RSS NULL CORRECTION ? JMP ENDCN YES LDA MSL22 MESSAGE TO INPUT LDB MSG22 CONSTANTS JSB PRTBF JSB CONIN JMP ENDCN * * SUBROUTINE TO INPUT TABLES * CONIN NOP JSB .ATB GET ADDRESS SZA,RSS END OF TABLE ? JMP CONIN,I YES STA ADFIN,I NO, STORE IT SEZ BLOCK OF CONSTANTS ? JMP REPET YES ISZ ADFIN JMP CONIN+1 NO, GET NEXT * * SUBROUTINE FOR MULTIPLE CONSTANT INPUT * REPET JSB .ATB GET ADDRESS OF END OF BLOCK LDB ADFIN,I GET PREVIOUS ADDRESS ISZ ADFIN CPA B END OF BLOCK ? JMP CONIN+1 YES INB STB ADFIN,I NO, STORE NEXT VALUE JMP REPET+1 * * MRG ALTERATION * MMALT LDA BEGIN GET CURRENT PAGE AND PGMSK BITS LDB BEGIN,I BLF,RBL IS INSTRUCTION CURRENT SSB,RSS OR BASE PAGE ? CLA BASE STA B LDA BEGIN,I LOAD INSTRUCTION AND B1777 GET ADDRESS BITS ADB 0 ADD PAGE BITS STB REFAD JSB DUZIT NEED ALTERATION ? JMP CKPGE NO, CHECK PAGING LDA REFAD ADA CORRN CALCULATE NEW ONE STA REFAD NEW LOCATION ADDRESSED XOR NEWAS IS IT STILL AND PGMSK ON SAME PAGE SZA AS INSTRUCTION ? JMP PGERR NO, NOT ADDRRESSABLE * * FORM NEW INSTRUCTION * LDA BEGIN,I GET AND B176K OPERATION STA B AND LDA REFAD ADD AND B1777 NEW ADB A ADDRESS JMP PUNSH * * INSTRUCTION UNCHANGED. REFERENCED LOCATION NOT MOVED. * WARNING GIVEN IF NOT STILL ADDRESSABLE. * CKPGE LDA REFAD AND PGMSK SZA,RSS BASE PAGE ? JMP PNCHK YES XOR NEWAS AND PGMSK SZA,RSS SAME PAGE ? JMP PNCHK YES LIA 1 NO, SET BITS IOR MRMSK 12-14 ON SW REG OTA 1 AS WARNING JMP PNCHK BUT WILL BE OK IF PART OF * DOUBLE-RELOCATION * * POINTER ALTERATION * POINT CMB ADB PFIN PFIN-ADDR-1 SSB POINTER ? JMP PNCHK NO, CONSTANT EAPNT LDB BEGIN,I LOAD THE POINTER ELB,CLE,ERB REMOVE INDIRECT IF PRESENT STB EAUFG CLEAR EAU FLAG JSB DUZIT NEED ALTERATION ? JMP PNCHK NO LDB BEGIN,I YES, UPDATE ADB CORRN POINTER JMP PUNSH * * SUBROUTINE TO DETERMINE WHETHER REFERENCED ADDRESS * IS IN THE BLOCK BEING RELOCATED * DUZIT NOP CMB,INB STB 0 ADA FIRST CMA,INA IS THE REFERENCED SSA ADDRESS IN THE JMP NOTIN ADB END BLOCK BEING SSB,RSS MOVED ? ISZ DUZIT YES, BUMP RETURN ADDRESS NOTIN JMP DUZIT,I * * BOUND, LOAD, VERIFY AND INVERSE TAPE ROUTINES * BOUND CLA JMP STORE LOAD LDA MSL10 LOAD LDB MSG10 JSB PRTBF LDA LDWRD STORE LOAD INSTRUCTIONS JMP STORE COMPR JSB EOL LDA MSL11 LDB MSG11 JSB PRTBF LDA CPWRD STORE COMPARE INSTRUCTION STORE STA OPTI JSB EOL * CLB,RSS CONT LDB CM11 EOTCH INB,SZB JMP LD1 JMP FINIS END OF TAPE EXIT LD1 JSB GETCR SZA,RSS JMP EOTCH CMA,CLE,INA STA EA JSB GETCR JSB GETWD STA ADDR STA CHKSM LDB OPTI SZB,RSS ZERO ? JMP PRBND YES,BOUND LD2 LDB OPTI CPB LDWRD LOAD ? JMP ADERR YES, CHECK FOR SUICIDE OK JSB GETWD GET WORD FROM TAPE STA INSTR ADA CHKSM STA CHKSM LDA INSTR OPTI NOP OPERATIVE WORD GOES HERE * CLE,RSS * compiles 000040 CLE, SS, hardcoding... OCT 2101 JMP MISCM TAPE # CORE MISBK ISZ ADDR ISZ EA FINISHED BLOCK ? JMP LD2 JSB GETWD YES, GET NEXT WORD FROM CPA CHKSM TAPE & CHECK---SUM JMP CONT OK LDA MSL8 CHECKSUM LDB MSG8 JSB PRTBF JMP STCLR * EPAT LDA PATWD TAPE INVERSE ENTRY POINT JMP STORE * TRAPP LDA ADDR CATCH POINT FOR INVERSE STA SA JSB PRTNM PRINT ADDRESS JSB BLANK LDA INSTR JSB INVIT DO INVERSE JMP OPTI+1 GETWD NOP JSB GETCR ALF,ALF STA WORD JSB GETCR IOR WORD JMP GETWD,I GETCR NOP * configuring RDRx for channel 12 RDR1 STC 000012B,C RDR2 SFS 000012B JMP *-1 RDR3 LIA 000012B JMP GETCR,I * PRBND JSB PRTNM JSB BLANK LDA EA CMA ADA ADDR JSB PRTNM JSB EOL JMP OK * FINIS LDA MSL14 PRINT *EOT & RETURN TO LDB MSG14 MODE REQUEST STATE JSB PRTBF JMP STCLR ADERR LDA ADDR CMA STA B ADA PENTR SSA,RSS PENTR > ADDR ? JMP OK ADB ADCON SSB ADDR > ADCON ? JMP OK LDA MSL9 PRINT ADDRESS & ABORT LDB MSG9 JSB PRTBF LDA ADDR JSB PRTNM JMP START MISCM LDA ADDR * 5400 here JSB PRTNM PRINT ADDRESS OF FAILING WORD JSB BLANK LDA ADDR,I JSB PRTNM PRINT CONTENTS JSB BLANK LDA INSTR JSB PRTNM PRINT WORD FROM TAPE JSB EOL JMP MISBK RETURN * * *** CONSTANTS AND STORAGE *** * LDWRD STA ADDR,I CPWRD CPA ADDR,I PATWD JMP TRAPP * CR OCT 15 M1 OCT 1 M5 DEC -5 MSK7 OCT 7 M60 OCT 60 ./. OCT 57 M177 OCT 177 B1777 OCT 1777 B2000 OCT 2000 PGMSK OCT 76000 B176K OCT 176000 CW1 OCT 160000 CW2 OCT 120000 CW3 OCT 110000 M377 OCT 377 COMMA OCT 54 CTRLC OCT 3 CTRLR OCT 22 CTRLP OCT 20 CTRLS OCT 23 CTRLD OCT 4 CTRLB OCT 2 CTRLI OCT 11 CTRLL OCT 14 B17 OCT 17 B70K OCT 70000 B74K OCT 74000 B37 OCT 37 COMAI OCT 26111 COMAC OCT 26103 COMAR ASC 2,,RSS QMARK ASC 1,? space after ? B77 OCT 77 BTS05 OCT 177700 ALPHA OCT 100 B6412 OCT 6412 CTRLT OCT 24 CTRLV OCT 26 ESC OCT 33 N15 EQU BTS05 P128 DEC 128 N127 DEC -127 N2 DEC -2 CM11 DEC -11 NOT9 OCT 176777 RSS OCT 233 EAMSK OCT 600 NOP OCT 53616 ;BSS 1 WORD OCT 50000 ;BSS 1 OPCOD OCT 47552 ;BSS 1 SA DEF SA ;BSS 1 EA DEF ENTRY+3000B ;BSS 1 *5500... ADDR OCT 23565 ;BSS 1 TEMP1 DEF TEMP1 ;BSS 1 TEMP2 OCT 0 ;BSS 1 I/O OCT 12 ;BSS 1 NEMON OCT 34760 ;BSS 1 LOBTS OCT 760 ;BSS 1 ORG OCT 2 ;BSS 1 INSTR EQU WORD PNTR EQU TEMP1 EAUFG EQU ADDR CNTR1 EQU WORD BEGIN EQU ORG PFIN EQU BELL PSWCH EQU OPTI REFAD EQU CONIN END EQU EA A EQU 0 B EQU 1 TMP1 EQU TEMP1 TMP2 EQU TEMP2 CTRLA EQU M1 MRMSK EQU B70K FIRST EQU SA NEWAS EQU I/O CORRN EQU NEMON ADFIN EQU LOBTS * * POINTERS * TBEND ABS MS2 TABL1 DEF PSEUD TABL2 DEF OPTAB PENTR DEF ENTRY SOSAD ABS SOS ADCON DEF RCONS MSG2 DEF MS2 MSG3 DEF MS3 MSG4 DEF MS4 MSG5 DEF MS5 MSG6 DEF MS6 MSG7 DEF MS7 MSG8 DEF MS8 MSG9 DEF MS9 MSG10 DEF MS10 MSG11 DEF MS11 MSG12 DEF MS12 MSG13 DEF MS13 MSG14 DEF MS14 MSG15 DEF MS15 MSG20 DEF MS20 MSG21 DEF MS21 MSG22 DEF MS22 MSG23 DEF MS23 MSG24 DEF MS24 * * MESSAGE LENGTHS * MSL2 EQU CTRLD ;4 MSL3 DEC 5 MSL4 DEC 6 MSL5 EQU MSK7 ;7 MSL6 EQU MSL4 ;6 MSL7 EQU CTRLC ;3 MSL8 EQU CTRLD ;4 MSL9 EQU CTRLD ;4 MSL10 EQU CTRLB ;2 MSL11 EQU CTRLI ;9 MSL12 EQU CTRLI ;9 MSL13 EQU MSL4 ;6 MSL14 EQU MSL10 ;2 MSL15 EQU MSL11 ;9 MSL20 EQU MSL3 ;5 MSL21 EQU MSL4 ;6 MSL22 EQU MSL3 ;5 MSL23 EQU CTRLR ;18 MSL24 EQU MSL3 ;5 * * SUP PSEUD OCT 2704 PSEUDO OPCODE TABLE OCT 60762 OCT 22762 OCT 25142,24660,23172,2201,2202,7001,7002 OCT 30201,30202,47201,47202,34760,6605 OCT 46601,46602 OCT 46601,46602,2623,4623,3123,5123,44054 OCT 44114,44062,44122,2622,4622,13101 OCT 13102,12601,12602,2606,4606,6601,6602 OCT 6641,6642,6141,6142,6645,6145,46272 OCT 47141,47142,22701,22702,47501,47502 OCT 33031,10466,10604,11164 OCT 47217,6617,46743,46763,20624,47206 OCT 6606,46303,46323,32441,32442,30441 OCT 30442,37201,37202,47203,6603 OCT 3162,3154,31162,31154,45122,45114 OCT 36164 OCT 45163 * OPTAB AND 00 TRUE OPCODE TABLE XOR 00 IOR 00 JSB 00 JMP 00 ISZ 00 ADA 00 ADB 00 CPA 00 CPB 00 LDA 00 LDB 00 STA 00 STB 00 *5700 should be here... NOP SPACE CLE OCT 2010 SLA IN ASG OCT 6010 SLB IN ASG * * the following was missing from the typed-in source, * reconstituted from dump CHKSM EQU NOP *starting at 5704... more opcode tables OCT 10,4010 BIT9 OCT 1000 OCT 5000,1100 OCT 5100,1200,5200,1300,5300 OCT 1400,5400,1500,5500,1600 OCT 5600,1700,5700,2400,6400 OCT 3000,7000,3400,7400,2200 OCT 2300,2040,2020,6020,2004 OCT 6004,2002,6002,100200,100400 OCT 104200,104400,102101 OCT 103101,102201 SOS OCT 102301 OCT 102000,102100,103100,102200 OCT 102300,102400,106400,102500 OCT 106500,102600,106600 OCT 102700,106700,101020,100020 OCT 101040,100040,101100,100100 *6000 should be here... OCT 0,2001 * PUNCH ? MS2 OCT 50125,47103,44040,37440 * PAGE ERROR MS3 OCT 50101,43505,20105,51122,47522 * OPCODE ERROR MS4 OCT 47520,41517,42105,20105,51122,47522 * ILLEGAL SPACE MS5 OCT 44514,46105,43501,46040 OCT 51520,40503,42440 * SEARCH FOR? MS6 OCT 51505,40522,41510,20106,47522,37440 * RANGE? MS7 OCT 51101,47107,42477 * CHECKSUM MS8 OCT 41510,42503,45523,52515 * ASSEMBLY/ ADDRESS= MS12 OCT 40523,51505,46502,46131,27440 MS9 OCT 40504,42122,42523,51475 * LOAD MS10 OCT 46117,40504 * ADDR CORE TAPE MS11 OCT 40504,42122 OCT 20040,20103,47522,42440,20040 OCT 52101,50105 * DUMP RANGE? MS13 OCT 42125,46520,20122 OCT 40516,43505,37440 * *EOT MS14 OCT 25105,47524 * *** OCTAPUS-D *** MS15 OCT 25052,25040,47503,52101,50125 OCT 51455,42040,25052,25040 * RELOCATE ? MS20 OCT 51105,46117,41501,52105,20077 * NEW ORIGIN ? MS21 OCT 47105,53440,47522,44507,44516,20077 * CONSTANTS? MS22 OCT 41517,47123,52101,47124,51477 * ADDRESS OF POINTERS ?(TERM. BY 0) MS23 OCT 40504,42122,42523,51505,51440 OCT 47506,20120,47511,47124,42522 OCT 51440,37440,24124,42522,46456 OCT 20102,54440,30051 * LAST WORD= MS24 OCT 46101,51524,20127,47522,42075 *6161... copied from self dump FIXIO CLC 000000,C ;jump here on restart LIA 000001 ;get switch register contents AND W6235,I ;and with ((005455) = 000077) SZA,RSS ;skip if non zero HLT 000033B ;halt here if SR = 0, no console! LDB W6243 ;load b with 106244 JSB S6221 ;jump to... JSB W6236,I LDA W6311 LDB W6276 JSB W6237,I JSB W6240,I LDB W6255 JSB S6221 JSB W6236,I LDA W6324 LDB W6312 JSB W6237,I JSB W6240,I LDB W6262 JSB S6221 JSB W6236,I LDA W6311 LDB W6325 JSB W6237,I JSB W6240,I LDB W6270 JSB S6221 JSB W6236,I LDA W6234,I STA W6241,I JMP W6241,I * S6221 NOP ;subroutine entry point! STA W6233 ;save console select code L6223 LDA 000001,I ;load a with m(b) SZA,RSS JMP S6221,I L6226 AND W6242,I IOR W6233 STA 000001,I INB JMP L6223 W6233 OCT 11 ;holds console select code W6234 DEF START ;4007 W6235 DEF B77 ;5455 ;pointer W6236 DEF EOL ;4065 W6237 DEF PRTBF ;4612 W6240 DEF .ATB ;4531 W6241 DEF ENTRY ;4000 W6242 DEF N15 ;5456 W6243 DEF W6244,I ;106244 W6244 DEF TTY1 ;4073 W6245 DEF TTY2 ;4074 W6246 DEF TTY3 ;4075 W6247 DEF TTY4 ;4077 W6250 DEF TTY5 ;4137 W6251 DEF TTY6 ;4141 W6252 DEF TTY7 ;4142 W6253 DEF TTY8 ;4143 W6254 DEF W6275 W6255 DEF W6256,I ;106256 W6256 DEF RDR1 ;5337 W6257 DEF RDR2 ;5340 W6260 DEF RDR3 ;5342 W6261 DEF W6275 W6262 DEF W6263,I ;106263 W6263 DEF OUT1 ;5023 W6264 DEF OUT2 ;5027 W6265 DEF OUT3 ;5030 W6266 DEF OUT4 ;5026 W6267 DEF W6275 W6270 DEF W6271,I ;106271 W6271 DEF LP1 ;4146 W6272 DEF LP2 ;4147 W6273 DEF LP3 ;4150 W6274 DEF W6275 W6275 OCT 000000 W6276 DEF W6277 *READER SELECT CODE? W6277 OCT 051105,040504,042522,020123,042514 W6304 OCT 042503,052040,041517,042105,037440 * W6311 OCT 000012 W6312 DEF W6313 * PUNCH SELECT CODE? W6313 OCT 050125,047103,044040,051505,046105 W6320 OCT 041524,020103,047504,042477 * W6324 OCT 000011 W6325 DEF W6326 * LINE PRINTER(2767A)? W6326 OCT 046111,047105,020120,051111,047124 W6333 OCT 042522,024062,033466,033501,024477 * *NOPS REP ENTRY+3000B-NOPS NOP NOP NOP NOP NOP NOP NOP NOP * hep me hep me quick ref for Octapus-D ORG 72400B LDA HELPA GET HELP TEXT ADDRESS STA WPTR INIT POINTER JSB PRINT JMP *+1,I RETURN TO MONITOR DEF ENTRY ADDRESS HERE PRINT NOP PRTLP LDA WPTR,I GET WORD POINTED TO BY WPTR CPA TERMI COMPARE TO TERMINATE WORD JMP PRINT,I IF EQUAL THEN RETURN JSB WOUTA,I PRINT 2 CHARS ISZ WPTR INCREMENT POINTER JMP PRTLP DO SOME MORE JMP PRINT,I DONT RUNAWAY WOUTA DEF PRTWD HELPA DEF HELP ADDRESS OF HELP TEXT WPTR OCT 0 WORD POINTER HELP OCT 6412 OCT 47503,52101,50125,51455,42040,41517,47124 OCT 51117,46040,45505,54523,35015,5101,24440 OCT 40523,46440,40524,20101,42104,51040,20040 OCT 20104,24440,42125,46520,20103,47522,42415 OCT 5122,24440,51125,47040,40524,20101,42104 OCT 51040,20040,20111,24440,42125,46520,20124 OCT 40520,42415,5124,24440,46117,40504,20124 OCT 40520,42440,20040,20040,20120,24440,50125 OCT 47103,44040,52101,50105,6412,53051,20126 OCT 42522,44506,54440,52101,50105,20040,20040 OCT 41051,20124,40520,42440,41117,52516,42123 OCT 6412,46051,20122,42514,47503,40524,42440 OCT 41517,42105,20040,51451,20123,42501,51103 OCT 44015,5110,44524,20105,51503,20124,47440 OCT 40523,51505,46502,46105,20116,42530,52040 OCT 46111,47105,6412 OCT 41524,51114,26503,20106,47522,20103,52522 OCT 51105,47124,20114,44516,42440,41517,47124 OCT 42516,52123,6412 * these codes display... * * OCTAPUS-E CONTROL KEYS: * A) ASM AT ADDR D) DUMP CORE * R) RUN AT ADDR I) DUMP TAPE * T) LOAD TAPE P) PUNCH TAPE * V) VERIFY TAPE B) TAPE BOUNDS * L) RELOCATE CODE S) SEARCH * HIT ESC TO ASSEMBLE NEXT LINE * CTRL-C FOR CURRENT LINE CONTENTS * TERMI OCT 77777 RCONS OCT 0 reloc constants added here *end END