\ Copyright 2023 Bradley D. Nelson \ \ Licensed under the Apache License, Version 2.0 (the "License"); \ you may not use this file except in compliance with the License. \ You may obtain a copy of the License at \ \ http://www.apache.org/licenses/LICENSE-2.0 \ \ Unless required by applicable law or agreed to in writing, software \ distributed under the License is distributed on an "AS IS" BASIS, \ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \ See the License for the specific language governing permissions and \ limitations under the License. needs ../oofda.fs class Stack variable start variable sp : .construct ( n -- ) here start ! here sp ! cells allot ; : .empty? ( -- f ) sp @ start @ = ; : .push ( n -- ) sp @ ! cell sp +! ; : .pop ( -- n ) this .empty? throw cell negate sp +! sp @ @ ; end-class