Subversion Repositories pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.         page    0
  2.         cpu     KENBAK
  3.         include kenbak.inc
  4.  
  5.         ORG     004             ;First non-special address
  6.  
  7.         ; First, a small sample program...
  8.  
  9. Loop:
  10.         ADD     Constant, RegisterA, 1
  11.         STORE   Memory, RegisterA, Lamps
  12.         JPD     Unconditional, Zero,  Loop
  13.  
  14.         HALT
  15.         NOOP
  16.  
  17.         ; ...then, things in a systematic way:
  18.         ; addressing mode given as extra keyword:
  19.  
  20.         add     constant,a,12h 
  21.         add     a,#12h
  22.         sub     memory,b,12h
  23.         sub     b,12h
  24.         load    indexed,x,12h
  25.         load    x,12h,x
  26.         store   indirect,a,12h
  27.         store   a,(12h)
  28.         or      Indirect-Indexed,a,12h
  29.         or      a,(12h),x
  30.  
  31.         ; bit value to set as extra argument:
  32.  
  33. mybit   bit     6,34h
  34.         set1    6,34h
  35.         set1    mybit
  36.         set     1,6,34h
  37.         set     1,mybit
  38.         set0    6,34h
  39.         set0    mybit
  40.         set     0,6,34h
  41.         set     0,mybit
  42.  
  43.         skp1    6,34h
  44.         skp     1,6,34h
  45.         skp1    mybit
  46.         skp     1,mybit
  47.         skp1    6,34h,$+4
  48.         skp     1,6,34h,$+4
  49.         skp1    mybit,$+4
  50.         skp     1,mybit,$+4
  51.         skp0    6,34h
  52.         skip    0,6,34h
  53.         skp0    mybit
  54.         skip    0,mybit
  55.         skp0    6,34h,$+4
  56.         skip    0,6,34h,$+4
  57.         skp0    mybit,$+4
  58.         skip    0,mybit,$+4
  59.  
  60.         ; shift/rotate direction given as extra argument
  61.  
  62.         shift   left,a
  63.         sftl    a
  64.         shift   left,2,b
  65.         sftl    2,b
  66.         shift   right,a
  67.         sftr    a
  68.         shift   right,2,b
  69.         sftr    2,b
  70.  
  71.         rotate  left,a
  72.         rotl    a
  73.         rotate  left,2,b
  74.         rotl    2,b
  75.         rotate  right,a
  76.         rotr    a
  77.         rotate  right,2,b
  78.         rotr    2,b
  79.  
  80.         ; CLEAR x is alias for SUB x,x
  81.  
  82.         irp     reg,a,b,x,RegisterA
  83.         clear   reg
  84.         sub     reg,reg
  85.         endm
  86.  
  87.         ; move to P -> jump to (reg)+2
  88.  
  89.         store   a,p
  90.         store   b,p
  91.         store   x,p
  92.  
  93. ; [ADD/SUB/LOAD/STORE] [Addressing Mode], [Register], [Address]
  94. ; [OR/AND/LNEG] [Addressing Mode], [Register]
  95. ; [JPD/JPI/JMD/JMI] [Register], [Condition], [Address]
  96. ; SET [0/1], [Position], [Address]
  97. ; SKIP  [0/1], [Position], [Address]
  98. ; SHIFT [Direction], [Places], [Register]
  99. ; ROTATE [Direction], [Places], [Register]
  100. ; NOOP (no parameters)
  101. ; HALT (no parameters)
  102.