"Loading DASL" $PRINT CRLF ;DASL - double arithmetic shift left 7/31/04 ;usage: high low #shifts DASL pushes high,low result ;sign bit 31 is not affected, shifts 0 into bit 0 ;#shifts=0 performs A/B swap (sign and all) OCTAL CREATE DASL LDA ASLINS ;GET ASL INSTRUCTION STA INSEXE ;SAVE IN LOCATION TO EXECUTE DOSH JSB ZSPOP,I ;POP #SHIFTS AND LOW4 ;ONLY 0-15 ALLOWED STA NSHFTS ;SAVE TO BE COMBINED W/INS JSB ZSPOP,I ;POP AND SAVE LOW WORD STA LOWWRD JSB ZSPOP,I ;POP AND SAVE HIGH WORD STA HIWORD LDA INSEXE ;GET SHIFT INSTRUCTION IOR NSHFTS ;OR WITH #SHIFTS STA INSEXE ;STORE TO BE EXECUTED LDA LOWWRD ;GET LOW WORD IN A LDB HIWORD ;GET HIGH WORD IN B INSEXE NOP ;SHIFT INSTRUCTION HERE STA LOWWRD ;SAVE LOW WORD LDA 1 ;GET HIGH WORD JSB ZSPSH,I ;PUSH IT LDA LOWWRD ;GET LOW WORD JSB ZSPSH,I ;PUSH IT JMP ZNXT,I ;RETURN TO HPIPLOS NSHFTS OCT 0 ;STORAGE FOR #SHIFTS LOWWRD OCT 0 ;STORAGE FOR LOW WORD HIWORD OCT 0 ;STORAGE FOR HIGH WORD ASLINS ASL 0 ;ASL INSTRUCTION LOW4 OCT 17 ;MASK FOR #SHIFTS END "Loading DASR" $PRINT CRLF ;DASR - double arithmetic shift right 7/31/04 ;usage: high low #shifts DASR pushes high,low result ;sign bit 31 is not affected, sign shifts into bit 30 ;#shifts=0 performs A/B swap (sign and all) OCTAL CREATE DASR /KEEP LDA ASRINS ;GET ASR INSTRUCTION STA INSEXE ;STORE IN PLACE TO EXECUTE JMP DOSH ;JUMP TO COMMON CODE ASRINS ASR 0 ;ASR INSTRUCTION END "Loading DLSL" $PRINT CRLF ;DLSL - double logical shift left 8/1/04 ;usage: high low #shifts DLSL pushes high,low result ;shifts 0 into bit 0 ;#shifts=0 performs A/B swap OCTAL CREATE DLSL /KEEP LDA LSLINS ;GET LSL INSTRUCTION STA INSEXE ;STORE IN PLACE TO EXECUTE JMP DOSH ;JUMP TO COMMON CODE LSLINS LSL 0 ;LSL INSTRUCTION END "Loading DLSR" $PRINT CRLF ;DLSR - double logical shift right 8/1/04 ;usage: high low #shifts DLSR pushes high,low result ;shifts 0 into bit 31 ;#shifts=0 performs A/B swap OCTAL CREATE DLSR /KEEP LDA LSRINS ;GET LSR INSTRUCTION STA INSEXE ;STORE IN PLACE TO EXECUTE JMP DOSH ;JUMP TO COMMON CODE LSRINS LSR 0 ;LSR INSTRUCTION END "Loading DROL" $PRINT CRLF ;DROL - double rotate left 8/1/04 ;usage: high low #shifts DROL pushes high,low result ;shifts bit 31 into bit 0 ;#shifts=0 performs A/B swap OCTAL CREATE DROL /KEEP LDA RRLINS ;GET RRL INSTRUCTION STA INSEXE ;STORE IN PLACE TO EXECUTE JMP DOSH ;JUMP TO COMMON CODE RRLINS RRL 0 ;RRL INSTRUCTION END "Loading DROR" $PRINT CRLF ;DROR - double rotate right 8/1/04 ;usage: high low #shifts DROR pushes high,low result ;shifts bit 0 into bit 31 ;#shifts=0 performs A/B swap OCTAL CREATE DROR /KEEP LDA RRRINS ;GET RRR INSTRUCTION STA INSEXE ;STORE IN PLACE TO EXECUTE JMP DOSH ;JUMP TO COMMON CODE RRRINS RRR 0 ;RRR INSTRUCTION END "Done." $PRINT CONSOLE