flex_nav/plugins/calc/calc.a80

349 lines
7.7 KiB
Plaintext

; LAST UPDATE: 20.03.2025 savelij
include macros.a80
include fn_const.a80
include fn_macros.a80
include ports_sp.a80
include define_sp.a80
include macros_sp.a80
include dss_sp.a80
org PluginOrg ; #C000 - Header lenght
; Flex Navigator plugin header
PluginStart: db "FLX-PLUG" ; Id
dw 0x0000 ; LoadOffset
dw PluginEntry ; EntryOffset
db 0x00 ; PluginMode
db 0x00,0x00,0x00 ; Reserved
PluginEntry:
MAKEWINDOW WINSUBOBJ.STORE
W_MAIN 242,80,155,97
W_FILL 4,2,147,10,COLORI.BLACK
W_TEXT 6,3,COLORI.WHITE,"Calculator"
W_HORIZLINE 1,13,154
W_BORDER 8,19,139,11
W_BUTTON 8,34,26,13
W_BUTTON 36,34,26,13
W_BUTTON 64,34,26,13
W_BUTTON 92,34,26,13
W_BUTTON 120,34,26,13
W_BUTTON 8,49,26,13
W_BUTTON 36,49,26,13
W_BUTTON 64,49,26,13
W_BUTTON 92,49,26,13
W_BUTTON 120,49,26,13
W_BUTTON 8,64,26,13
W_BUTTON 36,64,26,13
W_BUTTON 64,64,26,13
W_BUTTON 92,64,26,13
W_BUTTON 120,64,26,28
W_BUTTON 8,79,26,13
W_BUTTON 36,79,26,13
W_BUTTON 64,79,26,13
W_BUTTON 92,79,26,13
W_END
ld ix, 16h
ld hl, asc_C36E ; "7"
ld de, 107h
ld bc, 75h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C370 ; "8"
ld de, 123h
ld bc, 75h
ld a, 80h
call JUMPS.PrnRangPathC
sub_C103: ld hl, asc_C372 ; "9"
ld de, 140h
ld bc, 75h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C37F ; "/"
ld de, 15Bh
ld bc, 75h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C374 ; "C"
ld de, 177h
ld bc, 75h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C368 ; "4"
ld de, 107h
ld bc, 84h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C36A ; "5"
ld de, 123h
ld bc, 84h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C36C ; "6"
ld de, 140h
ld bc, 84h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C37D ; "*"
ld de, 15Bh
ld bc, 84h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C376 ; "CE"
ld de, 178h
ld bc, 84h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C362 ; "1"
ld de, 107h
ld bc, 93h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C364 ; "2"
ld de, 123h
ld bc, 93h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C366 ; "3"
ld de, 140h
ld bc, 93h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C37B ; "-"
ld de, 15Bh
ld bc, 93h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C387 ; "="
ld de, 178h
ld bc, 9Ah
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C360 ; "0"
ld de, 107h
ld bc, 0A2h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C381 ; "+/-"
ld de, 123h
ld bc, 0A2h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C385 ; "."
ld de, 13Fh
ld bc, 0A2h
ld a, 80h
call JUMPS.PrnRangPathC
ld hl, asc_C379 ; "+"
ld de, 15Bh
ld bc, 0A2h
ld a, 80h
call JUMPS.PrnRangPathC
call JUMPS.ResFire
loc_C1F4: call sub_C324
loc_C1F7: ld ix, PluginMouseTab
call JUMPS.TestCoords
SPDSS DSSF.SCANKEY
jp z, loc_C1F7
ld a, b
or a
jp nz, loc_C1F7
ld a, e
cp '0'
jp z, loc_C2CD
cp '1'
jp z, loc_C2CD
cp '2'
jp z, loc_C2CD
cp '3'
jp z, loc_C2CD
cp '4'
jp z, loc_C2CD
cp '5'
jp z, loc_C2CD
cp '6'
jp z, loc_C2CD
cp '7'
jp z, loc_C2CD
cp '8'
jp z, loc_C2CD
cp '9'
jp z, loc_C2CD
cp '.'
jp z, loc_C2CD
cp 'S'
jp z, loc_C283
cp 's'
jp z, loc_C283
cp 'R'
jp z, loc_C266
cp 'r'
jp z, loc_C266
cp 8
jp z, loc_C304
cp 1Bh
jp nz, loc_C1F4
WINDOWCLOSE
or a
ret
loc_C266: ld a, 20h ; ' '
ld (byte_C33F), a
ld a, 30h ; '0'
ld (byte_C340), a
xor a
ld (byte_C33E), a
ld (byte_C33D), a
ld b, 0Ah
ld hl, byte_C341
loc_C27C: ld (hl), a
inc hl
djnz loc_C27C
jp loc_C1F4
loc_C283: ld hl, byte_C340
ld a, (hl)
cp 30h ; '0'
jp z, loc_C1F7
ld hl, byte_C33F
ld a, (hl)
xor 0Dh
ld (hl), a
jp loc_C1F4
loc_C296: ld a, '0'
jp loc_C2CD
loc_C29B: ld a, '1'
jp loc_C2CD
loc_C2A0: ld a, '2'
jp loc_C2CD
loc_C2A5: ld a, '3'
jp loc_C2CD
loc_C2AA: ld a, '4'
jp loc_C2CD
loc_C2AF: ld a, '5'
jp loc_C2CD
loc_C2B4: ld a, '6'
jp loc_C2CD
loc_C2B9: ld a, '7'
jp loc_C2CD
loc_C2BE: ld a, '8'
jp loc_C2CD
loc_C2C3: ld a, '9'
jp loc_C2CD
loc_C2C8: ld a, '.'
jp loc_C2CD
loc_C2CD: ld c, a
ld a, (byte_C33E)
cp 0Bh
jp z, loc_C1F4
ld e, a
ld d, 0
ld hl, byte_C340
ld a, (hl)
cp '0'
jr nz, loc_C2E7
ld a, c
cp '0'
jp z, loc_C1F4
loc_C2E7: ld a, c
cp '.'
jr nz, loc_C2F8
ld a, (byte_C33D)
or a
jp nz, loc_C1F4
ld a, 0FFh
ld (byte_C33D), a
loc_C2F8: add hl, de
ld (hl), c
ld a, (byte_C33E)
inc a
ld (byte_C33E), a
jp loc_C1F4
loc_C304: ld a, (byte_C33E)
cp 1
jp z, loc_C266
dec a
ld (byte_C33E), a
ld e, a
ld d, 0
ld hl, byte_C340
add hl, de
ld a, (hl)
cp '.'
jr nz, loc_C320
ld a, d
ld (byte_C33D), a
loc_C320: ld (hl), d
jp loc_C1F4
sub_C324: ld hl, asc_C34D
call sub_C32D
ld hl, byte_C33F
sub_C32D: ld ix, 48h
ld de, 183h
ld bc, 65h
ld a, 80h
call JUMPS.PrnRangPathR
ret
byte_C33D: db 0
byte_C33E: db 0
byte_C33F: db 20h
byte_C340: db 30h
byte_C341: db 0Ch DUP 0
asc_C34D: DB " ",0
asc_C360: DB "0",0
asc_C362: DB "1",0
asc_C364: DB "2",0
asc_C366: DB "3",0
asc_C368: DB "4",0
asc_C36A: DB "5",0
asc_C36C: DB "6",0
asc_C36E: DB "7",0
asc_C370: DB "8",0
asc_C372: DB "9",0
asc_C374: DB "C",0
asc_C376: DB "CE",0
asc_C379: DB "+",0
asc_C37B: DB "-",0
asc_C37D: DB "*",0
asc_C37F: DB "/",0
asc_C381: DB "+/-",0
asc_C385: DB ".",0
asc_C387: DB "=",0
PluginMouseTab: dw 0x00FA,0x0114,0x0072,0x007F,0x0021,0x0000,loc_C2B9,0x0000
dw 0x0116,0x0130,0x0072,0x007F,0x0021,0x0000,loc_C2BE,0x0000
dw 0x0132,0x014C,0x0072,0x007F,0x0021,0x0000,loc_C2C3,0x0000
dw 0x014E,0x0168,0x0072,0x007F,0x0021,0x0000,loc_C266,0x0000
dw 0x016A,0x0184,0x0072,0x007F,0x0021,0x0000,loc_C266,0x0000
dw 0x00FA,0x0114,0x0081,0x008E,0x0021,0x0000,loc_C2AA,0x0000
dw 0x0116,0x0130,0x0081,0x008E,0x0021,0x0000,loc_C2AF,0x0000
dw 0x0132,0x014C,0x0081,0x008E,0x0021,0x0000,loc_C2B4,0x0000
dw 0x014E,0x0168,0x0081,0x008E,0x0021,0x0000,loc_C266,0x0000
dw 0x016A,0x0184,0x0081,0x008E,0x0021,0x0000,loc_C304,0x0000
dw 0x00FA,0x0114,0x0090,0x009D,0x0021,0x0000,loc_C29B,0x0000
dw 0x0116,0x0130,0x0090,0x009D,0x0021,0x0000,loc_C2A0,0x0000
dw 0x0132,0x014C,0x0090,0x009D,0x0021,0x0000,loc_C2A5,0x0000
dw 0x014E,0x0168,0x0090,0x009D,0x0021,0x0000,loc_C266,0x0000
dw 0x016A,0x0184,0x0090,0x00AC,0x0021,0x0000,loc_C266,0x0000
dw 0x00FA,0x0114,0x009F,0x00AC,0x0021,0x0000,loc_C296,0x0000
dw 0x0116,0x0130,0x009F,0x00AC,0x0021,0x0000,loc_C283,0x0000
dw 0x0132,0x014C,0x009F,0x00AC,0x0021,0x0000,loc_C2C8,0x0000
dw 0x014E,0x0168,0x009F,0x00AC,0x0021,0x0000,loc_C266,0x0000
dw 8000h