1 eÿaar.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0ÿ
\0.define aar
8 !R1 contains description address
9 !R3 contains element number
10 !base address is on stack
19 \0blm.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0Ý
\ 1.define blm
32 pop R3, *RR14 !RR2: dst address
33 pop R5, *RR14 !RR4: src address
37 !now avoid wrong copy in case the pieces overlap
47 2: ldm R4, savereg, $10
50 \0cii.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0¦
\ 1.define cii
61 sub R2, R1 !expansion in bytes
63 sra R2 !expansion in words > 0
65 pop R1, *RR14 !expand 1 --> 2
77 4: pushl *RR14, saveret
79 cmi.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0Ø
\0.define cmi
98 cmi4.s
\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0î
\0.define cmi4
118 cms.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\05
\ 1.define cms
142 1cmu.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0\17\ 1.define cmu
167 1cmu4.s
\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0î
\0.define cmu4
187 csa.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0<
\ 1.define csa
194 !R1 contains address of jump table
195 !R2 contains case index
209 2: push *RR14, $ECASE
211 csb.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0\85\ 1.define csb
218 !R1 contains address of jump table
219 !R2 contains case index
221 ld R3, 0(R1) !default pointer
222 ld R0, 2(R1) !number of entries
229 1: ld R1, R3 !default pointer
235 5: push *RR14, $ECASE
237 cuu.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0\11\ 1.define cuu
248 sub R0, R1 !expansion in bytes
250 sra R0 !expansion in words
257 dup.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0Ï
\0.define dup
274 2dvu2.s
\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0ÿ
\0.define dvu2
289 2: pushl *RR14, saveret
296 dvu4.s
\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\08
\ 1.define dvu4
317 2: ldm R4, savereg, $10
320 exg.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0\1c\ 1.define exg
343 gto.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0\91\0.define gto
356 inn.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0\95\ 1.define inn
369 div RR0, $020 !R0: bitnr, R1: wordnr
371 jr UGE, 1f !R1 must be < R2
372 inc R1, $2 !R1 contains nr of words from top stack
384 1lar.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0Ç
\ 1.define lar
391 !R1 contains description address
392 !R3 contains element number
393 !base address is on stack
397 ld R0, 4(R1) !nr of bytes per element
401 sra R0 !nr of words per element
412 llos2.s
\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0Z
\ 1.define los2
421 pop R0, *RR14 !object size
423 pop R3, *RR14 !address of object
435 2: pushl *RR14, saveret
437 noop.s
\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0¥
\0.define noop
450 fmt: .asciz "test %d\n"
451 oprf.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0\85\ 2.define prf
459 ld R0, hol0+4 !pointer to filename
464 3: !test filename on bad characters
481 popl saveprf, *RR14 !return address
482 calr printf !because of call from 'noop'
488 fmt1: .asciz "%s, sp = %x, line %d:\n"
489 name: .asciz "_unknown file_"
492 \0rck.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0·
\0.define rck
505 1: push *RR14, $ERANGE
508 armu2.s
\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0\ 2\ 1.define rmu2
523 2: pushl *RR14, saveret
530 rmu4.s
\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0?
\ 1.define rmu4
551 2: ldm R4, savereg, $10
554 2sar.s
\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0¡
\ 1.define sar
561 !R1 contains description address
562 !R3 contains element number
563 !base address is on stack
567 ld R0, 4(R1) !nr of bytes per element
571 sra R0 !nr of words per element
579 osigtrp.s
\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0:
\0.sect .text
584 strhp.s
\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0É
\0.define strhp
602 dsts2.s
\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0'
\ 1.define sts2
611 pop R0, *RR14 !object size
613 pop R3, *RR14 !address of object
621 2: pushl *RR14, saveret
623 oxset.s
\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0h
\ 1.define xset
638 div RR0, $020 !R0: bitnr, R1: wordnr
645 3: pushl *RR14, saveret
650 unknown.s
\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0r
\0.define unknown
660 trp.s
\0n.s
\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0z
\ 3.define trp, fatal
671 pop R1, *RR14 !trap number in R1
675 pop R1, *RR14 !restore R1
687 pop R1, *RR14 !trap number in R1
719 err: .asciz "trap error %d\n"
720 printf.s
\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0J
\ 6.define printf
730 ld R3, $buff !R3 is pointer to a buffer, in which
731 !we built the string to be printed.
732 pop R2, *RR14 !R2 is pointer to format-string
742 cpb RL0, $0163 ! 's'?
744 cpb RL0, $0170 ! 'x'?
745 ld R4, $16 ! print number hexadecimal
747 cpb RL0, $0144 ! 'd'?
748 ld R4, $10 ! print number decimal
750 cpb RL0, $0157 ! 'o'?
751 ld R4, $8 ! print number octal
756 2: !in case of %x, %d or %o
761 jr NE, 4f ! print only '-' in case of %d
762 ldb 0(R3), $055 ! '-'
776 ready: !now really print the string we built in the buffer
777 ldb 0(R3), RL0 !end string with '\0'
778 sub R3, $buff-1 !R3 contains the number of characters
781 push *RR14, R3 !count
782 push *RR14, R1 !buffer
783 push *RR14, $2 !file descriptor
793 div RR0, R4 !%x, %d or %o determined by R4
795 jr EQ, 5f !if quotient is '0' printn is ready
796 push *RR14, R0 !push remainder onto the stack
810 save.s
\0s
\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤
\ 1\0\0\8e\0.define saveret