X-Git-Url: https://jxself.org/git/?p=pdp10-muddle.git;a=blobdiff_plain;f=%3Cmdl.comp%3E%2Fbits.mud.1;fp=%3Cmdl.comp%3E%2Fbits.mud.1;h=26c2b9e6ca6c9af31c2a5f923ee325d86dce9a5b;hp=0000000000000000000000000000000000000000;hb=3395a5e4ef72d59cdb6832af7808dc9c2cf2a413;hpb=363cc6ead5cf4df20759797fe46b5dc29b3886e9 diff --git a//bits.mud.1 b//bits.mud.1 new file mode 100644 index 0000000..26c2b9e --- /dev/null +++ b//bits.mud.1 @@ -0,0 +1,383 @@ + +"MUDDLE BITS,GETBITS,PUTBITS,ANDB,XORB,EQVB AND ORB COMPILER ROUTINES." + +) (POSN 0) POS WIDTH) + #DECL ((WIDTH POS NOD) NODE (K) ) + ) + (ELSE + '(1 2) BITS> + > FIX BITS> + >> + > FIX BITS> + > ;"May be position field.")> + ,QUOTE-CODE> + > ;"Only one arg." + <==? ,QUOTE-CODE>>> + + .POSN>> + ) + (ELSE )>)> + > + + + +> + + + +> + + + +) (NAM )) + #DECL ((NOD) NODE (COD) FIX (K) ) + ) + (ELSE + .NARG .NAM> + + + + ' + >) + (ELSE ')> + .NAM> + BITS .NAM> + 3> + ' .NAM>>)> + WORD) + (>>) + (ELSE ')> + .RTYP>> + +) (LN )) + #DECL ((NOD) NODE (K) (LN) FIX) + ) + (<0? .LN> + + + >>) + (<1? .LN> ) + (ELSE + + + >> + .K>)> + > + + + + + + + + + +) (REG ) (FST <1 .K>) + (INS >)) + #DECL ((FST N) NODE (K) (REG) DATUM) + ,QUOTE-CODE> + > + )> + .REG>> + .REG> + >) (ELSE WORD)>> + + ) TT) + #DECL ((NN) NODE (NXT) DATUM) + AC>) + (> AC> + > + + ) + (ELSE )> + > ,ACPROT T> + + T> + > + > + > + > + +>>> + + + +>) (BP <2 >) REG POS WDTH + BAC AC BPW WRD BPD TEM) + #DECL ((WRDN N BP) NODE (POS WDTH) FIX (WRD REG BPD) DATUM (AC BAC) AC + (BPW) ) + ,QUOTE-CODE> + > + > + FIX>> + FIX>> + 36> + + AC> + >>> + + <==? .AC >>>> + > + <- .POS>>>) + (ELSE + >>> .REG> + ,ACPROT + T> + ;"Could be half word hack." + + + !>> + T) + (<==? .POS 18> + + !>> + T)>>) + (ELSE + + [
+ !>]>>)> + > + )>) + (<==? ,BITS-CODE> + ) + (ELSE DONT-CARE)>>> + .WRD>>>> + >>> .REG> + ,ACPROT + T> + + > ,ACPROT T> + > + >> + >> + >> + > + > + + ) + (ELSE ;"Non constant byte pointer." + ) + (ELSE DONT-CARE)>>> + > + >>> .REG> + ,ACPROT + T> + >> + > ,ACPROT T> + + !>> + >> + > + > + + )> + > + +) (SWRD <1 .K>) (BP <2 .K>) BAC POS WDTH + FLD BPW BPD SWRDD (FLG T) TEM NUM) + #DECL ((N SWRD BP) NODE (FLD BPD REG SWRDD) DATUM (AC BAC PAC) AC + (POS WDTH) FIX (BPW) (NUM) ) + ,QUOTE-CODE> + > #BITS *360600000000*> FIX>> + FIX>> + ,QUOTE-CODE> + <0? FIX>>> + .W>>> + .SWRDD> + 36> + > + >>>)> + > .POS>>) + (ELSE + >) (ELSE TUPLE)> .W>>> + .SWRDD> + + + > >> + `HLLZS ) (ELSE `HLLOS )> + >>>) + (ELSE >)>) + (<==? .POS 18> + > >> + `HRRZS ) (ELSE `HRROS )> + >>>) + (ELSE >)> + T)>>) + ( 18>> > + > + >>>> + + `ANDCMI ) (ELSE `TLZ )>) + (ELSE + `IORI ) (ELSE `TLO )>)> + > + > + .POS) + (ELSE <- .POS 18>)>>>>) + (ELSE + >> + ,ACPROT T> + + ,ACPROT T> + > + [ + >>]>> + ,ACPROT <>> + ,ACPROT <>> + )>)>) + (ELSE + > ,SNODES>>> + >) (ELSE TUPLE)> + .W>>>)> + + ,BITS-CODE> + > + <1 + .SWRDD) + (ELSE ,NO-DATUM)>>>>) + (ELSE )>> + + > + >>) + (ELSE >>)> + + + > + >) (ELSE TUPLE)> + .W>>>)> + AC>> + >) (ELSE TUPLE)> + .W>>>)> + ,ACPROT T> + + ,ACPROT T> + + > ,ACPROT T> + + 1 >> + ()>)> + .SWRDD> + + >>>)> + > >> + > + ,ACPROT <>> + ,ACPROT <>> + + )> + > + +) + 2> 0) + (>> ,QUOTE-CODE> + <==? >> WORD> + >> 0> + > .NUM>>>)>> + +> + + ,ACPROT T> + > > + ,ACPROT <>> + > + +>> + +) (WDTHN <1 .K>) WDTH POS TEM + (REG ) POSD (FLG T)) + #DECL ((POS N WDTHN) NODE (REG WDTH POSD) DATUM (K) ) + 2> >)> + ,QUOTE-CODE> + >>) + (> + <==? ,QUOTE-CODE>> + + ) (ELSE 0)>>> + + >) + (ELSE + > + .REG> + > 24>> + + > 0>>> + >) + (ELSE )>)> + >> + ,ACPROT T> + > + > + > + > .TEM>> + >>) + (ELSE )> + ,ACPROT T> + > + [) + >>]>> + ,ACPROT <>> + ,ACPROT <>> + + AC> + .WDTH>)> + + [ .TEM]> + +>)) + #DECL ((CNST) FIX) + + [ >) HERE>]) + (ELSE + [ >) 0>])>> + \ No newline at end of file