home *** CD-ROM | disk | FTP | other *** search
/ ticalc.org / ticalc_org_rev_b.iso / archives / 86 / asm / source / sysmon.asm < prev    next >
Encoding:
Assembly Source File  |  2001-07-01  |  2.6 KB  |  180 lines

  1. #include "asm86.h"
  2. #include "ti86asm.inc"
  3.  
  4. _alt_interrupt_exec       equ         0D2FEh
  5.  
  6. .org _asm_exec_ram
  7.  
  8.  ld a,$76
  9.  out (0),a
  10.  call _runindicoff
  11.  call $49DC
  12.  call _clrscrn
  13.  ld hl,$3954
  14.  ld (_penCol),hl
  15.  ld hl,category_strs
  16.  call _vputs
  17.  ld a,$6C
  18.  ld (_penCol),a
  19.  call _vputs
  20.  ld hl,$0000
  21.  ld (_curRow),hl
  22.  ld hl,title_strs
  23.  set 3,(iy+5)
  24.  call _puts
  25.  call _newline
  26.  call _puts
  27.  res 3,(iy+5)
  28.  ld hl,$0103
  29.  ld (_curRow),hl
  30.  ld hl,other_strs
  31.  call _puts
  32.  ld de,$0106
  33.  ld (_curRow),de
  34.  call _puts
  35.  
  36.  call $46BB             ;get free mem -> AHL
  37.  call $404C             ;AHL /= 10
  38.  push hl                ;save that
  39.  ld a,87
  40.  call $4048             ;AHL /= 87
  41.  srl h                  ;AHL /= 2
  42.  rr l
  43.  ld c,l                 ;B = L
  44.  ld hl,$FF8E
  45.  call show_progress_bar
  46.  ld hl,$0207
  47.  ld (_curRow),hl
  48.  pop hl
  49.  ld a,98
  50.  call $4048
  51.  xor a
  52.  call D_HL_DECI
  53.  ld a,'%'
  54.  call _putc
  55.  
  56. ; ld hl,($4065)         ; ROM patch, sort of.
  57. ; ld (intgetkey+1),hl   ; call $4064 doesn't work in an interrupt handler (?)
  58.  
  59.  ld hl,$F300
  60.  ld (hl),$F4
  61.  ld de,$F301
  62.  ld bc,256
  63.  ldir
  64.  
  65.  ld hl,IntCounter      ; Make HL point to the interrupt handler
  66.  ld de,$F4F4           ; And DE where to store the handler
  67.  ld bc,IntEnd-IntCounter
  68.  ldir
  69.  ld a,$F3
  70.  ld i,a
  71.  
  72.  im 2
  73.  
  74. the_loop:
  75.  call get_power_level
  76.  push hl
  77.  ld a,57
  78.  call $4048
  79.  ld c,l
  80.  ld hl,$FF8B
  81.  call show_progress_bar
  82.  ld hl,$0204
  83.  ld (_curRow),hl
  84.  pop hl
  85.  ld a,33
  86.  call $4048
  87.  xor a
  88.  call D_HL_DECI
  89.  ld a,'%'
  90.  call _putc
  91.  
  92.  halt
  93.  ld hl,$FC00
  94.  ld de,$F600
  95.  ld bc,$0400
  96.  ldir
  97.  
  98. wait_for_key:
  99.  ld a,%10111111
  100.  out (1),a
  101.  nop \ nop
  102.  nop \ nop
  103.  in a,(1)
  104.  bit 6,a
  105.  jr nz,the_loop
  106.  im 1
  107.  
  108.  ld a,$7C
  109.  out (0),a
  110.  call _clrscrn
  111.  call _homeup
  112.  res 5,(iy)
  113.  ret
  114.  
  115. get_power_level:
  116.  halt
  117.  xor a
  118.  ld (interrupt_indicator),a
  119.  ld bc,$0000
  120. get_level:
  121.  inc bc
  122.  ld a,(interrupt_indicator)
  123.  cp 19
  124.  jr c,get_level
  125.  
  126.  ld hl,-11400
  127.  add hl,bc
  128.  ret c
  129.  ld hl,0
  130.  ret
  131.  
  132. show_progress_bar:
  133.  ld de,-16
  134.  ld b,57
  135.  ld a,%11111111
  136. show_progress_loop:
  137.  rrca
  138.  ld (hl),a
  139.  add hl,de
  140.  dec c
  141.  jr nz,show_progress_okay
  142.  ld a,%10101010
  143. show_progress_okay:
  144.  djnz show_progress_loop
  145.  ret
  146.  
  147. IntCounter:           ; Interrupt handler which increases a timer
  148.  ex af,af'
  149.  exx
  150.  ld hl,interrupt_indicator
  151.  inc (hl)
  152.  in a,(3)
  153.  rra
  154.  ld a,9
  155.  adc a,0
  156.  out (3),a
  157.  ld a,$0B
  158.  out (3),a
  159.  exx
  160.  ex af,af'
  161.  ei
  162.  reti
  163. IntEnd:
  164.  
  165. category_strs:
  166. .db "BATT",0
  167. .db "MEM",0
  168.  
  169. other_strs:
  170. .db "Power Level",0
  171. .db "Memory Left",0
  172.  
  173. title_strs:
  174. .db "SystemMonitor",0
  175. .db "by Kirk Meyer",0
  176.  
  177. interrupt_indicator:
  178.  
  179. .end
  180.