bbvm

package
v1.0.1-0...-764e6f0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 27, 2021 License: Apache-2.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ArgOf

func ArgOf(mem bbasm.Memory, addr int) *arg

func WithStd

func WithStd(ctx context.Context, std *Std) context.Context

Types

type FileHandler

type FileHandler = Handler

type Handler

type Handler interface {
	Handler() int
}

type Instance

type Instance struct {
	Memory []byte
	Order  binary.ByteOrder

	RP bbasm.Register
	RF bbasm.Register
	RS bbasm.Register
	RB bbasm.Register
	R0 bbasm.Register
	R1 bbasm.Register
	R2 bbasm.Register
	R3 bbasm.Register

	Inst *bbasm.Inst
	Std  *Std
	// contains filtered or unexported fields
}

func NewInstance

func NewInstance() *Instance

func (*Instance) Exit

func (rt *Instance) Exit()

func (*Instance) GetFloat

func (rt *Instance) GetFloat(addr int) float32

func (*Instance) GetInt

func (rt *Instance) GetInt(addr int) int

func (*Instance) GetString

func (rt *Instance) GetString(addr int) string

GetString return \0 terminated string in memory

func (*Instance) In

func (rt *Instance) In(ctx context.Context, a int, b int)

func (*Instance) Jump

func (rt *Instance) Jump(addr int)

func (*Instance) Load

func (rt *Instance) Load(rom []byte)

func (*Instance) Out

func (rt *Instance) Out(ctx context.Context, a int, b int)

func (*Instance) Pop

func (rt *Instance) Pop() int

func (*Instance) Push

func (rt *Instance) Push(val int)

func (*Instance) Register

func (rt *Instance) Register(registerType bbasm.RegisterType) bbasm.Register

func (*Instance) Reset

func (rt *Instance) Reset()

func (*Instance) Run

func (rt *Instance) Run(ctx context.Context) error

func (*Instance) SetFloat

func (rt *Instance) SetFloat(addr int, val float32)

func (*Instance) SetInt

func (rt *Instance) SetInt(addr int, val int)

func (*Instance) Step

func (rt *Instance) Step(ctx context.Context) (err error)

type PageHandler

type PageHandler = Handler

type Register

type Register struct {
	V     int
	Label string
}

func (*Register) Float

func (sr *Register) Float() float32

func (*Register) Get

func (sr *Register) Get() int

func (*Register) Set

func (sr *Register) Set(v int)

func (*Register) SetFloat

func (sr *Register) SetFloat(v float32)

type ResourceHandler

type ResourceHandler = Handler

type Std

