ASMB,R,Q,C * NAME: SWPIN * SOURCE: 92070-18161 * RELOC: 92070-1X161 * PGMR: HLC * * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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 SWPIN,7 92070-1X161 REV.1941 790208 ENT SWPIN * EXT $LIBR,$LIBX,.ENTP,$SWTA EXT $SWLU,.MVW EXT GTOPN,$BGBP,$SYBP,$FWBG EXT $ROM,$ID# * A EQU 0 B EQU 1 * * * * * SAMPLE PROGRAM: * *FTN4,L * PROGRAM SWPTS * INTEGER DCB(144),ERROR,NAME(3) * INTEGER SWPIN,BLOCKS * DATA NAME/2HSW,2HAP,2HFL/ *C * IF (OPEN (DCB,ERROR,NAME,4).LT.0) GOTO 100 * IF (SWPIN(DCB,ERROR,BLOCKS).LE.0) GOTO 100 * WRITE(1,50)ERROR,BLOCKS *50 FORMAT(I8," SWAP AREAS AVAILABLE." I8 " BLOCKS REQUIRED.") *200 CALL CLOSE(DCB) * STOP *100 WRITE(1,150)ERROR *150 FORMAT(" SWAP INITIALIZATION FAILED (FMP ERROR",I4,")") * GOTO 200 * END * END$ * * * POSSIBLE SWPIN ERRORS: * -7 WRONG SECURITY CODE * -11 FILE NOT OPEN * -42 SWAPPING ACTIVE * -43 SYSTEM DOES NOT ALLOW SWAPPING * -44 WRONG FILE TYPE * -45 FILE TOO SMALL * * * IDCB NOP IERR NOP IBLKS NOP SWPIN NOP INITIALIZE SWAPPING JSB $LIBR TURN OFF MEMORY PROTECT NOP JSB .ENTP GET PARAMETER ADDRESSES DEF IDCB LDA =D-43 LDB $SWLU SSB JMP ERROR NO SWAPPING MODULE IN SYSTEM * AGAIN LDA $ID# MAX NO. OF SWAP AREAS CMA,INA STA TEMP * LDA $SWTA SCAN THE SWAP TABLE FOR BUSY AREAS STA SWTP LOOP1 LDB A,I SZB JMP MR? SWAPPING ACTIVE INA ISZ TEMP JMP LOOP1 * LDA IDCB COPY THE DCB TO LOCAL MEMORY LDB DDCB JSB .MVW DEF D10 NOP * JSB GTOPN GET THE OPEN FLAG DEF *+1 CPA OPEN CCB,RSS JMP ER.11 DCB NOT OPEN TO THIS PROGRAM * ADB TYPE LDA =D-44 SZB JMP ERROR NOT TYPE 1 FILE * LDB CODE LDA =D-7 SSB,RSS JMP ERROR WRONG SECURITY CODE * LDA LU AND =B77 STA SWLU SWAPPING DISC LU * LDA $FWBG CMA,INA ADA $ROM SIZE OF BACKGROUND CLB RRR 7 DIVIDE BY 128 SZB INA ROUND UP TO WHOLE BLOCK STA TEMP NO. OF BLOCKS FOR MAIN * LDA TRACK STA SWTR STARTING TRACK OF FILE LDA SECTR STA SWSEC STARTING SECTOR OF FILE RAR STA TEMP2 STARTING BLOCK * LDA SEC/T RAR STA BLK/T CONVERT SECTORS TO BLOCKS MPY TRACK CLE ADA TEMP2 STARTING BLOCK FOR SWAP FILE SEZ CLE,INB CARRY DST MBLOK ADA TEMP ADD SIZE OF BACKGROUND SEZ INB DST BBLOK STARTING BLOCK FOR BASE PAGE * LDA $BGBP CMA,INA ADA $SYBP SIZE OF BACKGROUND BASE PAGE STA SZBP CLB RRR 7 DIVIDE BY 128 SZB INA ROUND UP TO WHOLE BLOCK ADA TEMP TOTAL BLOCKS PER SWAP AREA STA BLK/A LDA SIZE DIVIDE FILE INTO SWAP AREAS RAR CLB DIV BLK/A NO. OF AREAS STA B CMA,INA ADA $ID# SSA LDB $ID# DO NOT EXCEED SIZE OF SWAP TABLE LDA =D-45 SZB,RSS JMP ERROR FILE TOO SMALL FOR ANY SWAP AREAS STB SWT# ADB $SWTA STB SWEND END OF VALID SWAP TABLE * LDA DSWLU MOVE LOCAL TABLE TO SYSTEM MEMORY LDB D$SWL JSB .MVW DEF D13 NOP LDA SWT# MPY BLK/A COMPUTE TOTAL BLOCKS REQUIRED STA IBLKS,I LDA SWT# * ERROR STA IERR,I JSB $LIBX RESTORE MEMORY PROTECT DEF SWPIN * ER.11 LDA =D-11 JMP ERROR * * MR? STA TEMP SWAP TABLE INDEX ADB =D15 LDA B,I ID SEGMENT STATUS WORD SSA,RSS JMP ER.42 SWAPPED PROGRAM IS NOT IN MEMORY ADB =D12 LDA B,I AND =B377 CLEAR SWAP AREA NO. STA B,I CLA STA TEMP,I CLEAR SWAP TABLE JMP AGAIN RESCAN SWAP TABLE * * ER.42 LDA =D-42 JMP ERROR * D13 DEC 13 D10 DEC 10 * * D$SWL DEF $SWLU * DSWLU DEF SWLU * SWLU NOP LU OF SWAPPING DISC SWTR NOP STARTING TRACK OF SWAP FILE SWSEC NOP STARTING SECTOR OF SWAP FILE SWT# NOP NUMBER OF VALID SWAP AREAS SWTP NOP CURRENT SWAP TABLE POINTER SWEND NOP ADDRESS OF LAST VALID ENTRY +1 SZBP NOP SIZE OF BASE PAGE IN WORDS BLK/T NOP NO. OF 128 WORD BLOCKS PER TRACK BLK/A NOP NO. OF BLOCKS PER SWAP AREA MBLOK OCT 0,0 STARTING BLOCK FOR MAIN BBLOK OCT 0,0 STARTING BLOCK FOR BASE PAGE * * * DDCB DEF LU * LU NOP TEMP NOP TYPE NOP TRACK NOP SECTR NOP SIZE NOP TEMP2 NOP CODE NOP SEC/T NOP OPEN NOP END