ALWAYS 24SEP0 MOVE .PSECT .MCALL DIR$ ;************************************************************************ ;* * ;* MODULE: MOVE - MOVE A BYTE/WORD * ;* * ;* AUTHOR: KEVIN ANGLEY * ;* * ;* DATE: 24-SEP-80 * ;* * ;* INPUT PARAMETERS: * ;* * ;* R0 POINTS TO COMMAND LINE IN PROCESS * ;* * ;* OUTPUT PARAMETERS: * ;* * ;* R0 POINTS JUST BEYOND COMMAND LINE * ;* * ;* DESTROYS: R1,R2,R3,R4 * ;* * ;************************************************************************ MOVE:: CLRB R2 ; ASSUME BYTE MOVE GETKEY BYTE ; GET BYTE KEYWORD BEQ 10$ ; EQ: GOT IT INCB R2 ; ASSUME WORD MOVE GETKEY WORD ; GET WORD KEYWORD BNE 245$ ; NE: MISSING KEYWORD 10$: GETKEY FROM ; GET FROM KEYWORD BNE 245$ ; NE: MISSING KEYWORD CMPB #'%,(R0) ; PSEUDO-REGISTER SOURCE? BNE 12$ ; NE: NO CLR R1 INC R0 CALL GETHX2 ; GET REGISTER NUMBER BCS 250$ ; CS: FAILED MOVB REGISTER(R1),R3 ; R3 CONTAINING LO BYTE TO TRANSFER TSTB R2 ; BYTE MOVE? BEQ 20$ ; EQ: YES INCB R1 ; INCREMENT PSEUDO-REG WITH WRAP MOVB REGISTER(R1),R4 ; R4 CONTAINS HIGH BYTE TO TRANSFER BR 20$ ; GO PUT INTO DESTINATION 12$: CALL GETHX4 ; GET 4 DIGIT HEX ADDRESS BCS 250$ ; CS: FAILED CALL VALID ; MUST VALIDATE + OFFSET BCS 250$ ; CS: INVALID MOVB MEMORY(R1),R3 ; R3 CONTAINS LO BYTE TO TRANSFER TSTB R2 ; BYTE MOVE? BEQ 20$ ; EQ: YES - DONE WITH SOURCE INC R1 ADD OFFST,R1 ; UN-OFFSET CALL VALID ; HIGH ADDRESS MUST ALSO BE VALID BCS 250$ ; CS: INVALID MOVB MEMORY(R1),R4 ; R4 CONTAINS HIGH BYTE TO TRANSFER 20$: GETKEY TO ; GET TO KEYWORD BNE 245$ ; MISSING KEYWORD CMPB #'%,(R0) ; PSEUDO-REGISTER DEST BNE 22$ ; NE: NO CLR R1 INC R0 CALL GETHX2 ; GET REGISTER NUMBER BCS 250$ ; CS: FAILED MOVB R3,REGISTER(R1) ; PUT IN LO BYTE TSTB R2 ; BYTE MOVE? BEQ 255$ ; EQ: ALL DONE INCB R1 ; INCREMENT PSEUDO-REG MOVB R4,REGISTER(R1) ; PUT IN HIGH BYTE WITH WRAP BR 255$ ; ALL DONE 22$: CALL GETHX4 ; GET 4 DIGIT HEX ADDRESS BCS 250$ ; CS: FAILED CALL VALID ; MUST VALIDATE AND OFFSET BCS 250$ ; CS: INVALID MOVB R3,MEMORY(R1) ; PUT IN LOW BYTE TSTB R2 ; BYTE MOVE? BEQ 255$ ; EQ: YES -ALL DONE INC R1 ; INCREMENT ADD OFFST,R1 ; UN-OFFSET CALL VALID ; HIGH ADDRESS MUST BE VALID ALSO BCS 250$ ; CS: INVALID MOVB R4,MEMORY(R1) ; PUT IN HIGH BYTE BR 255$ ; ALL DONE 245$: OUTPUT MSK ; MISSING KEYWORD 250$: ; ERROR EXIT 255$: CALL$R EXTRA ; IGNORE EXTRA + RETURN .END