#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