home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol165 / pagrel.asm < prev    next >
Assembly Source File  |  1984-07-08  |  855b  |  82 lines

  1.  
  2. LF    equ    0AH    ;line feed
  3. CR    equ    0DH    ;carriage return
  4.  
  5. BDOS    equ    0005    ;jump to CP/M
  6.  
  7.     org    0100H
  8.  
  9. X0100:    jmp    X013D
  10. porg:    dw    0BBBBH    ;program origin (even page)
  11. pend:    dw    0EEEEH    ;program end (even number of pages)
  12. hiya:    db    'hello',CR,LF,'$'
  13. X013D:    lxi    sp,stak
  14.     lhld    pend
  15.     xchg
  16.     lhld    porg
  17.     mov    a,e
  18.     sub    l
  19.     mov    l,a
  20.     mov    a,d
  21.     sbb    h
  22.     mov    h,a
  23.     push    h
  24.     push    h
  25.     lxi    d,hiya
  26.     mvi    c,09        ;(09) print buffer
  27.     call    0005
  28.     pop    b
  29.     lxi    h,BDOS+2    ;end of memory
  30.     mov    a,m
  31.     dcr    a
  32.     sub    b
  33.     mov    d,a
  34.     mvi    e,00
  35.     push    d
  36.     lhld    porg
  37. shif:    mov    a,b
  38.     ora    c
  39.     jz    rloc
  40.     dcx    b
  41.     mov    a,m
  42.     stax    d
  43.     inx    d
  44.     inx    h
  45.     jmp    shif
  46.  
  47. rloc:    pop    d
  48.     pop    b
  49.     push    h
  50.     mov    h,d
  51. relo:    mov    a,b
  52.     ora    c
  53.     jz    gogo
  54.     dcx    b
  55.     mov    a,e
  56.     ani    07
  57.     jnz    rotl
  58.     xthl
  59.     mov    a,m
  60.     inx    h
  61.     xthl
  62.     mov    l,a
  63. rotl:    mov    a,l
  64.     ral    
  65.     mov    l,a
  66.     jnc    nmod
  67.     ldax    d
  68.     add    h
  69.     stax    d
  70. nmod:    inx    d
  71.     jmp    relo
  72.  
  73. gogo:    pop    d
  74.     mvi    l,00
  75.     pchl
  76.  
  77.     org    0200H
  78.  
  79. stak:    ds    0
  80.  
  81.     end
  82.