349 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			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
 |