ASMB,Q,C HED I/O ROUTINES FOR EMA ARRAYS * SOURCE: 92067-18069 * RELOC: PART OF 92067-16035 * PGMR: G.A.A.,D.L.S. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. 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. * * *************************************************************** NAM .ZAE.,7 92067-16035 REV.1901 781128 * * * THESE ROUTINES MAP IN ARRAYS TO BE PASSED TO THE FORMATER * AND THEN PASS THEM TO THE FORMATER. ARRAYS ARE MAPPED * IN 1024 WORDS AT A TIME SO AS TO INSURE THAT THAY ARE * ALWAYS ADDRESSABLE. * * * CALLING SEQUENCE: * * * JSB * DEF OFSET * DEF -ELEMENT COUNT * - RETURN - * * WHERE: IS: .IAE. FOR ONE WORD VARAIABLE * .RAE. FOR TWO WORD VARAIABLES * .XAE. FOR THREE WORD VARIABLES * .TAE. FOR FOUR WORD VARIABLES * * OFSET IS THE ARRAYS OFFSET FROM THE START OF EMA * (A TWO WORD DOUBLE INTEGER) * * ELEMENT COUNT IS THE NUMBER OF ELEMENTS OF THE GIVEN SIZE THAT * ARE TO BE TRANSFERED. (THIS IS A NEGATIVE * DOUBLE INTEGER.) * * CALLING SEQUENCE TO THIS ROUTINE IS: * * DEC #WORDS/PAGE (MUST BE WHOLE ELEMENTS) * DEF TO DEFS TO OFFSET IN EMA AND -# ELEMENTS TO XFER * JSB .ZAE. RETURN IS TO ABOVE ADDRESS POINTED TO +2 * DEC #ELEMENTS/PAGE * DEF .IAY. OR .RAY. OR .XAY. OR .TAY. AS REQUIRED * EXT .EMAP,ERR0 ENT .ZAE. * #WDS NOP RTN NOP N3 DEC -3 A EQU 0 B EQU 1 FMTR NOP HOLD FORMATER ENTRY ADDRESS XIDEX EQU 1645B ADDRESS OF THE ID EXTENSION B174K OCT 174000 SKP .ZAE. NOP THIS IS WHERE IT HAPPENS CLB SET TO DEFAULT TO ZERO IF NOT AN EMA PGM. LDA XIDEX FIRST GET INA THE XLA A,I EMA LOGICAL ADDRESS AND B174K ISOLATE THE PAGE RAR PUT IN RIGHT SPOT IN WORD STA EMAAD PUT IN THE .EMAP CALL LDA .ZAE. GET THE RETURN ADDRESS AND ADA N3 USE IT TO INDEX INTO THE DLD A,I THE DATA DST #WDS SAVE THE #WORDS AND THE RETURN ADDRESS DLD B,I GET THE DEF'S FOLLOWING THE CALL ISZ RTN SET UP THE PROPER RETURN ADDRESS ISZ RTN SET UP THE PROPER RETURN ADDRESS STB T1 SAVE THE ADDRESS OF THE COUNT DLD A,I GET THE OFFSET DST EMOF AND SET IN THE .EMAP CALL DLD .ZAE.,I GET THE #WORDS/X AND THE FMTR ENTRY PT. STB FMTR SAVE IN THE FORMATER CALL STA NELM ALSO SAVE THE DEFAULT COUNT DLD T1,I GET THE TOTAL NUMBER OF WORDS IN THE ARRAY T1 EQU *-1 AGAIN DST COUNT SAVE IT ASL 1 TEST IF INB,SZB LESS THAN 32K LEFT (SETS E IF SKIP) JMP OK NO GO DO THE DEFAULT XFER * ERA YES RESTORE THE COUNT ADA NELM TEST IF LESS THAN THE DEFAULT SSA WELL? JMP OK NO GO DO THE DEFAULT * LDB COUNT YES COMPUTE HOW MANY CMB,INB AND STB NELM SET FOR THE CALL * OK JSB .EMAP CALL .EMAP TO RESOLVE THE ADDRESS DEF BOOM EMAAD NOP ADDRESS OF EMA FROM THE IDEX DEF TABLE USE DUMMY TABLE BOOM JSB ERR0 TOO BAD YOU LOSE STB CALL SET ADDRESS FOR FMTR CALL JSB FMTR,I CALL THE FORMATER CALL NOP ADDRESS NELM NOP NUMBER OF ELEMENTS * CLE COMPUTE WHAT IS LEFT LDA EMOF FIRST THE ADA #WDS THE EMA OFFSET SEZ,CLE MOST IS A CARRY ISZ EMOF+1 IF CHANGE STEP IT STA EMOF RESTORE THE OFFSET * DLD COUNT ADA NELM SUBTRACT FROM NUMBER LEFT SEZ,CLE MOST IS A CARRY OF 1 INB,SZB INDEX COUNT JMP AGAIN IF NO ROLL OVER THEN DO IT AGAIN * JMP RTN,I ELSE RETURN * * TABLE NOP NO DIMENSIONS EMOF NOP DOUBLE WORD EMA OFFSET NOP COUNT NOP DOUBLE WORD COUNT (NEGATIVE) NOP END