; > Super2
CACHE BL SPACES
 CMP R5,#13
 BEQ CACHELIST
 CMP R5,#" "
 BCC CACHEMSG
 SUB R10,R4,#1 ;start of file name
CACHE1 LDRB R5,[R4],#1
 CMP R5,#" "
 BHI CACHE1
 BL SPACES
 CMP R5,#" "
 BCC CACHEMSG
 SUB R8,R4,#1 ;name to use
CACHE2 LDRB R5,[R4],#1
 CMP R5,#" "
 BHI CACHE2
 MOV R9,R4 ;end of name to use
 BL SPACE2
 CMP R5,#LF
 CMPNE R5,#CR
 BNE CACHEMSG
 MOV R5,R8
 BL CACHESEARCH
 BNE CACHEMSG4
 MOV R1,R10
 MOV R10,#0
 LDR R11,[R10,#MEMLIMIT]
 LDR R12,[R10,#RAMLIMIT]
 LDRB R13,[R10,#BUFFLAG]
 CMP R13,#1
 ADDEQ R11,R11,#20*1024
 CMP R11,R12
 BNE CACHEMSG1
 MOV R0,#5
 SWI FILE
 CMP R0,#1
 BNE CACHEMSG2
 MOV R0,#&FF
 SUB R2,R12,R4 ;end - size
 BIC R2,R2,#3 ;word address of start
 CMP R2,#&10000
 BLO CACHEMSG3
 MOV R14,R2
 MOV R3,#0
 SWI FILE
 CMN R2,#256
 BCC CACHENOTDATE
 SWI WRITES
 = "File is date stamped: &1000 will be used",10,13
 MOV R2,#&1000
 MOV R3,#&1000
CACHENOTDATE MOV R0,#0
 MOV R1,R14
CACHESUM LDR R5,[R1],#4
 ADD R0,R0,R5
 CMP R1,R12
 BCC CACHESUM
 RSB R0,R0,#0
 STR R0,[R14,#-4] ;checksum
 STR R2,[R14,#-8] ;load address
 STR R3,[R14,#-12] ;exec address
 STR R4,[R14,#-16]! ;length
 SUB R0,R9,R8
 SUB R14,R14,R0
 BIC R14,R14,#3
 MOV R6,R14
CACHENAME LDRB R5,[R8],#1
 CMP R5,#"a"
 BICCS R5,R5,#" "
 STRB R5,[R6],#1
 CMP R5,#" "
 BHI CACHENAME
 STRB R10,[R6,#-1]
 LDR R5,[R10,#CACHENAMES]
 STR R5,[R14,#-4]!
 STR R14,[R10,#CACHENAMES]
CACHETIDY STR R14,[R10,#RAMLIMIT] ;enter with r14=ramlimit, r13=buffflag
 CMP R13,#1
 SUBEQ R14,R14,#20*1024
 STR R14,[R10,#MEMLIMIT]
 BNE CACHENOCLEAR
 MOV R10,R14
 MOV R0,#0
 ADD R13,R14,#20*1024
CACHECLEAR STR R0,[R14],#4
 CMP R14,R13
 BCC CACHECLEAR
CACHENOCLEAR SWI WRITES
 = "Memory limit now &",0
 MOV R10,R14
 BL WORDHX
 SWI NEWLINE
 B CLILOP
CACHEMSG SWI WRITES
 = "Cache <filename> <name to use when looking it up>",10,13,0
 B CLILOP
CACHEMSG1 SWI WRITES
 = "Cache can only be used from supervisor: all memory must be free.",10,13,0
 B CLILOP
CACHEMSG2 SWI WRITES
 = "Cache <filename> not found",10,13,0
 B CLILOP
CACHEMSG3 SWI WRITES
 = "Not enough space to cache this",10,13,0
 B CLILOP
CACHEMSG4 SWI WRITES
 = "Name already used in cache",10,13,0
 B CLILOP
CACHELIST MOV R10,#0
 LDR R9,[R10,#CACHENAMES]
 TEQ R9,#0
 BEQ CACHELISTX
 SWI WRITES
 = "The following programs are cached:",10,13,0
CACHELIST1 ADD R0,R9,#4
 MOV R1,R0
 SWI WRITE0
 SUB R1,R0,R1
CACHELIST2 SWI WRITEI+" "
 ADD R1,R1,#1
 CMP R1,#21
 BCC CACHELIST2
 ADD R0,R0,#3
 BIC R1,R0,#3
 LDR R10,[R1,#8]
 BL WORDHX
 SWI WRITEI+" "
 SWI WRITEI+" "
 LDR R10,[R1,#4]
 BL WORDHX
 SWI WRITEI+" "
 SWI WRITEI+" "
 LDR R10,[R1]
 BL WORDHX
 SWI NEWLINE
 LDR R9,[R9]
 TEQ R9,#0
 BNE CACHELIST1
 B CLILOP
CACHELISTX SWI WRITES
 = "There are no programs cached",10,13,0
 B CLILOP
UNCACHE MOV R10,#0
 LDR R9,[R10,#CACHENAMES]
 TEQ R9,#0
 BEQ CACHELISTX
 LDRB R13,[R10,#BUFFLAG]
 BL SPACES
 CMP R5,#13
 BEQ UNCACHEALL
 SUB R5,R4,#1
 BL CACHESEARCH
 BEQ UNCACHEERR1

 SWI WRITES
 = "Sorry, can't uncache specific programs yet",10,13,0
 B CLILOP
UNCACHEERR1 SWI WRITES
 = "Not in cache",10,13,0
 B CLILOP
UNCACHEALL SWI WRITES
 = "UnCache all programs? [Y/<anything>]",0
 SWI READC
 SWI NEWLINE
 TEQ R0,#"Y"
 TEQNE R0,#"y"
 BNE CLILOP
UNCACHEALL1 LDR R8,[R9]
 TEQ R8,#0
 MOVNE R9,R8
 BNE UNCACHEALL1
 ADD R9,R9,#4
UNCACHEALL2 LDRB R0,[R9],#1
 TEQ R0,#0
 BNE UNCACHEALL2
 ADD R9,R9,#3
 BIC R9,R9,#3
 LDR R0,[R9],#16
 ADD R14,R0,R9
 STR R10,[R10,#CACHENAMES]
 B CACHETIDY
;returns address of entry (NE status) or zero (EQ status) in r0.
;source string in R5
; uses r0,r1,r2,r3,r4
CACHESEARCH MOV R0,#CACHENAMES:AND:255
 ADD R0,R0,#CACHENAMES:AND::NOT:255
CACHESRCH1 LDR R0,[R0]
 TEQ R0,#0
 MOVEQ PC,R14
 ADD R1,R0,#4
 MOV R3,R5
CACHESRCH2 LDRB R2,[R1],#1
 LDRB R4,[R3],#1
 CMP R4,#"a"
 BICCS R4,R4,#" "
 CMP R2,R4
 BEQ CACHESRCH2
 CMP R2,#0
 BNE CACHESRCH1
 CMP R4,#" "
 BHI CACHESRCH1
 ADD R1,R1,#3
 BICS R0,R1,#3 ;ne status
 MOV PC,R14
DISASS BL SPACES
 BL RDINIT
 TEQ R8,#1
 BNE CLIS
 BIC R11,R7,#3
 TEQ R5,#" "
 BLEQ SPACES
 TEQ R5,#"+"
 BNE DISI2
 BL SPACES
 BL RDINIT
 CMP R8,#1
 ADDEQ R12,R11,R7
 B DISI3
DISI2 BL RDINIT
 CMP R8,#1
 MOV R12,R7
DISI3 ADDNE R12,R11,#23*4+1
 BL CHKEN2
DISP1 MOV R10,R11
 BL WORDHX
 SWI WRITES
 = " : ",0
 LDR R10,[R11],#4
 BL WORDHX
 SWI WRITES
 = "   ",0
 MOV R1,R10,LSR #28
 MOV R2,R10,LSR #24
 MOV R3,R10,LSR #21
 BIC R10,R10,#&FF000000
 AND R2,R2,#15
 TEQ R2,#15
 BEQ DISSWI
 CMP R2,#&0C
 BCS DISCOP
 CMP R2,#&A
 BEQ DISB
 BCS DISBL
 MOV R5,R10,LSR #12
 CMP R2,#8
 BCS DISLDM
 CMP R2,#4
 BCS DISDXF
 AND R3,R3,#15
 ADR R4,OPCTAB
 ADD R4,R4,R3,LSL #1
 ADD R4,R4,R3
 LDRB R0,[R4],#1
 SWI WRITEC
 LDRB R0,[R4],#1
 SWI WRITEC
 LDRB R0,[R4],#1
 SWI WRITEC
 BL DISCND
 CMP R3,#8
 BCC DISOP1
 CMP R3,#12
 BCS DISOP1
 AND R5,R5,#15
 TEQ R5,#15
 SWIEQ WRITEI+"P"
 BL DISTAB
 B DISOP2
DISOP1 TST R10,#&100000
 SWINE WRITEI+"S"
 BL DISTAB
 BL DISREG
 SWI WRITEI+","
 TEQ R3,#13
 TEQNE R3,#15
 BEQ DISOP3
DISOP2 MOV R5,R10,LSR #16
 BL DISREG
 SWI WRITEI+","
DISOP3 CMP R2,#2
 BCS DISOPI
 MOV R5,R10
 BL DISSHF
 B DISEND
DISOPI SWI WRITEI+"#"
 AND R8,R10,#255
 MOV R0,R10,LSR #7
 AND R0,R0,#30
 MOV R8,R8,ROR R0
 MOV R0,R8
 CMP R0,#10
 BCC DISWI1
 SWI WRITEI+"&"
 MOV R10,R8
 MOV R2,#8-4
 CMP R8,#256
 ADDCS R2,R2,#8
 CMP R8,#65536
 ADDCS R2,R2,#16
 BL WORDLP
 MOV R0,R8
 CMP R8,#8192
 BCS DISEND
 SWI WRITES
 = " ;=",0
 B DISWI1
OPCTAB = "ANDEORSUBRSBADDADCSBCRSCTSTTEQCMPCMNORRMOVBICMVN"
DISDXF TST R10,#&100000
 BEQ DISSTR
 SWI WRITES
 = "LDR",0
 B DISDX2
DISSTR SWI WRITES
 = "STR",0
DISDX2 BL DISCND
 TST R10,#&400000
 SWINE WRITEI+"B"
 BL DISTAB
 BL DISREG
 MOV R8,#&1000
 SUB R8,R8,#1
 AND R8,R8,R10
DISDX2OFF SWI WRITES
 = ",[",0
 MOV R5,R10,LSR #16
 BL DISREG
 TST R2,#1
 SWIEQ WRITEI+"]"
 SWI WRITEI+","
 CMP R2,#6
 BCS DISDX3
 SWI WRITEI+"#"
 TST R10,#&800000
 SWIEQ WRITEI+"-"
 BL PRTNUM
DISDX4 TST R2,#1
 SWINE WRITEI+"]"
 TST R10,#&200000
 SWINE WRITEI+"!"
 B DISEND
DISDX3 TST R10,#&800000
 SWIEQ WRITEI+"-"
 MOV R5,R10
 BL DISSHF
 B DISDX4
DISLDM TST R10,#&100000
 BEQ DISSTM
 SWI WRITES
 = "LDM",0
 B DISMUL
DISSTM SWI WRITES
 = "STM",0
DISMUL BL DISCND
 TST R10,#&800000
 SWIEQ WRITEI+"D"
 SWINE WRITEI+"I"
 TST R2,#1
 SWIEQ WRITEI+"A"
 SWINE WRITEI+"B"
 BL DISTAB
 MOV R5,R10,LSR #16
 BL DISREG
 TST R10,#&200000
 SWINE WRITEI+"!"
 SWI WRITES
 = ",{",0
 MOV R5,#0
 MOV R8,#0
DISML1 ADD R0,R5,#1
 TST R0,R10,LSR R0
 BCC DISML2
 TEQ R8,#0
 MOV R8,#1
 SWINE WRITEI+","
 BL DISREG
DISML2 ADD R5,R5,#1
 CMP R5,#16
 BNE DISML1
 SWI WRITEI+"}"
 TST R10,#&400000
 SWINE WRITEI+"^"
 B DISEND
DISBL SWI WRITES
 = "BL",0
 B DISB1
DISB SWI WRITEI+"B"
DISB1 BL DISCND
 BL DISTAB
 ADD R10,R11,R10,LSL #2
 ADD R10,R10,#4
 BIC R10,R10,#&FC000003
 SWI WRITEI+"&"
 BL WORDHX
 B DISEND
DISCOP MOV R5,R10,LSR #12
 MOV R0,R10,LSR #8
 AND R0,R0,#15
 TEQ R0,#1
 BEQ DISCF
 CMP R0,#10
 ADDCS R0,R0,#"A"-("9"+1)
 ADD R0,R0,#"0"
 SWI WRITEC ;print coprocessor number
 SWI WRITEI+"-"
 CMP R2,#14
 BCS DISCPREG
 TST R10,#&100000
 SWINE WRITEI+"L"
 SWINE WRITEI+"D"
 SWIEQ WRITEI+"S"
 SWIEQ WRITEI+"T"
 BL DISCND
 TST R10,#&400000
 SWINE WRITEI+"L"
 BL DISTAB
 BL DISCREG
DISCLD AND R8,R10,#255
 MOV R8,R8,LSL #2
 AND R2,R2,#3
 B DISDX2OFF
DISCPREG TST R10,#&10
 BNE DISCPREGT
 SWI WRITES
 = "OP",0
 BL DISCND
 BL DISTAB
 BL DISCREG
 B DISEND
DISCPREGT SWI WRITEI+"T"
 TST R10,#&100000
 SWINE WRITEI+"L"
 SWIEQ WRITEI+"S"
 BL DISCND
 BL DISTAB
 BL DISREG
 B DISEND
DISCF CMP R2,#14
 BCS DISCFREG
 TST R10,#&100000
 SWINE WRITEI+"L"
 SWINE WRITEI+"D"
 SWIEQ WRITEI+"S"
 SWIEQ WRITEI+"T"
 SWI WRITEI+"F"
 BL DISCND
 TST R10,#&400000
 SWINE WRITEI+"D"
 SWIEQ WRITEI+"S"
 BL DISTAB
 BL DISFREG
 B DISCLD
DISCFREG MOV R3,R10,LSR #4
 AND R3,R3,#15
 MOV R6,R10,LSR #20
 AND R6,R6,#15
 CMP R3,#1
 BEQ DISCFMOV
 CMP R3,#3
 BEQ DISCFCMP
 TST R3,#0
 BNE DISUNK
;arithmetic
 ADR R4,DISCFALUTAB
 ADD R3,R3,R6,LSL #4
 AND R3,R3,#&3F
 ADD R4,R4,R3
 ADD R4,R4,R3,LSR #1
 LDRB R0,[R4],#1
 SWI WRITEC
 LDRB R0,[R4],#1
 SWI WRITEC
 LDRB R0,[R4],#1
 SWI WRITEC
 BL DISCND
 TST R10,#&400000
 SWIEQ WRITEI+"S"
 SWINE WRITEI+"D"
 BL DISTAB
 BL DISFREG
 CMP R3,#16*2
 BCS DISCFCONST
 SWI WRITEI+","
 MOV R5,R10,LSR #16
 BL DISFREG
 B DISCFCONST
DISCFALUTAB = "ADFSUFRSFASF"
 = "POWRPW??????"
 = "MUFDIFRDF???"
 = "????????????"
 = "CVTABSSQTMVF"
 = "SINCOSTANASN"
 = "MNFLOGLGNEXP"
 = "ACSATN??????"
DISCFMOV ADR R4,DISCFMOVTAB
 ADD R4,R4,R6,LSL #2
 LDRB R0,[R4],#1
 SWI WRITEC
 LDRB R0,[R4],#1
 SWI WRITEC
 LDRB R0,[R4],#1
 SWI WRITEC
 BL DISCND
 LDRB R0,[R4],#1
 SWI WRITEC
 CMP R6,#12
 BCC DISCFMOV2
 CMP R6,#14
 SWICS WRITEI+"2"
 SWICC WRITEI+"1"
DISCFMOV2 BL DISTAB
 TST R6,#1
 BEQ DISCFMOV1
 BL DISREG
 SWI WRITEI+","
 MOV R5,R10,LSR #16
 BL DISFREG
 B DISEND
DISCFMOV1 MOV R5,R10,LSR #16
 BL DISFREG
 SWI WRITEI+","
 MOV R5,R10,LSR #12
 BL DISREG
 B DISEND
DISCFMOVTAB = "FLTSFIXS????TRNSFLTDFIXD????TRNDMVFSMVFSMVFSMVFSMVFDMVFDMVFDMVFD"
DISCFCMP TST R10,#&100000
 BEQ DISUNK
 AND R5,R5,#15
 CMP R5,#15
 BNE DISUNK
 TST R10,#&200000
 SWI WRITEI+"C"
 SWIEQ WRITEI+"M"
 SWINE WRITEI+"N"
 SWI WRITEI+"F"
 BL DISCND
 TST R10,#&400000
 SWIEQ WRITEI+"S"
 SWINE WRITEI+"D"
 BL DISTAB
 MOV R5,R10,LSR #16
 BL DISFREG
DISCFCONST SWI WRITEI+","
 TST R10,#&800000
 BNE DISCFCONST1
 AND R5,R10,#15
 BL DISFREG
 B DISEND
DISCFCONST1 SWI WRITEI+"#"
 AND R8,R10,#15
 BL PRTNUM
 SWI WRITES
 = ".0",0
 B DISEND
DISUNK SWI WRITES
 = "Unknown (",0
 BL DISCND
 SWI WRITEI+")"
 B DISEND
DISSWI SWI WRITES
 = "SWI",0
 BL DISCND
 BL DISTAB
 CMP R10,#256
 BCS DISSW1
 ADR R1,SWITAB
 ADD R1,R1,R10,LSL #3
 MOV R2,#8
DISSW0 LDRB R0,[R1],#1
 TEQ R0,#" "
 BEQ DISEND
 SWI WRITEC
 SUBS R2,R2,#1
 BNE DISSW0
 B DISEND
SWITAB = "WriteC  "
 = "WriteS  "
 = "Write0  "
 = "NewLine "
 = "ReadC   "
 = "CLI     "
 = "Byte    "
 = "Word    "
 = "File    "
 = "Args    "
 = "BGet    "
 = "BPut    "
 = "Multiple"
 = "Open    "
 = "ReadLine"
 = "Control "
 = "GetEnv  "
 = "Exit    "
 = "SetEnv  "
 = "IntOn   "
 = "IntOff  "
 = "CallBack"
 = "EnterOS "
 = "BreakPT "
 = "BreakCT "
 = "UnUsed  "
 = "SetMEMC "
 = "SetCallB"
 = "Mouse   "
DISSW1 SWI WRITES
 = "WriteI+"
 AND R0,R10,#255
DISWI1 CMP R0,#32
 BCC DISSW2
 CMP R0,#127
 BCS DISSW2
 SWI WRITEI+""""
 SWI WRITEC
 SWI WRITEI+""""
 B DISEND
DISSW2 MOV R8,R0
 BL PRTNUM
DISEND SWI NEWLINE
 CMP R11,R12
 BCC DISP1
 TST R12,#1
 BEQ CLILOP
 ADD R12,R12,#24*4
 SWI WRITES
 = "Any key continue, Return finish",0
 SWI READC
 BCS ESCAPE
 TEQ R0,#13
 SWIEQ NEWLINE
 BEQ CLILOP
 SWI WRITEI+13
 B DISP1
SHFTAB = ",LSL ",0,",LSR ",0,",ASR ",0,",ROR ",0
DISSHF MOV R4,R5,LSR #4
 ANDS R4,R4,#255
 BEQ DISREG
 MOV R1,R14
 BL DISREG
 MOV R14,R1
 TEQ R4,#6
 BEQ DISSF2
 AND R1,R4,#6
 ADR R0,SHFTAB
 ADD R0,R0,R1,LSL #1
 ADD R0,R0,R1
 SWI WRITE0
 TST R4,#1
 BNE DISSF1
 SWI WRITEI+"#"
 MOV R8,R4,LSR #3
 B PRTNUM
DISSF2 SWI WRITES
 = ",RRX",0
 MOV PC,R14
DISFREG AND R5,R5,#15
 SWI WRITEI+"F"
 CMP R5,#8
 BCC DISREGA
 CMP R5,#15
 SWIEQ WRITEI+"S"
 SWIEQ WRITEI+"W"
 SWINE WRITEI+"?"
 SWINE WRITEI+"?"
 MOV PC,R14
DISCREG AND R5,R5,#15
 SWI WRITEI+"C"
 B DISREGA
DISSF1 MOV R5,R4,LSR #4
DISREG AND R5,R5,#15
 TEQ R5,#15
 BEQ DISR15
 SWI WRITEI+"R"
DISREGA ADD R0,R5,#"0"
 CMP R5,#10
 SUBCS R0,R0,#10
 SWICS WRITEI+"1"
 SWI WRITEC
 SWICC WRITEI+" "
 MOV PC,R14
DISR15 SWI WRITES
 = "PC ",0
 MOV PC,R14
DISTAB MOV R7,R2
 SWI WRITEI+" "
 MOV R0,#&86
 SWI BYTE
 MOV R2,R7
 CMP R1,#20
 MOVCC PC,R14
 CMP R1,#8+3+8+3+8
 BCC DISTAB
 MOV PC,R14
DISCND ADR R0,CNDTAB
 ADD R1,R0,R1,LSL #1
 LDRB R0,[R1],#1
 TEQ R0,#0
 MOVEQ PC,R14
 SWI WRITEC
 LDRB R0,[R1],#1
 SWI WRITEC
 MOV PC,R14
CNDTAB = "EQNECSCCMIPLVSVCHILSGELTGTLE",0,0,"NV"
RDINIT MOV R7,#0
 MOV R8,#0
;read hex to R7, validity R8
RDHEX TEQ R5,#"R"
 TEQNE R5,#"r"
 BEQ RDREG
 TEQ R5,#"P"
 TEQNE R5,#"p"
 BEQ RDPC
 CMP R5,#"0"
 MOVCC PC,R14
 CMP R5,#"9"
 SUBLS R5,R5,#"0"
 BLS RDHEX1
 CMP R5,#"A"
 MOVCC PC,R14
 CMP R5,#"F"
 BLS RDHEX2
 CMP R5,#"a"
 MOVCC PC,R14
 CMP R5,#"f"
 MOVHI PC,R14
 SUB R5,R5,#"a"-"A"
RDHEX2 SUB R5,R5,#"A"-10
RDHEX1 ADD R7,R5,R7,LSL #4
 LDRB R5,[R4],#1
 MOV R8,#1
 B RDHEX
RDREG LDRB R5,[R4],#1
 CMP R5,#"9"
 MOVHI PC,R14
 SUBS R7,R5,#"0"
 MOVCC PC,R14
 LDRB R5,[R4],#1
 TEQ R7,#1
 BNE RDREG1
 CMP R5,#"0"
 BCC RDREG1
 CMP R5,#"9"
 BHI RDREG1
 CMP R5,#"5"
 MOVHI PC,R14
 SUB R7,R5,#"0"-10
 LDRB R5,[R4],#1
RDREG1 MOV R8,#BUFFER+64
 LDR R7,[R8,R7,LSL #2]
RDREG2 BIC R7,R7,#&FC000003
 MOV R8,#1
 MOV PC,R14
RDPC LDRB R5,[R4],#1
 TEQ R5,#"C"
 TEQNE R5,#"c"
 MOVNE PC,R14
 LDRB R5,[R4],#1
 MOV R8,#BUFFER+64
 LDR R7,[R8,#15*4]
 SUB R7,R7,#8
 B RDREG2
CHKEND LDRB R5,[R4],#1
CHKEN2 TEQ R5,#" "
 BEQ CHKEND
 TEQ R5,#13
 BNE CLIS
 MOV PC,R14
SPACES LDRB R5,[R4],#1
SPACE2 TEQ R5,#" "
 BEQ SPACES
 MOV PC,R14
MOVNAM TEQ R5,#"@"
 MOVEQ R5,#" "
 STRB R5,[R6],#1
 LDRB R5,[R4],#1
 CMP R5,#" "
 BHI MOVNAM
 MOV R7,#0
 STRB R7,[R6],#1
 MOV PC,R14
PATOUT BIC R2,R14,#&FC000003
 BL PATA
 BL PATA
 BL PATA
 BL PATA
 BL PATA
 BL PATA
 SWI WRITES
 = 23,255,255,255,255,255,255,255,255,255,0
 MOV PC,R2
PATA LDR R0,[R2],#4
 SWI WRITEI+23
 SWI WRITEI+255
 SWI WRITEC
 MOV R0,R0,ROR #8
 SWI WRITEC
 MOV R0,R0,ROR #8
 SWI WRITEC
 MOV R0,R0,ROR #8
 SWI WRITEC
 LDR R0,[R2],#4
 SWI WRITEC
 MOV R0,R0,ROR #8
 SWI WRITEC
 MOV R0,R0,ROR #8
 SWI WRITEC
 MOV R0,R0,ROR #8
 SWI WRITEC
 SWI WRITEI+255
 MOV PC,R14
ZEEND
 END
