ASMB,R,L,C * NAME: SNPDF * SOURCE: 92070-18121 * RELOC: 92070-16121 * PGMR: D.J.W. * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. 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 SNPDF,7 92070-1X121 REV.1941 800325 * * * THIS ROUTINE OPENS THE SNAPSHOT FILE. IF NO FILE NAMR HAS * YET BEEN SPECIFIED THE DEFAULT FILE NAMR 'SNAP:0:0' IS USED. * THE FILE IS OPENED AND THE HEADER RECORD INFORMATION READ AND * SAVED. * * CALLING SEQUENCE: JSB SNPDF * * ON RETURN: P+1: A-REG = FMP ERROR CODE * P+2: NO ERROR * * * CHANGE 3/25/80 * A CHANGE WAS MADE TO CHECK THAT FREE SPACE WAS AVAILABLE * BEFORE THIS FREE SPACE WAS WRITTEN INTO WITH THE SYSTEM * BASE PAGE VALUES. BEFORE IF THE MEMORY WAS NOT THERE THE * LOADER COULD ABORT WITH A MEMORY PROTECT ERROR. * * * ENT SNPDF,STBND EXT .MVW,#SENT,AB.RT,BGFW,FMPER EXT FWAVB,FWSYB,FOPEN,I.ERR,LDRER EXT LIMEM,LWAFS,PGLWA,POSNT,PROGT EXT READF,ROM,SDCB,SNAMR,SYBP * A EQU 0 B EQU 1 * ASTYP DEF SNAMR+3 SNAPSHOT TYPE WORD (DIRECT) ASNAP DEF *+1 DEFAULT SNAPSHOT FILE NAMR ASC 3,SNAP NAME DEC 3 TYPE WORD BSS 2 SECURITY CODE AND CARTRIDGE NUMBER ASBUF DEF *+1 SBUF BSS 12 SNAPSHOT LOCAL BUFFER COUNT BSS 1 P2 DEC 2 P3 DEC 3 P6 DEC 6 P144 DEC 144 IOPTN OCT 1 * * SNPDF NOP LDA ASTYP,I FIRST DETERMINE IF A SNAPSHOT HAS CPA P3 BEEN NAMED JMP SNPD1 YES, HAS BEEN NAMED LDA ASNAP NO, MOVE DEFAULT NAMR INTO SNAMR LDB ASNAM JSB .MVW DEF P6 NOP * SNPD1 JSB FOPEN OPEN THE FILE AND CHECK ERROR RETURN DEF *+5 ASNAM DEF SNAMR+0 DEF SDCB+0 DEF IOPTN DEF P144 JMP SNPDF,I ERROR ON OPEN * * READ SNAP HEADER RECORD INFORMATION. * JSB READF READ HEADER RECORD OFF SNAPSHOT DEF *+6 DEF SDCB+0 SNAPSHOT DCB ADDRESS DEF I.ERR+0 ERROR PARAMETER DEF SBUF SNAP BUFFER DEF HDRLN SNAP HEADER LENGTH DEF LEN LENGTH READ * SSA FMP ERROR ? JMP SNFMP YES LDB LEN GET THE LENGTH READ CPB HDRLN IS IT THE PROPER NUMBER OF WORDS ? RSS YES JMP SNPIL NO, ILLEGAL SNAP FILE * * CALCULATE CHECKSUM VALUE AND MATCH * LDB ASBUF ADDRESS OF SBUF LDA NSWRD -VE NUMBER OF WORDS TO SUM STA COUNT WORD COUNT CLA INITIAL VALUE LOOP ADA B,I ADD VALUE INTO CHECKSUM INB ISZ COUNT HAVE WE LOADED ALL ? JMP LOOP NO, CONTINUE CPA B,I YES, COMPARE TO CHECKSUM VALUE JMP OK MATCH !!!!! * SNPIL LDA P3 CHECKSUM DOES NOT MATCH, ILLEGAL SNAPSHOT JSB LDRER JMP SNPDF,I RETURN TO P+1 * HDRLN DEC 12 SNAPSHOT HEADER LENGTH NSWRD DEC -11 NEGATIVE NUMBER SNAP HEADER WORDS * OK LDA ASBUF SAVE THESE VALUES IN MAIN LDB HEADR JSB .MVW DEF HDRLN NOP * LDA SBUF+1 CALCULATE RECORD NUMBER OF BASE PAGE AND RHALF AND THE RIGHT HALF LDB A XOR SBUF+1 NOW GET RIGHT HALF ALF,ALF ADA B ADB SBUF ADD IN THE NUMBER OF SYSTEM ENTRIES ADB P2 STB BPREC * * * READ IN SYSTEM BASE PAGE AT END OF FREE AREA * JSB LIMEM GET LOADER'S MEMORY LIMITS DEF *+4 DEF ANOP DEF FWSYB FIRST WORD AVAILABLE FREE SPACE DEF ILMEM NUMBER OF FREE WORDS * LDA FWSYB ADA ILMEM ADA N1 STA LWAFS * LDA FWSYB SET A DUMMY POINTER INTO SYSTEM BASE PAGE STA DMPTR LDA M2000 DETERMINE AMOUNT OF SYSTEM BASE PAGE ADA SYBP STA AMNT NEGATIVE AMOUNT VALUE * LDB ILMEM MAKE SURE THAT THIS MUCH IS THERE ADB A SSB IF ASKED FOR MORE THAN WE HAVE AVAILABLE JMP ERROR THEN USER HAS GOT TROUBLE * CMA,INA ADA FWSYB STA FWAVB * JSB POSNT FIRST POSITION SNAP TO BASE PAGE VALUES DEF *+5 DEF SDCB SNAPSHOT DCB DEF I.ERR ERROR PARAMETER DEF BPREC RECORD NUMBER TO POSITION TO DEF P5 INDICATES NUR IS A RECORD NUMBER SSA FMP ERROR ? JMP SNFMP * REABP JSB READF READ IN A BASE PAGE RECORD DEF *+6 DEF SDCB SNAPSHOT DCB DEF I.ERR ERROR PARAMETER DEF DMPTR,I POINTER INTO FREE MEMORY DEF P128 LENGTH TO BE READ DEF LEN ACTUAL LENGTH READ * SSA FMP ERROR ON READ ? JMP SNFMP YES * LDA LEN GET ACTUAL TRANSMISSION LOG ADA AMNT SUBTRACT VALUE FROM AMNT SZA,RSS NONE LEFT TO BE READ ? JMP SDONE CORRECT SSA,RSS HAVE WE READ MORE THAN EXPECTED ? JMP ILSNP YES, ILLEGAL SNAPSHOT STA AMNT NO, SET NEW REMAINING AMOUNT LDA DMPTR INCREMENT DUMMY POINTER BO 200 OCTAL ADA P128 STA DMPTR JMP REABP AND READ THE NEXT RECORD * SDONE JSB STBND CHECK OUT PROGRAM BOUNDS ISZ SNPDF RETURN P+2 LDA SNAMR+3 CCE ALS,ERA STA SNAMR+3 STA SNAMR+3 JMP SNPDF,I * SNFMP JSB FMPER DEF SNAMR+0 JMP SNPDF,I * * ERROR LDA N5 OUTPUT THE 'OV SYM' ERROR MESSAGE JSB LDRER JMP AB.RT GOT TO ABORT ON THIS ONE N5 DEC -5 * ILSNP LDA P3 JSB LDRER JMP SNPDF,I * HEADR DEF #SENT+0 ANOP NOP DMPTR NOP DUMMY POINTER VARIABLE ILMEM NOP NUMBER WORDS FREE MEMORY RHALF OCT 377 AMNT NOP AMOUNT BASE PAGE BPREC NOP FILE RECORD NUMBER OF SYSTEM BASE PAGE P128 DEC 128 M2000 OCT -2000 N1 DEC -1 LEN NOP LENGTH READ P5 DEC 5 HED SET UP PROGRAM AND BASE PAGE BOUNDRIES * * STBND SIMPLY CHECKS THE PROGRAM TYPE FLAG, 'PROGT' AND SETS * THE PROGRAM BOUNDRY VALUES ACCORDINGLY. THE VALUES ARE * PGFWA * PGLWA * BPFWA * BPLWA * * CALLING SEQUENCE: * JSB STBND * BGPTR DEF ROM+0 RTPTR DEF BGFW+0 ABNDS DEF PGLWA+0 * STBND NOP LDB PROGT GET PROGRAM TYPE FLAG LDA BGPTR ASSUME BACKGROUND PROGRAM SZB IS THIS BACKGROUND ? LDA RTPTR NO, REAL-TIME PROGRAM * * SET PROGRAM BOUNDRIES, FIRST AND LAST WORDS * LDB ABNDS DESTINATION ADDRESS IN MAIN JSB .MVW DEF P5 NOP * JMP STBND,I END