type Std struct {
	FloatToInt func(ctx context.Context, v float32) int
	IntToFloat func(ctx context.Context, v int) float32

	AllocString        func(ctx context.Context) StringHandler
	StringToInt        func(ctx context.Context, hdr StringHandler) (int, error)
	IntToString        func(ctx context.Context, dst StringHandler, v int)
	StringCopy         func(ctx context.Context, dst StringHandler, src StringHandler)
	StringConcat       func(ctx context.Context, a StringHandler, b StringHandler)
	StringLength       func(ctx context.Context, hdr StringHandler) int
	FreeString         func(ctx context.Context, hdr StringHandler)
	StringCompare      func(ctx context.Context, a StringHandler, b StringHandler) int
	IntToFloatToString func(ctx context.Context, dst StringHandler, v int)
	StringToFloat      func(ctx context.Context, hdr StringHandler) (float32, error)
	StringGetAscii     func(ctx context.Context, hdr StringHandler, idx int) int
	StringSetAscii     func(ctx context.Context, hdr StringHandler, idx, v int)
	// extra
	StringGet func(ctx context.Context, hdr StringHandler) string
	StringSet func(ctx context.Context, hdr StringHandler, v string)
	StringOf  func(ctx context.Context, hdr int) StringHandler

	Tick func(ctx context.Context) int

	Sin      func(ctx context.Context, a float32) float32
	Cos      func(ctx context.Context, a float32) float32
	Tan      func(ctx context.Context, a float32) float32
	Sqrt     func(ctx context.Context, a float32) float32
	IntAbs   func(ctx context.Context, a int) int
	FloatAbs func(ctx context.Context, a float32) float32

	DataPtrSet func(ctx context.Context, v int)

	Read  func(ctx context.Context, addr int) int
	Write func(ctx context.Context, addr int, v int)

	GetEnv func(ctx context.Context) int

	StringLeft       func(ctx context.Context, dst StringHandler, hdr StringHandler, len int)
	StringRight      func(ctx context.Context, dst StringHandler, hdr StringHandler, len int)
	StringMid        func(ctx context.Context, dst StringHandler, hdr StringHandler, idx int, len int)
	StringFirstAscii func(ctx context.Context, hdr StringHandler) int
	StringFind       func(ctx context.Context, hdr StringHandler, sub StringHandler, offset int) int

	PrintLnInt    func(ctx context.Context, v int)
	PrintLnString func(ctx context.Context, v StringHandler)
	PrintString   func(ctx context.Context, v StringHandler)
	PrintInt      func(ctx context.Context, v int)
	PrintChar     func(ctx context.Context, v int)
	PrintFloat    func(ctx context.Context, v float32)

	InputInt    func(ctx context.Context) int
	InputString func(ctx context.Context, dst StringHandler)
	InputFloat  func(ctx context.Context) float32

	DataReadInt    func(ctx context.Context) int
	DataReadString func(ctx context.Context, hdr StringHandler)
	DataReadFloat  func(ctx context.Context) float32

	SetLcd        func(ctx context.Context, w int, h int)
	AllocPage     func(ctx context.Context) PageHandler
	FreePage      func(ctx context.Context, hdr PageHandler)
	LoadImage     func(ctx context.Context, fn StringHandler, idx int) ResourceHandler
	ShowPic       func(ctx context.Context, page PageHandler, res ResourceHandler, dx, dy, w, h, x, y int, mode int)
	FlipPage      func(ctx context.Context, hdr PageHandler)
	PageCopy      func(ctx context.Context, dst PageHandler, src PageHandler)
	PageFill      func(ctx context.Context, hdr PageHandler, x, y, w, h int, color int)
	PagePixel     func(ctx context.Context, hdr PageHandler, x, y, color int)
	PageReadPixel func(ctx context.Context, hdr PageHandler, x, y int) int
	FreeRes       func(ctx context.Context, hdr ResourceHandler)

	Delay    func(ctx context.Context, msec int)  `out:"27,0"`
	RandSeed func(ctx context.Context, seed int)  `out:"32,0"`
	Rand     func(ctx context.Context, n int) int `out:"33,0"`

	IsKeyPressed func(ctx context.Context, k int) int
	Clear        func(ctx context.Context)
	LocateCursor func(ctx context.Context, line, row int)
	SetColor     func(ctx context.Context, font, back, frame int)
	SetFont      func(ctx context.Context, font int)
	WaitKey      func(ctx context.Context) int

	GetImageWidth  func(ctx context.Context, hdr ResourceHandler) int
	GetImageHeight func(ctx context.Context, hdr ResourceHandler) int

	PixelLocateCursor func(ctx context.Context, x, y int)
	PageCopyExt       func(ctx context.Context, dst, src ResourceHandler, x, y int)
	SetBackgroundMode func(ctx context.Context, mod int)

	InputKeyCode func(ctx context.Context, dst StringHandler)

	OpenFile        func(ctx context.Context, fd int, fn StringHandler, mode int)
	CloseFile       func(ctx context.Context, fd int)
	FileReadInt     func(ctx context.Context, fd int, offset int) int
	FileReadFloat   func(ctx context.Context, fd int, offset int) float32
	FileReadString  func(ctx context.Context, fd int, offset int, dst StringHandler)
	FileWriteInt    func(ctx context.Context, fd int, offset int, v int)
	FileWriteFloat  func(ctx context.Context, fd int, offset int, v float32)
	FileWriteString func(ctx context.Context, fd int, offset int, v StringHandler)
	FileEof         func(ctx context.Context, fd int) int
	FileLof         func(ctx context.Context, fd int) int
	FileLoc         func(ctx context.Context, fd int) int
	FileSeek        func(ctx context.Context, fd int, loc int)

	SetPen        func(ctx context.Context, page PageHandler, style, wid, color int)
	SetBrush      func(ctx context.Context, page PageHandler, style int)
	MoveTo        func(ctx context.Context, page PageHandler, x, y int)
	LineTo        func(ctx context.Context, page PageHandler, x, y int)
	DrawRectangle func(ctx context.Context, page PageHandler, left, top, right, bottom int)
	DrawCircle    func(ctx context.Context, page PageHandler, cx, cy, cr int)

	PageCopyExt2 func(ctx context.Context, dst, src PageHandler, x, y, w, h, cx, cy int)
	PageOf       func(ctx context.Context, hdr int) PageHandler
	ResOf        func(ctx context.Context, hdr int) ResourceHandler

	VmTest func(ctx context.Context)

	// extra
	BytesToString func(b []byte) (string, error)
	StringToBytes func(s string) ([]byte, error)
}

func StdBase

func StdBase(rt bbasm.Runtime, std *Std) *Std

func StdFrom

func StdFrom(ctx context.Context) *Std

func StdGBK

func StdGBK(rt bbasm.Runtime, std *Std) *Std

func StdStringFunc

func StdStringFunc(rt bbasm.Runtime, std *Std) *Std

func StdStringRes

func StdStringRes(rt bbasm.Runtime, std *Std) *Std

func StdUTF8

func StdUTF8(rt bbasm.Runtime, std *Std) *Std

func (*Std) Execute

func (std *Std) Execute(ctx context.Context, rt bbasm.Runtime, inst *bbasm.Inst)

func (*Std) Use

func (std *Std) Use(neo *Std)

type StdBuilder

type StdBuilder func(rt bbasm.Runtime, std *Std) *Std

func NewInputFromReader

func NewInputFromReader(in io.Reader) StdBuilder

func NewPrintToWriter

func NewPrintToWriter(out io.Writer) StdBuilder

type StringHandler

type StringHandler = Handler

type StringHdr

type StringHdr struct {
	H    int
	V    string
	Free bool
}

func (*StringHdr) Handler

func (v *StringHdr) Handler() int

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL