From a1aa849d60529c7bf319f8c941bebfcd78557a89 Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Mon, 1 Aug 2016 13:33:52 -0700 Subject: [PATCH] Add game port library and sandbox example (ex.17) --- SANDBOX.PO | Bin 143360 -> 143360 bytes src/libsrc/portio.pla | 53 ++++++++++++++++++++++++++++++++++++++++++ src/makefile | 7 +++++- 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/libsrc/portio.pla diff --git a/SANDBOX.PO b/SANDBOX.PO index 1750d0247c72927fcad49bb204353d6f3cc72e4c..49fedfe8fc5ed7f9deb4b3964256b43705fb183b 100644 GIT binary patch delta 7523 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 delta 6075 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 127 +end + +export def portRead + return (^FLAG0>>7)&1|(^FLAG1>>6)&2|(^FLAG2>>5)&4|(^FLAG3>>4)&8 +end + +def digitalWrite(pin, val) + return ^ANN0[pin&3+val&1] +end + +export def portWrite(val) + ^ANN0[val&1] + ^ANN1[(val>>1)&1] + ^ANN2[(val>>2)&1] + return ^ANN3[(val>>3)&1] +end + +export def analogRead(pin) + return call(PREAD,0,pin&3,0,0).2 +end + +export def delay(time) + return call(WAIT,time,0,0,0) +end + +done diff --git a/src/makefile b/src/makefile index 6d1917b..a2aa05b 100644 --- a/src/makefile +++ b/src/makefile @@ -18,6 +18,7 @@ DHCP = DHCP\#FE1000 HTTPD = HTTPD\#FE1000 DGR = DGR\#FE1000 TONE = TONE\#FE1000 +PORTIO = PORTIO\#FE1000 ROGUE = ROGUE\#FE1000 ROGUEIO = ROGUEIO\#FE1000 ROGUEMAP= ROGUEMAP\#FE1000 @@ -52,7 +53,7 @@ TXTTYPE = .TXT #SYSTYPE = \#FF2000 #TXTTYPE = \#040000 -all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) $(CMD) $(MEMMGR) $(MEMTEST) $(FIBER) $(SB) $(MON) $(ROD) $(SIEVE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(ROGUEIO) $(HGR1) $(TONE) $(DGR) $(DGRTEST) +all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) $(CMD) $(MEMMGR) $(MEMTEST) $(FIBER) $(SB) $(MON) $(ROD) $(SIEVE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(ROGUEIO) $(HGR1) $(TONE) $(DGR) $(DGRTEST) $(PORTIO) clean: -rm *FE1000 *FF2000 $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) @@ -161,6 +162,10 @@ $(TONE): libsrc/tone.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < libsrc/tone.pla > libsrc/tone.a acme --setpc 4094 -o $(TONE) libsrc/tone.a +$(PORTIO): libsrc/portio.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AM < libsrc/portio.pla > libsrc/portio.a + acme --setpc 4094 -o $(PORTIO) libsrc/portio.a + $(DGR): libsrc/dgr.pla $(PLVM02) $(PLASM) ./$(PLASM) -AM < libsrc/dgr.pla > libsrc/dgr.a acme --setpc 4094 -o $(DGR) libsrc/dgr.a