nolist

;Uncomment one of the lines below to select your compilation target

;BuildCPC equ 1	; Build for Amstrad CPC
;BuildMSX equ 1 ; Build for MSX
;BuildTI8 equ 1 ; Build for TI-83+
;BuildZXS equ 1  ; Build for ZX Spectrum
;BuildENT equ 1 ; Build for Enterprise
BuildSAM equ 1 ; Build for SamCoupe

read "..\SrcALL\V1_Header.asm"
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			Start Your Program Here
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	
	Call DOINIT	; Get ready

	call CLS

jr skiptest

	ld a,&99
	call ShowHex
	ld hl,&0000		;Screen position - 0,0 is top left, H=X,L=Y
	call locate	;Set cursor position
	call GetCursorPos
	push hl
	call Monitor_PushedRegister
	call GetCursorPos
	push hl
	call Monitor_PushedRegister
	call GetCursorPos
	push hl
	call Monitor_PushedRegister

	call NewLine	;Newline command
	call GetCursorPos
	push hl
	call Monitor_PushedRegister
	call GetCursorPos
	push hl
	call Monitor_PushedRegister
	call GetCursorPos
	push hl
	call Monitor_PushedRegister
di
halt
skiptest:
	ld hl,Message2	;Press A key
	call PrintString

;	call NewLine	;Newline command


	ld hl,TestString
	ld b,20
	call WaitString
	inc hl
	ld (hl),255

	ld hl,TestString
	call ToUpper

	ld d," "
	ld e,255
	ld hl,TestString
	call ReplaceChar

	ld hl,TestString
	ld de,CmpString5
	call CompareString

	call NewLine	;Newline command

	ld hl,WordList
	ld de,TestString
	call ScanList
	push bc
	call Monitor_PushedRegister

	ld bc,255
	ld a,c
	ld hl,TestString
	cpir

	ex hl,de

	ld hl,WordList
	call ScanList
	push bc
	call Monitor_PushedRegister

	call NewLine	;Newline command
	



jp skiptest

	CALL SHUTDOWN ; return to basic or whatever
ret



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


ScanList:		;HL=ListAddress... returns B=match
	ld (ScanListString_Plus2-2),de
	ld b,0
ListAgain:
	ld e,(hl)
	inc hl
	ld d,(hl)
	inc hl
	ld a,e 
	and d
	inc a	;if both were 255 return
	jr z,ListDoneNotFound
	push hl
		ld hl,TestString	:ScanListString_Plus2
		call CompareString
	pop hl
	jr nc,ListDoneFound
	inc b
	jp ListAgain
ListDoneNotFound:
	ld b,255
ListDoneFound:
ret


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ReplaceChar:			;Replace D with E in string starting at (HL)
	ld a,(hl)
	cp 255
	ret z

	cp d
	jr nz,ReplaceChar_OK
	ld (hl),e
ReplaceChar_OK:
	inc hl
	jr ReplaceChar

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

ToUpper:
	ld a,(hl)
	cp 255
	ret z
	cp 'a'
	jr c,ToUpper_OK
	cp 'z'+1
	jr nc,ToUpper_OK
	sub 32
	ld (hl),a
ToUpper_OK:
	inc hl
	jr ToUpper

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CompareString:
	ld a,(de)
	cp (hl)
	jr nz,CompareString_Fail	;Do both chars match? - no then fail

	or (hl)				;has either reached the end
	cp 255
	jr z,CompareString_END

	inc hl
	inc de
jp CompareString
CompareString_END:

	and (hl)			;have both reached the end?
	inc a;cp 255
	ret z			;Return No-Carry if matched
CompareString_Fail:
	scf			;Return Carry if failed
ret


TestString: defs 255
ReadCommands: dw 0
WordList:
defw CmpString0
defw CmpString1
defw CmpString2
defw CmpString3
defw CmpString4
defw CmpString5
defw CmpString6
defw CmpString7
defw CmpString8
defw &FFFF

cmdNorth equ 0
cmdSouth equ 1
cmdLook equ 2
cmdTake equ 3
cmdLick equ 4
cmdSell equ 5
cmdPie equ 6
cmdSpoon equ 7 
cmdC64 equ 8

CmpString0: db "NORTH",255

CmpString1: db "SOUTH",255

CmpString2: db "LOOK",255

CmpString3: db "TAKE",255
CmpString4: db "LICK",255
CmpString5: db "SELLONEBAY",255
CmpString6: db "PIE",255
CmpString7: db "SPOON",255
CmpString8: db "C64",255

MatchFound: db 'Match:',255
Message: db 'Hello World 333!',255
Message2: db 'Chibi:>',255
Message3: db 'You Pressed:',255
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;read "..\SrcAll\Multiplatform_Monitor.asm"
read "..\SrcAll\Multiplatform_MonitorSimple.asm"
read "..\SrcAll\Multiplatform_ShowHex.asm"


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;			End of Your program
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

read "..\SrcALL\V1_Functions.asm"
read "..\SrcALL\V1_Footer.asm"
