home *** CD-ROM | disk | FTP | other *** search
- #include "asm86.h"
- #include "ti86asm.inc"
-
- _alt_interrupt_exec equ 0D2FEh
-
- .org _asm_exec_ram
-
- ld a,$76
- out (0),a
- call _runindicoff
- call $49DC
- call _clrscrn
- ld hl,$3954
- ld (_penCol),hl
- ld hl,category_strs
- call _vputs
- ld a,$6C
- ld (_penCol),a
- call _vputs
- ld hl,$0000
- ld (_curRow),hl
- ld hl,title_strs
- set 3,(iy+5)
- call _puts
- call _newline
- call _puts
- res 3,(iy+5)
- ld hl,$0103
- ld (_curRow),hl
- ld hl,other_strs
- call _puts
- ld de,$0106
- ld (_curRow),de
- call _puts
-
- call $46BB ;get free mem -> AHL
- call $404C ;AHL /= 10
- push hl ;save that
- ld a,87
- call $4048 ;AHL /= 87
- srl h ;AHL /= 2
- rr l
- ld c,l ;B = L
- ld hl,$FF8E
- call show_progress_bar
- ld hl,$0207
- ld (_curRow),hl
- pop hl
- ld a,98
- call $4048
- xor a
- call D_HL_DECI
- ld a,'%'
- call _putc
-
- ; ld hl,($4065) ; ROM patch, sort of.
- ; ld (intgetkey+1),hl ; call $4064 doesn't work in an interrupt handler (?)
-
- ld hl,$F300
- ld (hl),$F4
- ld de,$F301
- ld bc,256
- ldir
-
- ld hl,IntCounter ; Make HL point to the interrupt handler
- ld de,$F4F4 ; And DE where to store the handler
- ld bc,IntEnd-IntCounter
- ldir
- ld a,$F3
- ld i,a
-
- im 2
-
- the_loop:
- call get_power_level
- push hl
- ld a,57
- call $4048
- ld c,l
- ld hl,$FF8B
- call show_progress_bar
- ld hl,$0204
- ld (_curRow),hl
- pop hl
- ld a,33
- call $4048
- xor a
- call D_HL_DECI
- ld a,'%'
- call _putc
-
- halt
- ld hl,$FC00
- ld de,$F600
- ld bc,$0400
- ldir
-
- wait_for_key:
- ld a,%10111111
- out (1),a
- nop \ nop
- nop \ nop
- in a,(1)
- bit 6,a
- jr nz,the_loop
- im 1
-
- ld a,$7C
- out (0),a
- call _clrscrn
- call _homeup
- res 5,(iy)
- ret
-
- get_power_level:
- halt
- xor a
- ld (interrupt_indicator),a
- ld bc,$0000
- get_level:
- inc bc
- ld a,(interrupt_indicator)
- cp 19
- jr c,get_level
-
- ld hl,-11400
- add hl,bc
- ret c
- ld hl,0
- ret
-
- show_progress_bar:
- ld de,-16
- ld b,57
- ld a,%11111111
- show_progress_loop:
- rrca
- ld (hl),a
- add hl,de
- dec c
- jr nz,show_progress_okay
- ld a,%10101010
- show_progress_okay:
- djnz show_progress_loop
- ret
-
- IntCounter: ; Interrupt handler which increases a timer
- ex af,af'
- exx
- ld hl,interrupt_indicator
- inc (hl)
- in a,(3)
- rra
- ld a,9
- adc a,0
- out (3),a
- ld a,$0B
- out (3),a
- exx
- ex af,af'
- ei
- reti
- IntEnd:
-
- category_strs:
- .db "BATT",0
- .db "MEM",0
-
- other_strs:
- .db "Power Level",0
- .db "Memory Left",0
-
- title_strs:
- .db "SystemMonitor",0
- .db "by Kirk Meyer",0
-
- interrupt_indicator:
-
- .end
-