;MEMEDT.M68 ;Memory Module Editor ;David F. Pallmann SEARCH SYS SEARCH SYSSYM SEARCH TRM LF=12 CR=15 .OFINI .OFDEF MODULE,D.DDB .OFSIZ MEMSIZ DEFINE DEPACK ADDR IF NB,ADDR,LEA A1,ADDR SUB #4,SP MOV SP,A2 UNPACK CLRB @A2 TTYL @SP ADD #4,SP ENDM START: ;PHDR -1,0,PH$REE!PH$REU!PH$OPR;program header GETIMP MEMSIZ,A5 ;allocate local memory GETDEV: BYP ;bypass leading white space FSPEC MODULE(A5),LIT ;load DDB w/module spec INIT MODULE(A5) ;load driver, allocate buffer FETCH MODULE(A5),A4 ;srch/fetch module, A4 is base JNE NOTFND ; not found SETFLG: JOBIDX A0 ORW #J.CCA,JOBTYP(A0) MOV JOBTRM(A0),A1 ORW #T$ILC,T.STS(A1) INIT: CLR D5 DUMP: CALL OCTAL DEVICE: DEPACK MODULE+D.FIL(A5) DEPACK TYPE . DEPACK MODULE+D.EXT(A5) TYPESP : ADDR: CALL OCTAL MOV D5,D1 OCVT 3,OT$TRM!OT$ZER TTYI ASCIZ "/ " EVEN CALC: MOV A4,A3 ADD D5,A3 DUMP.O: CALL OCTAL MOVW @A3,D1 OCVT 6,OT$TRM!OT$TSP DUMP.D: MOVW @A3,D1 DCVT 5,OT$TRM!OT$ZER TYPESP . DUMP.H: TYPE $ CALL HEX MOVW @A3,D1 OCVT 4,OT$TRM!OT$TSP DUMP.A: TYPE " MOVB @A3,D1 CALL PRINT MOVB 1(A3),D1 CALL PRINT TYPESP DUMP.R: TYPE [ DEPACK @A3 TYPESP ] PROMPT: TYPESP ? KBD EXIT NUM BEQ GETNUM CMPB @A2,#LF JEQ NXTADR CMPB @A2,#CR JEQ NXTADR CMPB @A2,#'[ JEQ GETR50 CMPB @A2,#'" JEQ GETASC CMPB @A2,#'$ JEQ GETHEX ; CMPB @A2,#'W ; JEQ WRITE ; CMPB @A2,#'w ; JEQ WRITE ; CMPB @A2,#'R ; JEQ READ ; CMPB @A2,#'r ; JEQ READ ERROR: TTYI BYTE 7,0 JMP DUMP GETNUM: MOV A2,A1 GTDEC CMPB @A2,#CR BEQ CHGOCT CMPB @A2,#'. BEQ CHGDEC CMPB @A2,#'/ BEQ SETADR JMP ERROR CHGOCT: CALL OCTAL MOV A1,A2 GTOCT MOVW D1,@A3 JMP NXTADR CHGDEC: MOVW D1,@A3 JMP NXTADR GETHEX: INC A2 CALL HEX GTOCT CMPB @A2,#'/ BEQ HEXADR MOVW D1,@A3 JMP NXTADR HEXADR: MOV D1,D5 CRLF JMP DUMP SETADR: CALL OCTAL MOV A1,A2 GTOCT MOV D1,D5 CRLF JMP DUMP NXTADR: MOVB #CR,D1 TTY ADD #2,D5 CMPW D5,#512. BLT 10$ CLR D5 10$: JMP DUMP GETR50: INC A2 MOV A3,A1 PACK JMP NXTADR GETASC: INC A2 MOVB (A2)+,(A3)+ MOVB (A2)+,(A3)+ JMP NXTADR NOTFND: TYPESP ? PFILE MODULE(A5) TYPECR < not found> EXIT: CALL OCTAL CRLF EXIT OCTAL: JOBIDX A0 ANDW #^C,JOBTYP(A0) RTN HEX: JOBIDX A0 ORW #J.HEX,JOBTYP(A0) RTN PRINT: CMPB D1,#40 BLT 10$ CMPB D1,#125. BGT 10$ TTY RTN 10$: TYPE . RTN END .