Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
31
Task/Queue-Usage/BBC-BASIC/queue-usage.basic
Normal file
31
Task/Queue-Usage/BBC-BASIC/queue-usage.basic
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
FIFOSIZE = 1000
|
||||
|
||||
FOR n = 3 TO 5
|
||||
PRINT "Push ";n : PROCenqueue(n)
|
||||
NEXT
|
||||
PRINT "Pop " ; FNdequeue
|
||||
PRINT "Push 6" : PROCenqueue(6)
|
||||
REPEAT
|
||||
PRINT "Pop " ; FNdequeue
|
||||
UNTIL FNisempty
|
||||
PRINT "Pop " ; FNdequeue
|
||||
END
|
||||
|
||||
DEF PROCenqueue(n) : LOCAL f%
|
||||
DEF FNdequeue : LOCAL f% : f% = 1
|
||||
DEF FNisempty : LOCAL f% : f% = 2
|
||||
PRIVATE fifo(), rptr%, wptr%
|
||||
DIM fifo(FIFOSIZE-1)
|
||||
CASE f% OF
|
||||
WHEN 0:
|
||||
wptr% = (wptr% + 1) MOD FIFOSIZE
|
||||
IF rptr% = wptr% ERROR 100, "Error: queue overflowed"
|
||||
fifo(wptr%) = n
|
||||
WHEN 1:
|
||||
IF rptr% = wptr% ERROR 101, "Error: queue empty"
|
||||
rptr% = (rptr% + 1) MOD FIFOSIZE
|
||||
= fifo(rptr%)
|
||||
WHEN 2:
|
||||
= (rptr% = wptr%)
|
||||
ENDCASE
|
||||
ENDPROC
|
||||
Loading…
Add table
Add a link
Reference in a new issue