本文整理汇总了Golang中github.com/jteeuwen/dcpu/cpu.Storage.X方法的典型用法代码示例。如果您正苦于以下问题:Golang Storage.X方法的具体用法?Golang Storage.X怎么用?Golang Storage.X使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/jteeuwen/dcpu/cpu.Storage
的用法示例。
在下文中一共展示了Storage.X方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Handler
func (h *HMD2043) Handler(s *cpu.Storage) {
switch s.A {
case QueryMediaPresent:
if h.media == nil {
s.A = ErrorNoMedia
s.B = 0
return
}
s.A, s.B = ErrorNone, 0
if isSupported(h.media) {
s.B = 1
}
case QueryMediaParams:
if h.media == nil {
s.A, s.B, s.C, s.X = ErrorNoMedia, 0, 0, 0
return
}
s.A = ErrorNone
s.B = h.media.SectorSize()
s.C = h.media.SectorCount()
s.X = 0
if h.media.WriteLocked() {
s.X = 1
}
case QueryDeviceFlags:
s.A, s.B = ErrorNone, h.flags
case UpdateDeviceFlags:
s.A, h.flags = ErrorNone, s.B
case QueryInterruptType:
s.A, s.B = ErrorNone, h.lastint
case SetInterruptId:
s.A, h.id = ErrorNone, s.B
case ReadSectors:
if h.media == nil {
s.A, s.B, s.C, s.X = ErrorNoMedia, 0, 0, 0
return
}
if h.busy {
return
}
h.busy = true
s.A = ErrorNone
if h.flags&NonBlocking == 0 {
err := h.media.Read(s.B, s.Mem[s.X:s.X+s.C])
if err != nil {
s.A = ErrorInvalidSector
}
h.busy = false
return
}
s.A = ErrorNone
go func() {
h.media.Read(s.B, s.Mem[s.X:s.X+s.C])
h.busy = false
h.lastint = TypeReadComplete
h.int(h.id)
}()
case WriteSectors:
if h.media == nil {
s.A, s.B, s.C, s.X = ErrorNoMedia, 0, 0, 0
return
}
if h.busy {
return
}
h.busy = true
if h.flags&NonBlocking == 0 {
err := h.media.Write(s.B, s.Mem[s.X:s.X+s.C])
if err != nil {
s.A = ErrorInvalidSector
}
h.busy = false
return
}
s.A = ErrorNone
go func() {
h.media.Write(s.B, s.Mem[s.X:s.X+s.C])
h.busy = false
h.lastint = TypeWriteComplete
//.........这里部分代码省略.........