Subject: Re: IPS Book posted From: James Miller Date: 5/27/2019, 4:12 PM To: Dennis Boone Dear Dennis, > Do you have any problem with my sharing this stuff with the community? No. Please go ahead. In the event of 'attribution' 'source' or whatever, it would be courteous to acknowledge that: "This work was originally carried out in the early 1980s by members of Amsat-DL, the radio amateur satellite organisation of Germany, then based in the University of Marburg. As the 1802 operating system 'IPS', it performed flawlessly in several amateur satellites for many years in space." With best wishes, James Miller Cambridge, UK 2019 May 27 (IPS-C, BAU DER SYSSEITE 26.6.86 ) #0400 $h !n 0 hier !O hier $OC dup 1 +n #FE l>>> ( ERST MAL LOESCHEN ) #046E $h !n ( STOPUHREN ) 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , #0480 $h !n ( EMULATOR ) BEGIN 7 LDA #C PLO 7 LDA #C PHI ( @PC -> HP ) #C LDA 3 PLO #C LDA 3 PHI ( @HP -> R3 ) BEGIN 3 ->P vert 1 EF END #08 LD IM 3 PHI #00 LD IM 3 PLO 00 END ( ENDE EMULATOR ) ( INTERRUPT-HANDLER, ANFANG #0493, EINSPRUNG: #0494 ) BEGIN RET ( INT ) RS DEC SAV RS DEC RS STR 8 GLO D=0 NOT Y? 9 ->X #C I/O RS ->X TH 9 INC RS LDA 0 END ( CODE ROUTINEN FUER CDP 1801, METAFORM FUER IPS-C ) #B00 $h !n ( VAREX ) hier $ccodes 2 +n !n #C GLO PS DEC PS STR #C GHI PS DEC PS STR NEXT ( CONSEX ) hier $ccodes 4 +n !n #C LDA PS DEC PS STR #C LDA PS DEC PS STR NEXT code $POLYNAME PS ->X PS INC PS LDA #E PLO PS INC PS LDA #F PLO SHL LD MX ADC MX PS DEC PS STR #E GLO XOR MX #E PLO PS INC PS LDA #F PHI SHL LD MX #E PHI ADC MX PS DEC PS STR PS INC #E GLO PS STR #F GLO XOR MX PS STR #F GHI SHR #F GLO ROR #F PLO XOR MX PS STR #F GLO SHR XOR MX PS STR #E GHI SHL LD MX ADC MX STXD PS DEC PS DEC NEXT code 2BLITERAL PS DEC 7 LDA PS STR PS DEC 7 LDA PS STR NEXT code 1BLITERAL PS DEC 7 LDA hier PS STR PS DEC 0 LD IM PS STR NEXT code @B PS LDA #C PHI PS ->X LD MX #C PLO ( ADR IN RC ) #C LDA 0 END code @ PS LDA #C PHI PS ->X LD MX #C PLO ( ADR IN RC ) #C LDA STXD #C LDA PS STR NEXT code ! PS LDA #C PHI PS LDA #C PLO ( ADR IN RC ) PS LDA #C INC #C STR #C DEC PS LDA #C STR NEXT code !B PS LDA #C PHI PS LDA #C PLO ( ADR IN RC ) PS INC PS LDA #C STR NEXT code BRONZ PS INC PS LDA SHR DF Y? 7 INC 7 INC NEXT TH hier 7 LDA #C PLO 7 LDA 7 PHI #C GLO 7 PLO NEXT rcode JUMP code RETEX 2 LDA 7 PHI 2 LDA 7 PLO NEXT code $TUE 6 DEC 6 DEC 6 DEC 6 DEC 6 DEC PS LDA #C PHI PS LDA #C PLO NEXT code CHS PS INC PS ->X 0 LD IM D- MX STXD 0 LD IM DC- MX PS STR NEXT code LOOPEX 2 ->X 2 LDA #E PHI 2 LDA #E PLO #E INC ( INDEX ) hier ( LC ) 2 LDA #F PLO #E GLO -D MX #F GLO 2 DEC 2 STR #E GHI -DC MX #80 AND IM D=0 Y? ( LOOP ) 7 LDA #C PLO 7 LDA 7 PHI #C GLO 7 PLO #E GLO 2 DEC STXD #E GHI 2 STR NEXT TH (END) 7 INC 7 INC 2 INC 2 INC NEXT code +LOOPEX 2 ->X PS LDA ADD MX #E PHI 2 INC PS LDA ADD MX #E PLO 2 INC dup DF END ( LC BEI DF NICHT ) #E GHI 1 ADD IM #E PHI dup 0 END code $JEEX 2 ->X PS LDA #C PLO PS LDA 2 DEC STXD #C GLO 2 STR PS LDA #E PHI PS LDA #E PLO 7 LDA #C PLO 7 LDA 7 PHI #C GLO 7 PLO 0 END code DUP PS LDA #C PLO PS ->X LD MX PS DEC PS DEC STXD #C GLO PS STR NEXT code ZWO PS INC PS INC PS LDA #C PLO PS ->X LD MX PS DEC PS DEC PS DEC PS DEC STXD #C GLO PS STR NEXT code WEG PS INC PS INC NEXT code VERT PS LDA #F PHI PS LDA #F PLO PS LDA #E PHI PS ->X LD MX #E PLO #F GLO STXD #F GHI STXD #E GLO STXD #E GHI PS STR NEXT code RDU PS GLO #D PLO PS GHI #D PHI #D LDA #E PHI #D LDA #E PLO 4 LD IM #C PLO BEGIN #D LDA PS STR PS INC #C DEC #C GLO D=0 END #E GLO #D DEC #D STR #E GHI PS STR PS DEC PS DEC PS DEC PS DEC NEXT code R>S 2 LDA #C PLO 2 LDA PS DEC PS STR PS DEC #C GLO PS STR NEXT code S>R PS LDA #C PLO PS LDA 2 DEC 2 STR #C GLO 2 DEC 2 STR NEXT code I 2 GLO #D PLO 2 GHI #D PHI #D LDA #C PLO #D LDA PS DEC PS STR #C GLO PS DEC PS STR NEXT code =0 PS LDA PS ->X OR MX D=0 Y? hier 1 LD IM vert N: hier 0 LD IM vert TH hier STXD SHR PS STR NEXT code <0 PS ->X PS LDA #80 AND IM dup D=0 NOT END rdu vert dup rdu 0 END code >0 PS ->X PS LDA #C PLO #80 AND IM D=0 END #C GLO OR MX D=0 END 0 END code NICHT PS ->X #FF LD IM XOR MX PS STR PS INC #FF LD IM XOR MX STXD NEXT code UND PS ->X PS LDA #C PLO PS LDA PS INC AND MX STXD #C GLO AND MX PS STR NEXT code ODER PS ->X PS LDA #C PLO PS LDA PS INC OR MX STXD #C GLO OR MX PS STR NEXT code EXO PS ->X PS LDA #C PLO PS LDA PS INC XOR MX STXD #C GLO XOR MX PS STR NEXT code SBIT PS LDA #D PHI PS LDA #D PLO #D ->X PS INC PS LDA #07 AND IM #B8 ADD IM #A PLO #A LDA OR MX #D STR NEXT code CBIT PS LDA #D PHI PS LDA #D PLO #D ->X PS INC PS LDA #07 AND IM #B8 ADD IM #A PLO #A LDA #FF XOR IM AND MX #D STR NEXT code >>> PS INC PS LDA #C PLO PS LDA #F PHI PS LDA #F PLO PS LDA #E PHI PS LDA #E PLO BEGIN #E LDA #F STR #F INC #C DEC #C GLO D=0 END NEXT code DIN-ENABLE #1 LD IM #8 PLO SHR #8 PHI (C-FLAG=0) NEXT code PWEG PS INC PS INC PS INC PS INC NEXT code F-VERGL PS INC PS LDA #C PLO PS LDA #F PHI PS LDA #F PLO PS LDA #E PHI PS LDA #E PLO #F ->X PS DEC 1 LD IM PS STR BEGIN #E LDA D- MX #F INC D=0 NOT Y? 0 LD IM DF Y? 2 LD IM TH PS STR TH #C DEC #C GLO D=0 END PS DEC PS STR NEXT code + PS ->X PS LDA #C PLO PS LDA PS INC ADD MX STXD #C GLO ADC MX PS STR NEXT code - PS ->X PS LDA #C PLO PS LDA PS INC -D MX STXD #C GLO -DC MX PS STR NEXT code P* PS ->X PS LDA #F PHI PS LDA #F PLO PS LDA #E PHI LD MX #E PLO 4 LD IM #C PLO BEGIN 0 LD IM STXD #C DEC #C GLO D=0 END PS INC 16 LD IM #C PLO BEGIN PS INC PS INC PS INC LD MX SHL STXD LD MX ROL STXD LD MX ROL STXD LD MX ROL PS STR #E GHI ROL #E PHI DF Y? PS INC PS INC PS INC #F GLO ADD MX STXD #F GHI ADC MX STXD DF Y? LD MX 1 ADD IM PS STR TH PS DEC DF Y? LD MX 1 ADD IM PS STR TH TH #C DEC #C GLO 8 XOR IM D=0 Y? #E GLO #E PHI TH #C GLO D=0 END NEXT code P/MOD PS ->X 17 LD IM #C PLO #A GHI #C PHI ( C3=0 ) PS LDA #F PHI PS LDA #F PLO BEGIN #F GLO PS INC -D MX #E PLO PS DEC #F GHI -DC MX #E PHI DF NOT Y? #C GHI SHR TH DF Y? #E GHI PS STR PS INC #E GLO PS STR SKP TH PS INC PS INC PS INC LD MX ROL STXD LD MX ROL STXD #C DEC #C GLO D=0 Y? DF Y? #FF LD IM PS INC PS INC STXD STXD STXD PS STR NEXT TH PS DEC NEXT TH LD MX ROL STXD LD MX ROL PS STR ROL #C PHI 0 END code $PSSETZEN PS LDA #C PLO PS LDA PS PLO #C GLO PS PHI NEXT code $PSHOLEN PS GHI #C PLO PS GLO PS DEC PS STR #C GLO PS DEC PS STR NEXT hier 1 -n rcode RUMPELSTILZCHEN ( DEFEX ) hier $ccodes !n 7 GLO 2 DEC 2 STR 7 GHI 2 DEC 2 STR #C GLO 7 PLO #C GHI 7 PHI NEXT ( ENDE CODE-ROUTINEN FUER IPS-C ) 0 kon 0 1 kon 1 2 kon 2 4 kon 4 ( UMSTELLUNG DER EINTRAGSERZEUGER ) 'n 2BLITERAL 'n 1BLITERAL 'n BRONZ 'n JUMP 'n $JEEX 'n LOOPEX 'n +LOOPEX 'n RETEX $ccodes 6 +n 8 !fk ( ENDE DER UMSTELLUNG ) ( DEFINITIONEN UNTEN ) :n > - >0 ;n :n <> - =0 NICHT ;n :n = - =0 ;n :n >= - <0 NICHT ;n :n < - <0 ;n :n <= - >0 NICHT ;n :n RDO RDU RDU ;n :n PDUP ZWO ZWO ;n :n * P* WEG ;n :n P/ P/MOD WEG ;n :n /MOD 0 VERT P/MOD ;n :n / /MOD WEG ;n :n INCR DUP @ 1 + VERT ! ;n :n MOD /MOD VERT WEG ;n