ASMB,R,L,C ** .EMIO ** HED .EMIO I/O BVUFFER ROUTINE FOR EXTENDED MEMORY AREAS * SOURCE: 92067-18291 * RELOC: PART OF 92067-16268 AND 92067-16035 * PGMR: S.P.K. * * *************************************************************** * * (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 .EMIO,7 92067-1X291 REV.2013 771006 SUP ENT .EMIO EXT .EMAS,.EMAT,..MP,.NPGS,.IPGS,.MSG#,.MSGS,.ARRY EXT .SUM2,.EMSZ * * * ROUTINE TO RESOLVE AN ELEMENT ADDRESS FOR AN EMA ARRAY * AND TO MAP THE APPROPRIATE MAPPING SEGMENT TO CONTAIN * THE ENTIRE BUFFER STARTING AT THE ELEMENT AND HAS * LENGTH SPECIFIED IN THE CALLING SEQUENCE * A SPECIAL NON-STANDARD MAPPING SEGMENT IS MAPPED IF THE * BUFFER DOES NOT FIT INTO A STANDARD MAPPING SEGMENT * * CALLING SEQUENCE: * JSB .EMIO * DEF RTN RETURN ADDRESS FOR ERROR RETURNS * DEF BUFL LENGTH OF BUFFER IN # WORDS * DEF TABLE TABLE CONTAINING ARRAY PARAMETERS * DEF A(N) SUBSCRIPT VALUE FOR NTH DIMENSION * DEF A(N-1) " " " (N-1)ST " * . * . * DEF A(2) " " " 2ND " * DEF A(1) " " " 1ST " * RTN -- ERROR RETURN -- * -- NORMAL RETURN -- * *THE PARAMETER TABLE IS: * -------------------- * # DIMENSIONS * - L(N) * D(N-1) * - L(N-1) * . * . * - L(2) * D(1) * - L(1) * # WORDS/ELEMENT * OFFSET WORD 1 (LOW 16 BITS) * OFFSET WORD 2 (HIGH 16 BITS) * --------------------- * * * RETURNS: ERROR RETURN: AT LOC RTN * AREG=16(ASCII), BREG=EM(ASCII) * NORMAL RETURN: AT LOC RTN+1 * AREG = MEANINGLESS * BREG = ELEMENT ADDRESS * * .EMIO NOP LDA .EMIO RETURN ADDRESS INA POINT TO THE BUFFER LENGTH LDB .EMIO,I SAVE RETURN ADDRESS STB .EMIO LDB XIDEX EMA ROUTINE DECLARED IN CALLING PROG? SZB,RSS JMP ERROR NO, THEN ERROR LDB A,I LDB B,I BUFFER LENGTH IN B REG STB BUFL SAVE IT SSB -VE? JMP ERROR YES, ERROR INA POINT TO 'DEF TABLE' PARAMETER JSB .EMAS RESOLVE ADDRESS OF ELEMENT SSA ERROR ENCOUNTERED? JMP ERROR YES * * TEST IF SPECIAL MAPPING REQUIRED * ADB BUFL ADD BUFFER LNGTH TO DISP IN MSEG CLA RRL 6 #PAGES IN DISP + BUFL IN A REG SZB REMAINDER=0? INA NO STA TEMP SAVE THIS VALUE CMA,INA NEGATE # PAGES ADA .MSGS ADD MAPPING SEGMENT SIZE SSA MSEG SIZE > DISP + BUFL? JMP SPMAP NO THEN SPECIAL MAPPING REQUIRED LDA TEMP GET #PAGES IN DISP FROM START OF EMA UPTO MSEG ADA .IPGS ADD #PGS FROM START OF EMA UPTO ELEMENT CMA,INA NEGATE IT ADA .EMSZ EMA SZ - #PGS FROM START OF EMA TO END OF MSEG SSA EMA SIZE SMALLER? JMP ERROR YES JSB .EMAT NO, THEN MAP STANDARD MSEG SSA ERROR? JMP ERROR YES * ISZ .EMIO NORMAL RETURN TO LOC RTN + 1 JMP .EMIO,I * * SPECIAL MAPPING REQUIRED * SPMAP LDA .SUM1 DISP INTO PAGE CONTAINING ELEMENT STA TEMP SAVE IT ADA BUFL ADD #WRDS IN BUFFER SSA OVERFLOW? JMP ERROR YES, THEN ERROR CLB NO RRR 10 #PGS NEEDED TO MAP TO ACCESS ENTIRE BUFFER SZB REMAINDER=0? INA NO STA .SUM1 # PAGES TO BE MAPPED LDA .SUM2 STA .IPGS CCA SPECIAL MAPPING SEGMENT STA .MSG# JSB ..MP MAP THE SPECIAL MAPPING SEGMENT SSA ERROR RETURN? JMP ERROR YES, THEN MAKE ERROR RETURN LDB .ARRY BASE ADDRESS OF ARRAY ADB TEMP # WORDS LEFT IN DISP ISZ .EMIO NORMAL RETURN JMP .EMIO,I * * ERROR DLD ERRCD JMP .EMIO,I ERROR RETURN * * ERRCD ASC 2,16EM BUFL NOP TEMP NOP .SUM1 EQU .NPGS N1 DEC -1 B1777 OCT 1777 XIDEX EQU 1645B A EQU 0 B EQU 1 END